问题描述
在我任职期间,我们正在Red Hat Enterprise Linux(RHEL)6上进行一个大型C ++项目,即将成为具有Bash shell的RHEL 8。有时我们使用Netbeans来编辑源代码,但我更喜欢使用vim。我们正在进行为期两周的冲刺,进行DevOps和Agile,并使用带有AccuRev的Jenkins构建引擎进行源代码控制。每次在AccuRev中提出代码更改时,Jenkins都会自动启动新的代码库。作为该构建的一部分,CPPCHECK用于对C ++源代码进行静态代码分析。
在我们系统的一部分中,我们使用C ++宏定义单元测试脚本。宏尚未完全定义,因为我们允许单元测试脚本开发人员自定义它们以进行单元测试。该系统运行良好,在使用g ++编译器进行编译时没有错误,并且在运行时也没有错误。
但是,当詹金斯(Jenkins)进行构建并使用CPPCHECK分析代码时,它正在生成
错误ID:unknownMacro
text:这里某个地方有一个未知的宏。需要配置。如果SCRIPT是宏,请对其进行配置。
这是我们用来完成部分定义的C ++宏的C ++代码的示例:
SCRIPT(SampleScript)
BODY()
{
cout << "SampleScript running." << endl;
}
END_SCRIPT()
SCRIPT,BODY和END_SCRIPT是包含文件中列出的C ++宏,但未完全定义。在使用CPPCHECK的Github站点上,可以使用-I选项来解决此问题,但是我尝试过这样做,并且仍然缺少宏CPPCHECK错误。
这是CPPCHECK命令及其参数,包括-I选项,但到目前为止,该命令仍在生成“ unknownMacro”错误。
cppcheck \
-I ./* \
-j 4 \
--xml-version=2 \
解决方法
好的,我在Unix和Linux上有多年的经验,但是不知道以下修复程序。解决的方法是将-I选项与CPPCHECK一起使用,但我在Makefile中使用星号进行了以下操作:
cppcheck \
-I ./* \
-j 4 \
--xml-version=2 \
我刚刚从另一个人那里发现,星号*在Unix和Linux Makefile中未被识别,但是在命令行中使用Bash和我早就知道的其他shell可以识别。因此,我从CPPCHECK调用中删除了星号,现在Jenkins构建中的C ++代码不再出现CPPCHECK错误。
cppcheck \
-I ./ \
-j 4 \
--xml-version=2 \