CodeQL CLI는 CodeQL DB를 만들고 DB에 쿼리하는 Command Line 프로그램이다. VS Code의 확장기능(Extension)으로도 사용가능하다. CodeQL CLI는 아래와 같은 명령 구조를 가진다.
codeql [command] [subcommand]
#CodeQL CLI 다운로드
우선 CodeQL CLI 프로그램을 다운로드 해야한다. CodeQL CLI는 github 계정의 codeql-cli-binaries 레포지토리에서 공개하고 있다.
https://github.com/github/codeql-cli-binaries/releases
본인 운영체제에 맞는 버전을 다운로드한 후 적당한 위치에 압축을 푼다. 본 서에서는 ~/Documents/CodeQL/codeql-cli에 압축을 풀었다. 그 후 압축을 푼 위치를 환경 변수에 등록하면 CodeQL CLI를 사용할 수 있다. CMD 창을 띄우고 codeql이라고 입력했을 때 아래 그림과 같이 codeql help 메시지가 나타나면 된다.
다음은 CodeQL 분석에 필요한 쿼리와 라이브러리를 다운로드 해야한다. 라이브러리는 github 계정의 codeql 레포지토리를 클론하면 된다.
https://github.com/github/codeql
본 서에서는 위 codeql 레포지토리를 codeql-repo라는 이름으로 클론한다. 입력한 명령어는 아래와 같다.
> git clone git@github.com:github/codeql.git codeql-repo
위 CodeQL 라이브러리에는 C/C++, C#, Java, JS, Python 등 CodeQL이 지원하는 언어들의 분석에 필요한 라이브러리와 기본적으로 제공하는 쿼리들이 들어있다. CodeQL CLI의 Built-in search 작업은 모든 Sibling directories에서 데이터베이스를 생성하거나 분석에 사용되는 파일을 자동으로 검색한다고 한다. 그러므로 codeql-cli와 codeql-repo 폴더는 형제 관계에 있어야 한다.
CodeQL/codeql-cli
CodeQL/codeql-repo
Go 언어에 대한 CodeQL 라이브러리는 레포지토리가 별도로 존재한다. Go 언어에 대한 데이터베이스를 만들고자 한다면 아래 레포지토리를 클론하면 된다. 앞서 codeql-repo와 마찬가지로 codeql-cli와 형제 관계에 놓이도록 한다.
https://github.com/github/codeql-go/
#CodeQL CLI 설정 확인
CMD 창에서 codeql resolve languages를 입력하면 CodeQL 데이터베이스를 만들 수 있는 언어 종류를 나열한다.
> codeql resolve languages
codeql resolve qlpacks를 입력하면 CodeQL 레포지토리에 포함된 QL pack의 이름들이 표시된다. 이 때 앞서 클로닝한 codeql-repo 폴더를 잘 찾아가면 된다.
'CodeQL' 카테고리의 다른 글
#4 CodeQL - 쿼리 파일 작성해서 실행하기 (0) | 2021.09.08 |
---|---|
#3 CodeQL - 기본 제공 Javascript QL 사용하기 (0) | 2021.06.22 |
#1 CodeQL - Hello, CodeQL (0) | 2021.06.12 |