codechecker是一款开源的静态检查工具。
这里是github地址:https://github.com/Ericsson/codechecker
这是一款基于Clang Static Analyzer 和 Clang Tidy的工具。
开发提交代码后,在命令行里面运行codechecker工具:
大概命令分为两部分:
1. codechecker logging部分,就是记录哪些文件参与了编译。
CodeChecker log -b "make 命令" -o record.json
这个过程生成的将会是一个json,是一个包含了多个字典的列表,其实就是多个文件的编译记录。如下:
[ { "directory": "文件路径", "command": “编译命令”, "file": "文件名" }, ... ]
2. codechecker analyze部分,就是根据前面生成的json文件进行分析。
这里我们使用的report-hash是context-free-v2的,--skip ./skipfiles 这个也是可选的,可以让你跳过一些文件的检查,-j 指定了分析时占用的系统核数,record.json就是我们前面生成的json文件,-o指定了分析生成的report目录。可以用绝对路径,此处使用的是相对路径。
CodeChecker analyze --report-hash context-free-v2 --skip ./skipfiles -j $(nproc) \ record.json -o ./reports
3. codechecker parse 部分,这个可以在本地直接生成所有defects的报告。
网页的:CodeChecker parse -e html ./reports -o report.html 或者 文本的:CodeChecker parse ./reports >> report.txt
4. codechecker store部分
如果搭建了codechecker server的话,可以将步骤2生成的report 保存到server上,可以更好的可视化。codechecker的可视化做的还是非常不错的。
codechecker_url 就是server的url, report_name就是在server上的report显示的名字。--tag可以加上代码标签。
CodeChecker store ./reports --url $codechecker_url --name $report_name --tag $short_sha1
这些都是可以写到配置文件里的。
目前codechecker已经开发到6.16.0版本:https://github.com/Ericsson/codechecker/releases/
这个release网页可以查看所有的发布的版本的新feature和修复的bugs。
CodeChecker有详细的帮助文档,都在docs下面。
codechecker/README.md
codechecker增量分析
接下来主要介绍一下最近研究的codechecker的增量跑法。未完待续。