정적 코드 분석 및 검증
정적 분석은 소스 코드를 실행하지 않고 검사하여, 평가나 통합 과정에서 결함이 표면화될 때가 아니라 결함이 발생된 시점에서 이를 식별합니다. 규제 대상 산업 분야의 임베디드 C 및 C++ 개발의 경우, 프로젝트 초기부터 정적 분석을 지속적으로 수행하면 코드베이스 전반에 걸쳐 결함 유형이 누적되는 것을 방지하고, 인증 전에 해결해야 할 결함의 양을 줄일 수 있습니다.
정적 분석의 역할
정적 분석 도구는 소스 코드를 체계적으로 분석하며, 일련의 규칙을 적용하여 테스트만으로는 발견하기 어렵거나 불가능한 문제점을 식별합니다. 동적 테스트와 달리, 분석 결과는 테스트 입력이나 runtime 조건에 따라 달라지지 않으며, 동일한 코드를 분석할 때마다 동일한 결과가 도출됩니다.
주요 기법으로는 다음을 포함합니다:
- 코드 구현 표준 규칙에 대한 패턴 매칭을 통해 위반 사항 및 의심스러운 구문을 표시
- 실행 경로 전반에 걸쳐 변수 값을 모니터링하고 유효하지 않은 상태를 포착하기 위한 값 추적
- 변수가 예상 범위 내에 머무르는지 확인하기 위한 경계값 검사
- 제어 흐름 및 데이터 흐름에 대한 추상 해석을 통해 의존성과 도달 가능성 문제를 식별
정적 분석이 발견하는 것
정적 분석이 확실하게 탐지해내는 결함 유형에는 다음이 포함되지만, 이에 국한되지는 않습니다:
- Null 포인터 참조 및 배열 범위를 벗어난 액세스
- 초기화되지 않은 변수 및 부적절한 형 변환
- MISRA C:2025, MISRA C:2023, MISRA C++:2023, AUTOSAR C++ 및 CERT-C를 포함한 코드 구현 표준 위반
- CWE Top 25 및 Top 10 KEV 목록을 포함한 CWE 분류에 mapping된 보안 취약점
- 도달 불가능한 코드, 논리 오류 및 리소스 누수
- 병행성 문제로 경합 조건과 부적절한 실행 순서를 포함한다
PC-lint Plus
PC-lint Plus는 Vector의 C 및 C++ 소스 코드용 정적 분석 도구입니다. 이 도구는 exida로부터 IEC 61508(SIL 1-3), ISO 26262(ASIL A-D), IEC 62304 및 EN 50716 인증을 받았으며, CWE 호환성 인증도 획득했습니다.
PC-lint Plus는 MISRA C:2025, MISRA C:2023, MISRA C:2012(개정안 1-4), MISRA C++:2023, MISRA C++:2008, AUTOSAR C++, CERT-C 및 CWE를 기본으로 지원합니다. 이 제품은 거의 모든 빌드 체인 및 개발 환경에 통합될 수 있으며, 원격 측정이나 인터넷 연결 없이 로컬에서 실행되고, 병렬 처리를 통해 대규모 코드베이스에서도 효율적으로 확장됩니다. 억제 관리 기능은 완벽하게 추적 가능합니다. 모든 억제 사항이 문서화되며, 규칙 수준에서 쿼리 기반 예외를 정의할 수 있고, 사용되지 않는 억제 사항은 자동으로 표시됩니다.