将 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 内联抑制

发布“永久”cppcheck 报告

静态代码检查工具 cppcheck 的使用(可分别集成到VS和QT Creator里)

如何在 gcc 编译器中构建 cppcheck 工具?

用于某些目标的 Cppcheck 与 CMake 集成

新构建的 Cppcheck-gui 会崩溃