2022. 2. 15. 16:34

정적 분석

 

프로그램을 실행하지 않고 코드를 검사하여 수행하는 컴퓨터 프로그램 디버깅의 방법

이 방법론의 핵심은 실행의 부재

 

정적 분석의 다른 범주

 

1. 패턴 기반 정적 분석 (Pattern-based static analysis)

 

이 범주는 하나의 코드에서 패턴들을 본다

 

이것은 분석의 바이너리 형태이다

 

즉 패턴은 존재하거나 존재하지 않는다

 

이것은 거짓 양성(false positive)에 대하여 기억할 좋은 것이다

 

패턴 기반 분석은 CWE, MISRA, OWASP와 같은 프로그래밍 표준에 기반한 

 

소프트웨어 결함을 생성하는 것을 아는 소스 코드에서 단어를 검출한다

 

패턴 기반 정적 분석은 개발자들이 조직의 개발 정책뿐만 아니라 

 

최적의 패턴을 집행하는 동안 위험한 패턴을 피하고 최고의 실행을

 

하는 코딩을 보장하는데 도움을 준다

 

 

2. 흐름 기반 정적 분석 (Flow-based static analysis)

 

분석의 이 타입은 오직 런타임동안 나타나는 잠재적인 결함을  검출하기 위한 

 

가상적인 실행 경로를 실행하기 위한 코드의 심볼릭 실행을  한다

 

응용프로그램 코드의 매우 큰 부분을 걸치는 복잡한 경로를 분석함으로써 

 

패턴 기반 분석에 의해 검출될 수 없는 이슈를 발견할 수 있다

 

이것은 런타임 버그를 강조할 것이다

 

그 분석은 물론 거짓 양성의 불가피한 가능성이 있는 많은 경로를 검사한다

 

그러나 거짓 양성의 처리는 생산 코드에서 버그를 다루는 것보다 훨씬 쉽다

 

 

3. 계량적 분석 (Metrics)

 

계량적 분석은 코드에 수치의 시야를 제공한다 

 

그것은 코드 구성에서 잠재적 약점을 검사하기 위한 순환 복잡성(cyclomatic complexity), 

부채꼴(fan out), 응집력 부족(lack of cohesion) 과 같은 코드 특성을 측정한다

 

이것은 코드가 그들의 정책을 준수하지 않을 때 사용자가 경고되기 위해

계량적 분석(metrics)에 대한 적합한 범위를 구성할 수 있다