使用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 \

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...