2009-04-29 3 views
1

임의의 코드가 포함 된 문자열이 표시됩니다. 해당 문자열의 코드 복잡성을 나타내는 숫자를 계산하려고합니다. 다음과 같이하십시오 :코드 블록의 코드 복잡도를 계산하는 기존 라이브러리

int complexity = Lib.FindComplexity(someString); 

나는 당신을 위해 이것을 할 많은 도구가 있다는 것을 알고 있습니다. 이 도구는 프로그래밍 방식으로하고 싶기 때문에 저에게 효과적이지 않습니다. 저는 C#으로 된 라이브러리가 좋겠지 만, 지금은 아무 것도 할 것입니다.

미리 감사드립니다.

+0

당신이 뭔가를 찾았어요, http://www.semanticdesigns.com/Products/DMS/DMSToolkit.html 및 파생 측정 도구에 대한 참조? @joeB 귀하의 질문에 대한 – gasroot

답변

1

기존 도구 중 하나를 사용하고 라이브러리로 포장하는 것을 고려 했습니까? 예를 들어 NDepend.Console.exe를 원하는 매개 변수로 코드에서 호출하고 결과를 구문 분석하여 사용할 수 있습니다.

1

NDepend는 멋진 도구이지만, 나는 그것을 보았을 때 값이 쌌습니다. 돈이 옵션이 아니라면, 나는 반사와 http://en.wikipedia.org/wiki/Cyclomatic_complexity을 사용하는 방법을 조사 할 것입니다. 모든 문자열에 대한 요구 사항을 충족시키지 못하지만 작성한 어셈블리를 확실히 테스트 할 수는 있습니다.

1

리플렉터와 코드 메트릭스 플러그인을 사용할 수도 있습니다.

0

이와 같은 라이브러리는 임의 언어를 구문 분석하고 조각을 분석 할 수 있어야하며 구문 분석 된 조각에 대한 복잡성 메트릭을 계산할 수 있어야합니다. 대부분의 메트릭 도구는 조각 모음뿐만 아니라 전체 언어에 대한 파서를 가지고 있으므로 많은 솔루션을 찾기가 어려울 수 있습니다.

필요한 것을 제공 할 수있는 시스템이 있습니다. DMS 소프트웨어 리엔지니어링 툴킷. 많은 언어 (예 : Java 및 C#, )에 대해 파서를 으로 제공하므로 분석하려는 언어가 명확하지 않습니다. 여러 종류의 언어 (Java, C#, JavaScript, COBOL) 을 구현하기 위해 DMS가 이미 사용되었습니다.이 작업은 매우 어렵습니다. DMS가이라는 구문을 구문 분석하고 놀랍게도 메트릭 구현이 실제로 이러한 조각에서 작동합니다. 원하는대로 정확하게 구현하도록 DMS를 사용자 지정할 수 있습니다. http://www.semdesigns.com/Products/Metrics/index.html