2009-07-09 38 views
15

Trong tương lai gần, tôi sẽ kế thừa một dự án hơi lớn. Tôi đã thực hiện một số cập nhật nhỏ cho nó gần đây, và nhận thấy rằng một phần của nó có thể sử dụng một số refactoring, vì có những phương pháp thực hiện các hoạt động tương tự với một sự khác biệt nhỏ.Có tồn tại: Công cụ tìm mã lặp lại không?

Tôi đã tự hỏi nếu có một công cụ sẽ lấy một bó mã nguồn và tìm các khối mã tương tự để chúng có thể được xác định để có thể tái cấu trúc. Nó sẽ là tuyệt vời nếu có tìm kiếm mờ hiện tại, để nó có thể xác định hoạt động tương tự (khác hơn là chỉ là mã số của mã nguyên vẹn lặp đi lặp lại).

Tôi không mong đợi chương trình tự tái cấu trúc mã, chỉ cần xác định sự lặp lại tiềm năng.

nền tảng của tôi là C#, nhưng giải pháp nào sẽ là hữu ích

+0

bản sao có thể có của [Cách tìm một đoạn mã tương tự?] (Http://stackoverflow.com/questions/709744/how-to-find-a-similar-code-fragment) –

Trả lời

8

http://www.codeplex.com/CloneDetectiveVS

"Clone Thám là một tích hợp Visual Studio cho phép bạn phân tích C# các dự án mã nguồn mà được nhân đôi ở một nơi khác."

Có rất nhiều điều xảy ra, trực quan, khi bạn ném nó vào một dự án có nhiều bản sao mã. Nếu điều đó kết hợp với việc sử dụng Clone Detective của bạn lần đầu tiên, nó có thể là một chút áp đảo lúc đầu tiên.

Tôi thực sự khuyên bạn nên sử dụng công cụ này. Thật xuất sắc.

+0

Mã tôi đang kế thừa hiện tại .Net 1.1 (rõ ràng yêu cầu VS .NET) nên điều này sẽ không giúp tôi trong dự án này cho đến khi chúng tôi cập nhật nó cho ít nhất 2.0. Nhưng điều này sẽ giúp với mọi dự án khác mà tôi đang thực hiện! Sẽ xem xét, +1 –

+0

Được chọn làm câu trả lời vì: Nó tích hợp vào IDE hiện tại của tôi cho hầu hết các dự án; Giao diện tuyệt vời; và nguồn mở của nó. Simian trông đẹp, nhưng tôi dự định sử dụng điều này trong môi trường thương mại và chi phí là vô hại (đối với tôi) –

+1

Mặc dù có thể không phải là vấn đề vào tháng 9 năm 2010 Bản sao Thám tử dường như không hỗ trợ Visual Studio 2010 – Jafin

5

CPD công trình ở cấp thẻ, vì vậy nên sử dụng tốt với C#. Nó có một số cơ chế để bao thanh toán các tên biến và các mã định danh khác nữa.

5

Tôi chưa bao giờ sử dụng nó, nhưng Simian có thể làm việc cho bạn

Simian (Similarity Analyzer) xác định sự trùng lặp trong Java, C#, C, C++, COBOL, Ruby, JSP, ASP, HTML , XML, Visual Basic, mã nguồn Groovy và ngay cả các tệp văn bản thuần túy. Trong thực tế, simian có thể được sử dụng trên bất kỳ tệp nào có thể đọc được của con người chẳng hạn như tệp ini, triển khai mô tả, bạn đặt tên cho nó.

+0

Chỉ cần lưu ý, Tôi đã sử dụng Simian, và tôi sẽ không bận tâm làm như vậy nữa. Tôi chắc chắn sẽ không giới thiệu nó cho bất cứ ai. Tôi cũng đã sử dụng Clone Detective, và nó là một ứng dụng tuyệt vời. – MagicAndi

2

Simian là sản phẩm tuyên bố phân tích mã nguồn bằng nhiều ngôn ngữ, bao gồm C#. Tôi đã không bao giờ sử dụng nó, vì vậy tôi không thể xác minh cho nó cả. Nó miễn phí cho việc sử dụng phi thương mại và họ sẽ bán nó cho bạn cho các dự án thương mại.

4

Tôi hiện đang sử dụng Duplicate Finder. Nó hoạt động trên bất kỳ tập tin văn bản nào, và tôi đã sử dụng nó trên các dự án C# của tôi, rất thành công. Đó là dòng lệnh, vì vậy tôi đã tích hợp nó vào các quy trình xây dựng của mình.

1

Nếu bạn đang nghĩ đến việc tìm mã trùng lặp trong một dự án, thì có lẽ bạn cũng nên xem xét điều tra việc sử dụng các công cụ rộng hơn static code analysis.

Ví dụ như Sonar kiểm tra mã trùng lặp, tiêu chuẩn mã hóa, kiểm tra đơn vị, phạm vi mã, mã phức tạp, lỗi tiềm năng, nhận xét và thiết kế và kiến ​​trúc.

Bạn có thể tìm thấy list of static code analysis tools on Wikipedia.

Các vấn đề liên quan