如何确保错误代码不会在CI流程中生成?

问题描述 投票:0回答:1

我正在编写一些C ++库,并且已经使用一些CI(连续集成)过程来确保功能正常工作。该构建基于Makefile,因此CI脚本包含make test行。该目标将运行自动化测试(例如,使用Catch),并且只有在成功的情况下才能通过构建。

良好做法要求用户代码对库的错误使用应该触发编译错误,而不是运行时错误。因此,我进行了大量静态检查。

但是,我想确保在自动测试过程中确实如此(错误地使用该库的用户代码将无法生成)。

因此,我建立了一个文件夹,其中包含几个.cpp文件,每个文件都表明该库的用法不正确,因此每个文件都应该无法构建。

我的问题是,如果我在我的makefile中添加一个新目标来构建这些目标,它将在第一次失败后返回。

我要确保all

这些文件无法生成,并且仅在这种情况下返回0。

我如何编写执行此操作的目标?

一些(不起作用的)代码,将在第一次失败后返回。

SRC_FILES := $(wildcard *.cpp)
OBJ_FILES := $(patsubst %.cpp, %.o, $(SRC_FILES))

all: $(OBJ_FILES)
    @echo "done"

%.o: %.cpp
    $(CXX) -o $@ -c $<

如果我基本上忽略故障(在-之前的行,我将无法检查所有文件均不正确。

我正在编写一些C ++库,并且已经使用一些CI(连续集成)过程来确保功能正常工作。该构建基于makefile,因此CI脚本包含一条make测试行。那...

c++ testing makefile continuous-integration gnu-make
1个回答
0
投票

如果要使用相同的模式规则,唯一的方法是通过递归make并传递-k标志,如下所示:

© www.soinside.com 2019 - 2024. All rights reserved.