NDepend로 .Net 코드의 품질 측정

애플리케이션 코드의 품질을 평가하는 것은 종종 주관적인 프로세스입니다. 이것이 우리가 애플리케이션의 코드에 대한 귀중한 통찰력을 제공하는 정량적 측정 인 코드 메트릭으로 전환하는 이유입니다. 개발자는 코드 메트릭을 활용하여 코드의 품질을 이해하고 잠재적 인 문제를 파악하며 품질을 개선하기 위해 리팩토링해야하는 유형과 메서드를 식별 할 수 있습니다.

정적 코드 분석 도구는 애플리케이션을 실행하지 않고도 애플리케이션의 코드 품질을 측정하는 데 사용됩니다. .Net에 사용할 수있는 많은 정적 코드 분석 도구가 있습니다. 여기에는 FxCop, StyleCop, ReSharper, CodeIt.Right, NDepend 등이 포함됩니다.이 기사에서는 NDepend를 사용하여 코드 품질을 시각화하고이를 개선하기위한 조치를 채택하는 방법에 대해 설명합니다.

NDepend 란 무엇이며 왜 사용합니까?

NDepend는 Visual Studio와 잘 통합되고 코드 품질을 결정하는 데 유용한 메트릭을 제공하는 정적 코드 분석기입니다. NDepend는 목록, 행렬, 그래프, 트리 맵 및 차트의 형태로 이러한 메트릭을 표시합니다. 이러한 메트릭과 함께 NDepend는 코드를 분석하고 대규모 규칙 데이터베이스에 대한 위반을보고 할 수 있습니다.

NDepend는 각 분석 결과를 저장하므로 코드 커버리지 또는 코드 품질을 개선 한 후 결과를 비교할 수 있습니다. 독립 실행 형 응용 프로그램과 Visual Studio의 확장으로 모두 실행할 수 있습니다. 또한 NDepend Azure DevOps 확장을 활용하여 NDepend를 Azure의 프로젝트와 통합 할 수 있습니다.

다음은 NDepend의 놀라운 기능 중 일부입니다.

  • 규정 준수를 확인하기위한 대규모 코드 규칙 세트
  • 코드 메트릭을보기위한 많은 차트 및 다이어그램
  • Visual Studio 2010, 2012, 2013, 2015 및 2017과 잘 통합됩니다.
  • 모듈 간의 종속성을 탐색 할 수 있습니다.
  • 분석을 사용자 지정하기 위해 CQLinq (LINQ를 통한 코드 쿼리) 제공
  • 코드 커버리지 측정
  • 유지 관리가 어려운 코드를 식별하고 기술 부채를 추정합니다. 
  • 트렌드 차트 생성

NDepend 시작하기

NDepend 사용을 시작하려면 사본을 다운로드하여 설치해야합니다. 여기에서 NDepend의 평가판을 다운로드 할 수 있습니다. .zip 파일로 패키징됩니다. 

NDepend 설치 프로그램 .zip 파일의 압축을 풀면 다음 파일을 찾을 수 있습니다.

  1. NDepend.Console — 빌드 프로세스와의 통합에 사용됩니다.
  2. NDepend.PowerTools — 오픈 소스 정적 분석기 모음
  3. NDepend.VisualStudioExtension.Installer — NDepend 용 Visual Studio 확장을 설치합니다.
  4. VisualNDepend — NDepend 용 GUI 클라이언트

다음 두 가지 방법 중 하나로 NDepend의 Visual Studio 확장을 설치할 수 있습니다.

  1. NDepend.VisualStudioExtension.Installer 실행
  2. VisualNDepend를 실행하고“Install Visual Studio Extension”을 선택합니다.

NDepend 용 Visual Studio Extension이 설치되면 Visual Studio IDE 내에서 메트릭, 규칙, 보고서, 그래프, 분석기 결과 및 도구를 활용할 수 있습니다. 또한 Visual NDepend를 활용하여 Visual Studio를 시작하지 않고도 솔루션과 프로젝트를 분석 할 수 있습니다.

NDepend 용 Visual Studio Extension은 Visual Studio 2010에서 Visual Studio 2017까지 사용할 수 있습니다. Visual Studio 2017과 함께 사용하고 있습니다.

NDepend로 소스 코드 분석

소스 코드 분석을 시작하려면 "VS 솔루션 및 VS 프로젝트 분석"을 클릭하십시오. 사용 가능한 다른 옵션은 "폴더에서 .Net 어셈블리 분석", ".Net 어셈블리 세트 분석"및 "코드베이스의 2 개 버전 비교"입니다. 마지막 옵션을 사용하면 두 빌드를 비교할 수 있습니다. 멋진 기능입니다!

간단하게하기 위해 여기에있는 최근 기사 중 하나 (“ASP.Net Core에서 Lamar를 사용하는 방법”)의 소스 코드를 사용하겠습니다. "VS 솔루션 및 VS 프로젝트 분석"을 클릭하면 아래 그림 1과 같이 새 창이 표시됩니다.

이제 "찾아보기"를 클릭하고 NDepend가 분석 할 프로젝트의 솔루션 파일을 지정할 수 있습니다.

마지막으로 "단일 .Net 어셈블리 분석"을 클릭하여 아래 그림 3과 같이 분석을 시작합니다.

그러면 선택한 프로젝트에서 코드 분석이 실행됩니다. 분석이 완료되면 NDepend는 다음 옵션이있는 창을 표시합니다.

  • NDepend 대시 보드보기
  • NDepend 인터랙티브 그래프 표시
  • 브라우저 NDepend 코드 규칙
  • 대화창 닫기

NDepend 대시 보드를 보도록 선택하겠습니다. 출력은 다음과 같습니다. 

NDepend는 코드 라인, 유형, 부채, 소스 코드의 주석, 커버리지 정보, 메서드 복잡성, 품질 게이트 및 위반 된 규칙 및 기타 문제에 대한 정보를 보여줍니다.

NDepend 기능

종속성 그래프 및 종속성 매트릭스

NDepend는 또한 코드의 종속성 그래프와 종속성 매트릭스를 보여줍니다. 전자는 프로젝트의 종속성에 대한 그래픽보기를 제공하는 반면 후자는 네임 스페이스 및 유형에 대한 종속성으로 구성된 코드의 표 형식보기를 제공합니다.

트렌드 차트

대시 보드에서 추세 차트를 사용할 수 있습니다. 이 차트는 프로젝트 소스 코드의 품질이 시간이 지남에 따라 어떻게 변했는지 미리보기를 제공합니다. 고유 한 사용자 정의 추세 차트를 만들 수도 있습니다.

순환 복잡성

순환 적 복잡성은 프로그램의 복잡성을 이해하고 코드 적용 범위를 개선하는 데 도움이되는 소스 코드에서 선형 적으로 독립적 인 경로를 정량적으로 측정 한 것입니다. NDepend를 활용하여 애플리케이션 코드의 순환 복잡성을 분석 할 수 있습니다. 이 기사에서 순환 복잡성에 대해 더 많이 읽을 수 있습니다.

CQLinq를 사용하여 쿼리

CQLinq는 NDepend의 가장 눈에 띄는 기능 중 하나입니다. CQLinq를 사용하면 LINQ를 사용하여 .Net 코드를 쿼리 할 수 ​​있습니다. CQLinq를 활용하여 코드 부채, 문제, 규칙 및 품질 게이트를 쿼리 할 수 ​​있습니다.

예를 살펴 보겠습니다. 다음 CQLinq 쿼리는 순환 복잡도가 20보다 큰 비추 상 메소드의 메소드 이름과 순환 복잡도를 순환 복잡도 값의 내림차순으로 표시합니다.

Application.Methods의 m에서

여기서 m.CyclomaticComplexity> = 20 &&! m.IsAbstract

m. CyclomaticComplexity 내림차순

새 {m, m.CyclomaticComplexity} 선택

다음은 CQLinq 쿼리의 또 다른 예입니다. 이것은 실행될 때 100 줄 이상의 코드가있는 메소드의 이름을 표시합니다.

m에서 m.NbLinesOfCode> 100 선택 m

CQLinq에 대해 자세히 알아 보려면 여기에서 NDepend 설명서를 참조하십시오. 

NDepend는 애플리케이션 코드에 대한 귀중한 통찰력을 제공 할 수있는 정적 코드 분석 도구입니다. NDepend를 독립 실행 형 응용 프로그램으로 실행하거나 Visual Studio에 통합 할 수 있습니다. NDepend는 무료는 아니지만 강력한 기능을 고려할 때 합리적인 가격이며 모든 최신 버전의 Visual Studio에서 사용할 수 있습니다.

NDepend를 배우기위한 훌륭한 리소스를 원한다면 Eric Dietrich의 Pluralsight 과정 "Practical NDepend"를 적극 권장합니다.