CodeQL——安装配置 CodeQL CLI
CodeQL CLI是一个命令行工具,用于在开源软件项目上本地运行CodeQL进程。可以使用CLI做:运行CodeQL分析、创造CodeQL数据库、开发和测试自定义CodeQL查询。
CodeQL CLI安装
1. 下载
下载CodeQL CLI zip压缩包,这个CodeQL CLI 包 是一个 zip 包, 包含scripts, 各种文件。
如果系统是linux、windows、macOS10.14("Mojave")或者更早的版本,下载地址
download the zip archive 。
2.创造工作目录
创建一个新目录,您可以在其中放置CLI和您想要使用的任何查询和库。例如,$HOME/codeql-home
cd project
mkdir codeql-home
3. 拉取CodeQL queries到工作目录
第一种方式:
在上面创建的codeql-home
目录下,从github上拉取codeql库并重新命名为codeql-repo。命令如下
git clone git@github.com:github/codeql.git codeql-repo
。
第二种方式:
如果git clone的网络不好的话,也可以自己下载下来后把zip包放到codeql-home
目录下,然后重新命名codeql文件为codeql-repo。即mv codeql codeql-repo
。
注释:因为codeql和codeql-cli解压后的文件名称都是codeql,为了后续有冲突,所以把codeql库拉下来后重新命名为codeql-repo。
4. Extract the zip archive
把Code CLI包解压后放入codeql-home
目录下。解压后可以看到文件名称为codeql
。所以要知道这里的codeql是指codeql-cli。后续的codeql,都是指codeql-cli。
5. 配置 codeql(即指配置codeql-cli工具)
添加<extraction-root>/codeql
到 PATH
环境, 添加完成后就可以执行codeql
命令.步骤如下:
笔者此处的<extraction-root>路径为/Users/codeql-home
5.1 编辑
vi ~/.profile #打开文件.profile
export PATH=$PATH:/Users/codeql-home/codeql #追加这行命令,记得/Users/codeql-home这个路径换成自己的目录
5.2 生效
退出编辑,执行:
source ~/.profile #生效上面添加的编辑内容
5.3 验证
在终端,执行codeql
命令,可以看到下面的内容,就说明PATH
配置成功。
Usage: codeql <command> <argument>...
Create and query CodeQL databases, or work with the QL language.
GitHub makes this program freely available for the analysis of open-source
software and certain other uses, but it is not itself free software. Type
codeql --license to see the license terms.
--license Show the license terms for the CodeQL toolchain.
Common options:
-h, --help Show this help text.
-v, --verbose Incrementally increase the number of progress
messages printed.
-q, --quiet Incrementally decrease the number of progress
messages printed.
Some advanced options have been hidden; try --help -v for a fuller view.
Commands:
query Compile and execute QL code.
bqrs Get information from .bqrs files.
database Create, analyze and process CodeQL databases.
6. codeql命令
codeql resolve languages #显示数据库支持哪些语言
codeql resolve qlpacks #显示CLI可以找到哪些QL packs