Tính toán số liệu mã [đã đóng]


87

Có bất kỳ công cụ nào có sẵn sẽ tính toán số liệu mã (ví dụ: số dòng mã, độ phức tạp theo chu kỳ, khớp nối, liên kết) cho dự án của bạn và theo thời gian tạo ra một biểu đồ hiển thị xu hướng không?


Phụ thuộc vào ngôn ngữ, bạn đang sử dụng ngôn ngữ nào?
Valentin Rocher

Câu trả lời:


67

Trong dự án mới nhất của mình, tôi đã sử dụng SourceMonitor . Đó là một công cụ miễn phí tốt để phân tích số liệu mã.
Đây là một đoạn trích từ trang web chính thức của SourceMonitor:

  • Thu thập các chỉ số trong một lần chuyển nhanh, qua các tệp nguồn.
  • Đo lường các chỉ số cho mã nguồn được viết bằng C ++, C, C #, VB.NET, Java, Delphi, Visual Basic (VB6) hoặc HTML.
  • Bao gồm các chỉ số cấp phương pháp và hàm cho C ++, C, C #, VB.NET, Java và Delphi.
  • Lưu số liệu trong các trạm kiểm soát để so sánh trong các dự án phát triển phần mềm.
  • Hiển thị và in các số liệu trong bảng và biểu đồ.
  • Hoạt động trong Windows GUI tiêu chuẩn hoặc bên trong các tập lệnh của bạn bằng cách sử dụng các tệp lệnh XML.
  • Xuất chỉ số sang tệp XML hoặc CSV (giá trị được phân tách bằng dấu phẩy) để xử lý thêm bằng các công cụ khác.

Đối với .NET bên cạnh NDepend đơn giản là công cụ tốt nhất, tôi có thể giới thiệu vil .

Các công cụ sau có thể thực hiện phân tích xu hướng:


SourceMonitor dường như là một công cụ chỉ dành cho Windows. Tồn tại điều gì đó tương tự cho các Hệ điều hành khác (Linux, BSD, Mac)?
Mnementh

Mnementh, tôi là nhà phát triển cửa sổ, tôi không biết bất kỳ công cụ nào như vậy cho các bạn phần mềm nguồn mở. Có lẽ bạn có thể thử chạy SourceMonitor trong trình giả lập Wine?
aku 29/09/08

2
Bây giờ có một công cụ NDepend-type cho C ++, CppDepend
ngốc nghếch

SourceMonitor chỉ được sử dụng cho mục đích thương mại.
Scott 混合 理论

2
@Kevin 混合 理论 hãy đọc kỹ giấy phép - bạn có thể sử dụng nó trong bất kỳ môi trường nào mà bạn không thể bán nó. "Đó là, bạn có thể sử dụng thực thi này như một phần của nỗ lực phát triển phần mềm của riêng bạn (thương mại hay cách khác) nhưng bạn có thể không bán nó ..."
Natalie Adams

12

Sonar chắc chắn là một công cụ mà bạn phải xem xét, đặc biệt là đối với các dự án Java. Tuy nhiên, nó cũng sẽ xử lý mã PHP hoặc C / C ++, Flex và Cobol.

Đây là ảnh chụp màn hình hiển thị một số chỉ số về một dự án:

văn bản thay thế http://sonar.codehaus.org/wp-content/uploads/2009/05/squid-metrics.png

Lưu ý rằng bạn có thể thử công cụ này bằng cách sử dụng trang web demo của họ tại http://nemo.sonarsource.org


Rõ ràng SO sẽ không cho phép tôi tự khắc phục sự liên kết - liên kết nên là: nemo.sonarsource.org
Natalie Adams


8

Tôi cũng đang tìm kiếm một công cụ / plugin đo lường mã cho IDE của mình nhưng theo tôi biết thì không có công cụ nào (đối với nhật thực) cũng hiển thị biểu đồ về độ phức tạp trong một khoảng thời gian cụ thể. Tuy nhiên, tôi đã tìm thấy plugin đo lường nhật thực , nó có thể xử lý:

  • McCabe's Cyclomatic Complexity
  • Khớp nối Efferent
  • Thiếu sự gắn kết trong các phương pháp
  • Dòng mã trong phương pháp
  • Số lượng trường
  • Số cấp độ
  • Số người dân địa phương trong phạm vi
  • Số lượng thông số
  • Số lượng báo cáo
  • Phương pháp trọng số cho mỗi lớp

Và trong khi sử dụng nó, tôi cũng không bỏ lỡ tùy chọn vẽ đồ thị mà bạn đang tìm kiếm.
Tôi nghĩ rằng, nếu bạn không tìm thấy bất kỳ plugin / công cụ nào có thể xử lý việc vẽ đồ thị theo thời gian, bạn nên xem xét công cụ phù hợp với bạn nhất và cung cấp cho bạn tất cả thông tin bạn cần; ngay cả khi thông tin đã cho chỉ dành cho bản dựng hiện tại của dự án của bạn.

Xin lưu ý thêm, plugin chỉ số eclipse cho phép bạn xuất dữ liệu sang tệp bên ngoài (liên kết dẫn đến ví dụ), vì vậy nếu bạn sử dụng công cụ kiểm soát nguồn và bạn nên làm như vậy !, bạn luôn có thể xuất dữ liệu cho các xây dựng và lưu trữ tệp cùng với mã nguồn, theo cách đó bạn vẫn có cách (cơ bản) để quay ngược thời gian và kiểm tra sự khác biệt.


4

hãy nhớ rằng, những gì bạn đo lường là những gì bạn nhận được. loc không nói gì về năng suất hoặc hiệu quả.

đánh giá một lập trình viên theo các dòng mã và bạn sẽ nhận được .. dòng mã. đối số tương tự cũng áp dụng cho các chỉ số khác.

otoh .. http://www.crap4j.org/ là một số liệu rất thận trọng và hữu ích. nó đặt ra sự phức tạp liên quan đến phạm vi bảo hiểm.


2
Đánh giá một lập trình viên theo dòng nhận xét và bạn sẽ nhận được ... dòng nhận xét.
EML


3

Liên quan đến công cụ NDepend, nó đi kèm với 82 số liệu mã khác nhau, từ Số dòng mã, đến Xếp hạng phương pháp (mức độ phổ biến), Độ phức tạp theo chu kỳ, Thiếu sự gắn kết của các phương pháp, Tỷ lệ bao phủ (trích xuất từ ​​NCover hoặc VSTS), Độ sâu kế thừa .. .

Với hệ thống quy tắc của mình, NDepend cũng có thể tìm ra các vấn đề và ước tính nợ kỹ thuật , đây là một chỉ số mã thú vị (số lượng nhà phát triển nỗ lực để khắc phục sự cố so với lượng thời gian dành cho nhà phát triển bị hỏng mỗi năm để khắc phục sự cố ).

Tất cả các số liệu này được tách ra ở đây .


2

Nếu bạn đang ở trong không gian .NET, CodeRush của Developer Express cung cấp LOC, Cyclomatic Complexity và phân tích độ phức tạp bảo trì (khá tuyệt vời, IMHO) của mã trong thời gian thực.

(Xin lỗi về liên kết Độ phức tạp Bảo trì; liên kết này sẽ được chuyển vào bộ nhớ cache của Google. Bản gốc có vẻ là ATM ngoại tuyến).


2

Atlassian FishEye là một công cụ tuyệt vời khác cho công việc này. Nó tích hợp với hệ thống kiểm soát nguồn của bạn (hiện hỗ trợ CVS, SVN và Perforce), và phân tích tất cả các tệp của bạn theo cách đó. Mặc dù vậy, phân tích khá cơ bản và bản thân sản phẩm là thương mại (nhưng giá rất hợp lý, IMO).

Bạn cũng có thể nhận được một tiện ích bổ sung có tên là Crucible để tạo điều kiện cho việc đánh giá mã ngang hàng.


2

Đối với Visual Studio .NET (ít nhất là C # và VB.NET), tôi thấy StudioTools miễn phí cực kỳ hữu ích cho các số liệu. Nó cũng bổ sung một số tính năng được tìm thấy trong các công cụ thương mại như ReSharper .


2

Code Analyzer là công cụ đơn giản tạo ra loại số liệu này.

văn bản thay thế
(nguồn: teel.ws )


3
Trong khi GUI có vẻ đẹp, các số liệu được tạo ra có vẻ khá vô dụng - ví dụ: "Khoảng trắng dòng trên mỗi tệp"?
kizzx2




0

Về mặt PHP, tôi tin rằng ví dụ phpUnderControl bao gồm các số liệu thông qua phpUnit (nếu tôi không nhầm).

Hãy nhớ rằng các số liệu thường có sai sót. Ví dụ: một lập trình viên đang giải quyết các vấn đề nhỏ nhặt sẽ tạo ra nhiều mã hơn và ở đó, đồ thị của bạn trông đẹp hơn, hơn là một lập trình viên đang giải quyết các vấn đề phức tạp.


0

Nếu bạn đang theo đuổi một số phân tích xu hướng, thì việc đo lường ngoài SLOC có thực sự có ý nghĩa gì không?

Ngay cả khi bạn chỉ thực hiện grep để tìm dấu chấm phẩy ở cuối và đếm số dòng được trả về, điều bạn cần là sự nhất quán trong kỹ thuật đo SLOC. Bằng cách này, số đo của ngày hôm nay có thể được so sánh với số đo của tháng trước một cách có ý nghĩa.

Tôi thực sự không thể thấy xu hướng của Độ phức tạp Cyclometric McCabe sẽ mang lại điều gì? Tôi nghĩ rằng CC nên được sử dụng nhiều hơn để có ảnh chụp nhanh về chất lượng nhằm cung cấp phản hồi cho các nhà phát triển.

Chỉnh sửa: Ooh. Chỉ nghĩ về một vài phép đo khác có thể hữu ích. Nhận xét dưới dạng phần trăm SLOC và phạm vi kiểm tra. Không cái nào bạn muốn để tuột. Quay trở lại để trang bị thêm một trong hai thứ này không bao giờ tốt bằng việc làm chúng "trong thời điểm nóng bức!"

HTH.

chúc mừng,

Rob


0

Scitools 'Hiểu có khả năng tạo ra rất nhiều số liệu mã cho bạn. Tôi không có nhiều kinh nghiệm với các tính năng đo lường mã, nhưng các tính năng phân tích tĩnh nói chung rất đẹp và giá cả rất hợp lý. Sự hỗ trợ là tuyệt vời.


0

Project Code Meter cung cấp báo cáo lịch sử phát triển khác biệt (ở định dạng Excel), hiển thị số liệu tiến độ mã hóa của bạn theo SLOC, phần trăm thời gian và năng suất (ước tính thời gian dựa trên độ phức tạp của chu kỳ và các số liệu khác). Sau đó, trong Excel, bạn có thể dễ dàng tạo ra biểu đồ bạn muốn.

xem bài viết này mô tả từng bước: http://www.projectcodemeter.com/cost_estimation/help/FN_monsizing.htm


0

Đối với Java, bạn có thể thử công cụ của chúng tôi, QualityGate , tính toán hơn 60 số liệu mã nguồn, theo dõi tất cả các thay đổi theo thời gian và cũng đưa ra đánh giá tổng thể về khả năng bảo trì của mã nguồn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.