将 cppcheck 集成到构建系统中
Posted
技术标签:
【中文标题】将 cppcheck 集成到构建系统中【英文标题】:integrate cppcheck into build system 【发布时间】:2017-10-04 09:43:48 【问题描述】:我想将 cppcheck 集成到我的项目中,以便在出现问题时自动生成失败。当然,这可能是 CI 工作的一部分,但目前我们在这方面存在一些技术问题。最简单的方法是将 cppcheck 集成到 Makefile 中。它也可以使用为项目配置的头目录。
是否有可能以及如何做到这一点?
CC=gcc
CFLAGS=-I.
DEPS =
OBJ = main.o
%.o: %.c $(DEPS)
$(CC) -c -o $@ $< $(CFLAGS)
hellomake: $(OBJ)
gcc -o $@ $^ $(CFLAGS)
我想对main.c
进行静态分析:
#include <stdio.h>
int main()
printf("hello\n");
return 0;
【问题讨论】:
请edit您的问题显示the code you have so far。您应该至少包含您遇到问题的代码的大纲(但最好是minimal reproducible example),然后我们可以尝试帮助解决具体问题。您还应该阅读How to Ask。 抱歉,我没听懂。你想在这里看到什么样的代码?这是关于 cppcheck 使用的一般问题。我知道如何从命令行运行 cppcheck,但是我不知道如何将它集成到构建过程中以检查我在 makefile 中配置的所有源并使用我在那里的相同包含目录。没有源代码,也没有我可以展示的示例。这是一个关于cppcheck使用的问题。 目前尚不清楚您遇到了哪些问题 - 也许带有您提出的check
规则的小型 Makefile 会有所帮助,并解释失败的原因(或者,成功的地方应该失败)。
添加了makefile的例子
【参考方案1】:
最简单的方法是让您的默认目标同时依赖于二进制文件和 cppcheck 的输出:
SOURCES = main.cpp
CPPCHECK = cppcheck
CHECKFLAGS = -q --error-exitcode=1
default: cppcheck.out.xml hellomake
.PHONY: default clean
cppcheck.out.xml: $(SOURCES)
$(CPPCHECK) $(CHECKFLAGS) $^ -xml >$@
hellomake: $(OBJ)
$(LINK.c) -o $@ $^
【讨论】:
以上是关于将 cppcheck 集成到构建系统中的主要内容,如果未能解决你的问题,请参考以下文章
使用 compile_commands.json 时的 Cppcheck 内联抑制