2009-04-07 3 views
5

Visual Studio 2008 Team Explorer에서 마우스 오른쪽 버튼을 클릭하고 "Calculate Code Metrics"를 선택하여 순환 적 복잡성에 액세스 할 수 있다는 것을 알고 있습니다. 이 데이터를 웹 응용 프로그램에 표시하여 표시하려고합니다. API를 통해이 데이터에 액세스하는 방법을 아는 사람이 있습니까?.NET에서 순환 적 복잡성 파생

도움 주셔서 감사합니다.

답변

2

나는 이런 것들에 NDepend을 사용합니다. NDepend에서 CQL 쿼리를 생성하고 실행할 수 있습니다.
예 :

SELECT METHODS WHERE CC > 8 

는 8

-1

보다 큰 복잡성을 가진 방법을 반환 내가하지 - 비주얼 스튜디오가 그런 종류의 어떤 API를 가지고 있습니까? 그러나 순환 복잡성을 계산하는 것은 비교적 쉽습니다. Gendarme 일 수도 있습니다.

+0

의 복잡성을을 계산하기 위해 헌병 오픈 소스 도구의 API를 활용할 수는 헌병이의 FxCop에 대한 좋은 대체 할 수 있습니까? – Paco

1

API가 없습니다. 그러나 Code Metrics Power Tool에 의해 생성 된 XML 파일을 읽을 수 있습니다. 따라서 다음과 같이 명령 행에서 코드 메트릭 XML 파일을 생성합니다.

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

그런 다음 MetricsResults.xml에서 원하는 데이터를 가져옵니다.

전동 공구에 대한 자세한 정보 here.

TFS 빌드에서 코드 메트릭을 실행하려면 옵션으로 herehere을 참조하십시오.

2

answer에서 설명한 바와 같이, 하나의 방법

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); 
    } 
}