柳市网站,外贸公司取名,电脑网络,国外开源建站系统1.安装cppcheck
先从cppcheck官方网站下载cppcheck的安装包。
注#xff1a;
#xff08;1#xff09;官网地址#xff1a;https://sourceforge.net/projects/cppcheck
#xff08;2#xff09;截止2023年8月#xff0c;官方发布的最新版本是cppcheck-2.11-x64-Setup.…1.安装cppcheck
先从cppcheck官方网站下载cppcheck的安装包。
注
1官网地址https://sourceforge.net/projects/cppcheck
2截止2023年8月官方发布的最新版本是cppcheck-2.11-x64-Setup.msi。双击安装文件根据安装向导一步一步开始安装。
注本实例中安装路径是C:\Program Files\Cppcheck除了安装cppcheck之外还需要安装python并且获取到MISRA.txt文本文件。这部分内容不在这里详细说明假设你已经准备好了这些环境。
请确保Source Insight已经安装。下面开始进入正题。
2.关于配置文件misra.json
从1.88版本开始Cppcheck支持插件addon。
可以通过下面的Cppcheck命令调用插件addon
cppcheck --addonmisra.py somefile.c这将启动所有 Cppcheck 检查并额外调用所选插件提供的特定检查。
一些插件需要额外的参数。我们可以在misra.json文件中配置插件和参数。
{script: misra.py,args: [--rule-textsmisra.txt]
}然后可以在 Cppcheck 命令行上执行配置
cppcheck --addonmisra.json somefile.c默认情况下Cppcheck将在安装过程中指定的标准路径上搜索插件。你也可以直接设置此路径例如 cppcheck --addon”C:\opt\cppcheck\configurations\my_misra.json” somefile.c 这允许你为不同的项目创建和管理多个配置文件。
第一次使用插件会遇到很多问题。因为插件的配置文件misra.json很容易出错。
下面是一个可以成功运行的配置文件
{script: misra.py,args: [--rule-textsC:/opt/cppcheck/configurations/misra2012_rules.txt]
}注意–rule-texts***的路径名必须使用左斜线“/”而且路径名不能有空格
我们把misra.json和misra2012_rules.txt放在“C:\opt\cppcheck\configurations”目录下。你可根据实际需求决定把它们放在哪里。
实际使用过程中遇到几个问题。 1misra2012_rules.txt文件所在路径中不能有空格。否则cppcheck会找不到它们。例如“C:\Program Files\Cppcheck”存在空格不满足要求。但是misra.json文件所在的路径可以有空格。 2misra.json配置文件中–rule-texts***的路径名必须使用左斜线“/”如果用右斜线“\”则会报找不到文件。 3cppcheck命令执行时必须使用参数“–enableall”才能检查到MIRSA违规项否则检查结果为空白。下面是参数包含“–enableall”的例子
cppcheck --enableall --addonC:\opt\cppcheck\configurations\my_misra.json settings.c3.使用Cppcheck做静态测试的两个脚本
通过脚本来使用cppcheck做静态测试比GUI方便很多。
我们需要两个脚本。
1 ListGen.bat遍历指定目录下的.c文件生成文件列表文本文件。2 CppcheckReport.bat读取文件列表文件中的.c文件对其做静态测试把测试结果输出为.xml文件然后通过cppcheck-htmlreport这个python脚本从.xml文件转换得到html报告。
ListGen.bat内容
echo offREM 遍历目录名
set DIRECTORY_NAMElinux-4.10.7echo Get file name for .c in the directory: %DIRECTORY_NAME%REM 获取当前日期和时间
set DATETIME%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2%REM 构建txt文本文件的文件名
set SRC_FILELIST%DIRECTORY_NAME%_filelist_%DATETIME%.txtREM 显示文件名
echo The file list name is: %SRC_FILELIST%echo Waiting...REM 递归地遍历目录下所有的.c文件把文件名写入txt文本文件
for /r %DIRECTORY_NAME% %%i in (*.c) do echo %%i %SRC_FILELIST%pause实例中我们配置set DIRECTORY_NAMElinux-4.10.7。你可以根据需求修改遍历的目录名。执行此脚本结束后会生成一个以txt文件。然后请修改此txt文件从中删除不需要做静态测试的文件只保留需要做静态测试的文件。最后请把这个文件命名为“CppcheckReport.bat”脚本中与“set SRC_FILELIST“.\linux-4.10.7_filelist.txt””一样的名字。
CppcheckReport.bat内容
echo off
setlocalREM 获取当前日期和时间
set DATETIME%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2%REM 设置 SRC_CC_REPORT 目录路径
set SRC_CC_REPORTSRC_CC_REPORTREM 检查 SRC_CC_REPORT 目录是否存在如果不存在则创建
if not exist %SRC_CC_REPORT% (mkdir %SRC_CC_REPORT%
)REM 在 SRC_CC_REPORT 目录下创建 REPORT_YYYYMMDD_HHMMSS 子目录
set REPORT_SUB_DIR%SRC_CC_REPORT%\RPT_%DATETIME%
mkdir %REPORT_SUB_DIR%set CPPCHECK_PATHC:\Program Files\Cppcheck\cppcheck.exe
set ADDON_PATHC:\opt\cppcheck\configurations\misra.jsonset SRC_FILELIST.\linux-4.10.7_filelist.txtset OUTPUT_XMLstatic_analysis_output.xml
set CPPCHECK_HTMLREPORT_PATHC:\opt\cppcheck\htmlreport\cppcheck-htmlreport
set CPPCHECK_HTMLREPORT_TITLEMy Project%CPPCHECK_PATH% --file-list%SRC_FILELIST% --xml --platformwin64 --enableall --addon%ADDON_PATH% 2%OUTPUT_XML%python %CPPCHECK_HTMLREPORT_PATH% --file%OUTPUT_XML% --title%CPPCHECK_HTMLREPORT_TITLE% --report-dir%REPORT_SUB_DIR% --source-dir.REM 删除xml文件
del %OUTPUT_XML%pause
endlocal此脚本会使用cppcheck对“set SRC_FILELIST“.\linux-4.10.7_filelist.txt””文件中的每个文件做静态测试并将测试结果写到一个xml文件。静态测试结束后会调用python脚本工具cppcheck-htmlreport把xml转换为html报告。
注cppcheck-htmlreport工具在cppcheck源代码包里可以找到。4.参考
1Code check and html-report with cppcheck.链接https://dunterov.github.io/cppcheck/