코드를 질의 대상으로 만들기
먼저 소스의 구문과 의미 정보를 추출해 분석용 데이터베이스를 만든다. 이 데이터베이스는 서비스가 사용하는 업무 데이터 저장소와 목적이 다르다. 코드의 구조와 관계를 질의하기 위한 자료이며 여러 언어로 구성된 프로젝트는 언어별로 데이터베이스를 생성한다.
규칙 대신 질의로 질문하기
QL로 작성한 질의를 데이터베이스에 실행하고 결과를 해석하는 흐름이다. 제공되는 표준 질의를 사용하거나 직접 질의를 작성할 수 있다. 이미 발견한 취약점의 특징을 질의로 표현한 뒤 비슷한 문제가 다른 코드에도 있는지 찾는 변형 분석에 활용한다.
도구와 라이브러리의 구분
명령행 도구와 편집기 확장을 통해 질의를 실행할 수 있다. 공개 저장소의 표준 라이브러리와 질의는 분석 엔진을 포함하는 명령행 도구와 구분된다. 따라서 저장소가 공개되어 있다는 사실만으로 모든 구성 요소의 이용 조건이 같다고 판단해서는 안 된다.
관련 문서
Infer 정적 분석 / Semgrep / Coccinelle / 컴파일러