다음을 통해 공유


코드 메트릭 값

최신 소프트웨어 응용 프로그램의 복잡성이 증가함에 따라 코드를 안정적이고 유지 관리 가능하게 만드는 것도 어려워집니다. 코드 메트릭은 개발자가 개발 중인 코드에 대한 더 나은 통찰력을 제공하는 일련의 소프트웨어 측정값입니다. 코드 메트릭을 활용함으로써 개발자는 어떤 형식 또는 메서드를 다시 작업하거나 더 철저하게 테스트해야 하는지 이해할 수 있습니다. 개발 팀은 소프트웨어 개발 중에 잠재적인 위험을 식별하고, 프로젝트의 현재 상태를 이해하고, 진행 상황을 추적할 수 있습니다.

개발자는 Visual Studio를 사용하여 관리 코드의 복잡성과 유지 관리 용이성을 측정하는 코드 메트릭 데이터를 생성할 수 있습니다. 전체 솔루션 또는 단일 프로젝트에 대한 코드 메트릭 데이터를 생성할 수 있습니다.

Visual Studio에서 코드 메트릭 데이터를 생성하는 방법에 대한 자세한 내용은 방법: 코드 메트릭 데이터 생성을 참조하십시오.

소프트웨어 측정

다음 목록에서는 Visual Studio에서 계산하는 코드 메트릭 결과를 보여 줍니다.

  • Maintainability Index 유지 관리 인덱스 - 코드 유지 관리의 상대적 용이성을 나타내는 0에서 100 사이의 인덱스 값을 계산합니다. 값이 높을수록 유지 관리성이 향상됩니다. 색상으로 구분된 등급을 사용하여 코드의 문제 지점을 빠르게 식별할 수 있습니다. 녹색 등급은 20에서 100 사이이며 코드의 유지 관리성이 양호함을 나타냅니다. 노란색 등급은 10에서 19 사이이며 코드를 적당히 유지 관리할 수 있음을 나타냅니다. 빨간색 등급은 0에서 9 사이의 등급이며 유지 관리성이 낮음을 나타냅니다. 자세한 내용은 유지 관리 인덱스 범위 및 의미를 참조하세요.

  • Cyclomatic Complexity 순환 복잡도 - 코드의 구조적 복잡성을 측정합니다. 프로그램 흐름에서 서로 다른 코드 경로의 수를 계산하여 생성됩니다. 제어 흐름이 복잡한 프로그램은 좋은 코드 검사를 얻기 위해 더 많은 테스트가 필요하고 유지 관리가 어렵습니다. 자세한 내용은 순환 복잡성을 참조하세요.

  • Depth of Inheritance 상속 깊이 - 기본 클래스까지 서로 상속되는 서로 다른 클래스의 수를 나타냅니다. Depth of Inheritance는 기본 클래스의 변경이 상속된 클래스에 영향을 줄 수 있다는 점에서 클래스 결합과 유사합니다. 이 숫자가 높을수록 상속이 깊어지고 기본 클래스 수정으로 인해 호환성이 손상되는 변경이 발생할 가능성이 높아집니다. Depth of Inheritance의 경우 낮은 값은 좋은 것이고 높은 값은 나쁜 것입니다. 자세한 내용은 상속 깊이를 참조하세요.

  • 클래스 커플링 - 매개 변수, 로컬 변수, 반환 형식, 메서드 호출, 제네릭 또는 템플릿 인스턴스화, 기본 클래스, 인터페이스 구현, 외부 형식에 정의된 필드 및 속성 데코레이션을 통해 고유한 클래스에 대한 커플링을 측정합니다. 좋은 소프트웨어 설계는 유형과 방법이 높은 응집력과 낮은 결합을 가져야 함을 나타냅니다. 높은 결합은 다른 유형에 대한 많은 상호 의존성으로 인해 재사용 및 유지 관리가 어려운 설계를 나타냅니다. 자세한 내용은 클래스 결합을 참조하세요.

  • Lines of Source code 소스 코드 - 빈 줄을 포함하여 소스 파일에 있는 소스 코드 줄의 정확한 수를 나타냅니다. 이 메트릭은 Visual Studio 2019 버전 16.4 및 Microsoft.CodeAnalysis.Metrics(2.9.5)부터 사용할 수 있습니다.

  • Lines of Executable code 실행 코드 라인 - 실행 코드 라인 또는 연산의 대략적인 수를 나타냅니다. 실행 코드의 작업 수를 계산합니다. 이 메트릭은 Visual Studio 2019 버전 16.4 및 Microsoft.CodeAnalysis.Metrics(2.9.5)부터 사용할 수 있습니다. 이 값은 일반적으로 레거시 모드에서 사용되는 MSIL 명령 기반 메트릭인 이전 메트릭인 코드 줄과 거의 일치합니다.

무명 메서드

무명 메서드는 이름이 없는 메서드일 뿐입니다. 무명 메서드는 코드 블록을 대리자 매개 변수로 전달하는 데 가장 자주 사용됩니다. 메서드 또는 접근자와 같은 멤버에 선언된 익명 메서드에 대한 코드 메트릭 결과는 메서드를 선언하는 멤버와 연결됩니다. 메서드를 호출하는 멤버와 연결되지 않습니다.

생성된 코드

일부 소프트웨어 도구 및 컴파일러는 프로젝트에 추가되고 프로젝트 개발자가 볼 수 없거나 변경해서는 안 되는 코드를 생성합니다. 대부분의 경우 Code Metrics는 메트릭 값을 계산할 때 생성된 코드를 무시합니다. 이렇게 하면 개발자가 보고 변경할 수 있는 내용을 메트릭 값에 반영할 수 있습니다.

Windows Forms에 대해 생성된 코드는 개발자가 보고 변경할 수 있는 코드이므로 무시되지 않습니다.