静态检查工具codechecker运用简介

codechecker是一款开源的静态检查工具。

这里是github地址:https://github.com/Ericsson/codechecker

这是一款基于Clang Static Analyzer 和 Clang Tidy的工具。

codechecker的工作流程

开发提交代码后,在命令行里面运行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版本

目前codechecker已经开发到6.16.0版本:https://github.com/Ericsson/codechecker/releases/

 这个release网页可以查看所有的发布的版本的新feature和修复的bugs。

CodeChecker有详细的帮助文档,都在docs下面。

codechecker/README.md

codechecker加速方法

首先我们要分析下codechecker的耗时点,主要在build和analyze两部分耗时。

build部分,我们可以使用dry-run的方式来跑。

make all -Bnwk

make的这几个参数可以自行查阅,-B代表每次都全部重新编译所有的target,-n是不进行真实的编译,但是会把编译命令打出来,-w是输出运行makefile之前和之后的信息,对于跟踪嵌套式调用时很有用,-k是keep-going, 出错不停止。

analyze部分,我比较推荐用skipfile

可以参考codechecker网站文档:

https://github.com/Ericsson/codechecker/blob/master/docs/analyzer/user_guide.md

 里面有介绍如何创建skipfile。

如果你只想检查某些文件,可以创建这样的skipfile,其中*代表相对路径。+代表你想检查某个文件,-代表你想跳过检查的文件,codechecker会从上往下匹配。

+*/my_project/my_lib_to_skip/important_file.cpp
-*

 创建完skipfile再用带skipfile的命令运行就可以啦。

CodeChecker analyze --report-hash context-free-v2 --skip ./skipfiles -j $(nproc) \
  record.json -o ./reports
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值