使用CPPCHECK的Red Hat Enterprise Linux(RHEL)上的C++宏出现问题



在我的工作中,我们正在Red Hat Enterprise Linux(RHEL(6上进行一个大型C++项目,即将成为RHEL 8。带有Bash外壳。我们有时使用Netbeans来编辑源代码,但我更喜欢使用vim。我们正在进行为期两周的DevOps和Agile冲刺,并使用Jenkins构建引擎和AccuRev进行源代码控制。每次在AccuRev中推广代码更改时,Jenkins都会自动启动代码库的新构建。作为构建的一部分,CPPCHECK用于对C++源代码进行静态代码分析。

在我们系统的一部分中,我们使用C++宏来定义单元测试脚本。宏没有完全定义,因为我们允许单元测试脚本开发人员自定义它们来进行单元测试。该系统运行良好,在g++编译器的编译时没有错误,在运行时也没有错误。

然而,当Jenkins进行构建,并使用CPPCHECK来分析代码时,它正在生成

错误id:unknownMcro

text:这里有一个未知的宏。需要配置。如果SCRIPT是一个宏,请对其进行配置。

以下是我们用来完成部分定义的C++宏的C++代码示例:

SCRIPT(SampleScript)
BODY()
{
cout << "SampleScript running." << endl;
}

END_SCRIPT()

SCRIPT、BODY和END_SCRIPT是包含文件中列出的C++宏,但尚未完全定义。在CPPCHECK的Github站点上,有一个使用-I选项的解决方案,但我尝试过,丢失的宏CPPCHECK错误仍然存在。

这是CPPCHECK命令及其参数,包括-I选项,但到目前为止,该命令仍在生成";unknownMcro";错误

cppcheck 
-I ./* 
-j 4 
--xml-version=2 

好的,我在Unix和Linux方面有多年的经验,但不知道下面的修复程序。修复方法是在CPPCHECK中使用-I选项,这是我正在做的,但我在Makefile中用星号做了以下操作:

cppcheck 
-I ./* 
-j 4 
--xml-version=2 

我刚刚从另一个人那里发现,星号*在Unix和Linux Makefile中无法识别,但在命令行中使用Bash和其他shell可以识别,这我已经知道很久了。因此,我从CPPCHECK调用中删除了星号,现在Jenkins构建中的C++代码不再出现CPPCHECK错误。

cppcheck 
-I ./ 
-j 4 
--xml-version=2 

最新更新