如何解决使用CPPCHECK的Red Hat Enterprise LinuxRHEL上的C ++宏问题
在我任职期间,我们正在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 \
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。