순환 복잡도 메트릭
R2026b참고
Metrics Dashboard 앱, 모델 메트릭, slmetric API 및 해당하는 사용자 지정은 향후 릴리스에서 제거될 예정입니다. 자세한 내용은 Migrating from Metrics Dashboard to Model Design Dashboards 항목을 참조하십시오.
메트릭 ID
메트릭 ID: mathworks.metrics.CyclomaticComplexity
설명
메트릭 유형: 아키텍처
모델 어드바이저 검사 ID: mathworks.metricchecks.CyclomaticComplexity
이 메트릭을 사용하여 모델의 순환 복잡도(cyclomatic complexity)를 계산합니다. 순환 복잡도는 모델의 구조적 복잡도를 측정한 값입니다. 이 분석에서 고려하지 않는 코드 특징(예: 통합된 로직 및 오류 검사)으로 인해, 모델의 복잡도 측정값은 생성된 코드의 복잡도 측정값과 다를 수 있습니다. 객체(예: 블록, 차트 또는 상태)의 순환 복잡도를 계산하기 위해 Simulink® Check™는 다음 식을 사용합니다.
N은 객체가 나타내는 의사 결정 지점의 개수이고, on은 n번째 의사 결정 지점에 대한 결과의 개수입니다. 이 계산에서는 벡터화된 연산 또는 Multiport switch 블록을 단일 의사 결정 지점으로 간주합니다. 이 툴은 모델, Atomic Subsystem, Stateflow® 차트의 경우에는 복잡도 수치에 1을 더합니다.
결과는 다음에 대한 로컬 순환 복잡도와 총 순환 복잡도를 제공합니다.
모델
서브시스템
차트
MATLAB® 함수
로컬 복잡도(local complexity)는 해당 계층 수준에 있는 객체의 순환 복잡도입니다. 총 순환 복잡도(aggregated cyclomatic complexity)는 객체와 그 후손의 순환 복잡도입니다.
이 메트릭은 Simulink Check와 함께 사용할 수 있습니다. 이 메트릭의 데이터를 수집하려면 메트릭 식별자 mathworks.metrics.CyclomaticComplexity와 함께 getMetrics를 사용하십시오.
slmetric.metric.AggregationMode 속성 설정은 Sum입니다.
계산 세부 정보
이 메트릭의 특성은 다음과 같습니다.
라이브러리 모델에서는 실행되지 않습니다.
마스크 처리된 서브시스템의 내용을 분석합니다.
비활성 Variant는 분석하지 않습니다.
지정된 경우, 라이브러리에 링크된 블록 또는 참조된 모델의 내용을 분석합니다.
가속화된 모드에서는 참조된 모델을 분석하지 않습니다.
수집
모델 어드바이저를 사용하여 이 메트릭에 대한 데이터를 수집하려면 작업별 > 모델 메트릭 > 복잡도 메트릭에서 검사 순환 복잡도 메트릭을 실행하십시오. 모델 어드바이저 검사는 루트 모델과 시스템의 Simulink 객체 및 Stateflow 객체의 로컬 순환 복잡도를 표시합니다. 이 검사는 참조된 모델을 분석하거나 집계된 결과를 반환하지 않습니다.
결과
이 메트릭의 경우, slmetric.metric.Result의 인스턴스는 다음과 같은 결과를 제공합니다.
Value: 로컬 순환 복잡도.AggregatedValue: 총 순환 복잡도.Measures: 해당 없음.
복잡도에 대한 자세한 내용은 다음 항목을 참조하십시오.
Cyclomatic Complexity for Stateflow Charts (Simulink Coverage)
Cyclomatic Complexity (Simulink Coverage)