2009-04-07 47 views
5

Tôi biết rằng tôi có thể truy cập độ phức tạp chu trình vào mã của tôi trong Visual Studio 2008 Team Explorer bằng cách nhấp chuột phải và chọn "Tính toán số liệu mã". Tôi muốn hiển thị dữ liệu này cho một ứng dụng web để hiển thị nó. Có ai biết cách truy cập dữ liệu này thông qua API không?Phát triển tính phức tạp của Cyclomatic trong .NET

Cảm ơn sự giúp đỡ của bạn!

Trả lời

2

Tôi sử dụng NDepend cho các nội dung tương tự. Bạn có thể tạo các truy vấn CQL trong NDepend và thực thi chúng.
Ví dụ:

SELECT METHODS WHERE CC > 8 

trả về phương pháp với một độ phức tạp cyclomatic lớn hơn 8.

-1

tôi không - không có Visual Studio bất kỳ API thuộc loại đó? - nhưng tính toán độ phức tạp của chu trình là hợp lý dễ dàng. Gendarme có thể là câu trả lời của bạn.

+0

là Gendarme thể thay thế tốt cho FxCop? – Paco

1

Không có API. Nhưng bạn có thể đọc một tệp XML được tạo bởi Code Metrics Power Tool. Vì vậy, bạn sẽ tạo tệp XML số liệu mã theo dòng lệnh như:

metrics /f:MyAssembly.dll /o:MetricsResults.xml 

Sau đó lấy dữ liệu bạn muốn ra khỏi MetricsResults.xml.

Thông tin thêm về công cụ nguồn here.

Nếu bạn muốn chạy các chỉ số mã trong bản dựng TFS của mình, hãy xem herehere để biết các tùy chọn.

2

Như đã trình bày trong này answer, người ta có thể tận dụng các API của Gendarme công cụ mã nguồn mở để tính toán mức độ phức tạp cyclomatic của một phương pháp

ModuleDefinition module = ModuleDefinition.ReadModule(fullPathToTheAssembly); 

foreach (var type in module.Types) 
{ 
    foreach (var me in type.Methods) 
    { 
     if (!me.HasBody || me.IsGeneratedCode() || me.IsCompilerControlled) 
      continue; 
     var r = AvoidComplexMethodsRule.GetCyclomaticComplexity(me); 

     Console.WriteLine("{0}: {1}", me.ToString(), r); 
    } 
}
Các vấn đề liên quan