0

目前我有一个多分支管道作业,其中发生了构建,并且 cppcheck 用于分析代码。但是,多分支管道中没有可用的“构建后操作”选项卡来启用“发布 cppcheck 结果”。我一直在互联网上寻找答案,但我找不到。

只有通用、构建触发器、高级项目选项和管道选项卡可用(我检查了高级项目选项,没有选项可以在此处添加构建后部分)。

有没有办法使用 jenkinsfile 本身对 cppcheck.xml 发布进行硬编码?有没有我可以使用的语法来调用 cppcheck 插件来检查 xml 文件并发布它。这确实是一个紧急需求。我尝试了很多搜索以将 xml 转换为其他格式,例如 html 或 jnuit xml 。似乎没有任何效果。有人可以帮忙吗?

4

3 回答 3

7

为此,我将 Jenkins警告插件与自定义解析器一起使用。

从 3.8 版开始,您可以在 Jenkins 的系统配置部分动态定义新的解析器。只需导航到http://[jenkins-url]/configure并在Compiler Warnings部分创建一个新的解析器。UI应该是不言自明的

使用以下命令行生成一个文本文件,而不是 XML:

cppcheck --enable=all --template="{file},{line},{severity},{id},{message}" . 2> cppcheck.txt

这是模板参数的帮助:

--template='<text>'  Format the error messages. E.g.
                     '{file}:{line},{severity},{id},{message}' or
                     '{file}({line}):({severity}) {message}' or
                     '{callstack} {message}'
                     Pre-defined templates: gcc, vs, edit.

更多信息可以在 Cppcheck PDF手册中找到。

我正在使用这个正则表达式来解析文件:

^(.+),(\d+),(error|warning|style|performance|portability|information),(.*),(.*)$

更新

警告插件已终止使用。所有功能都已集成到警告下一代插件中。

使用这个新插件,无需自定义解析器即可支持 cppcheck。

使用以下命令行生成 XML 文件:

cppcheck --xml --xml-version=2 . 2> cppcheck.xml

在您的 Jenkinsfile 中,您需要添加此行以扫描文件以查找警告或问题:

scanForIssues tool: cppCheck(pattern: 'cppcheck.xml')
于 2017-11-09T05:50:56.013 回答
2

目前 CPPCheck 插件不支持管道。

但是,该插件有一个拉取请求

https://github.com/jenkinsci/cppcheck-plugin/pull/36

随意克隆它并进行更多测试。

于 2017-09-13T12:36:53.103 回答
1

2017 年 11 月,JamesD提到的 pull request被合并。

如果您查看 Pipeline 文档,现在有一个htmlpublisher命令。

请注意,xml 必须事先生成,并且下面使用的模式参数从%WORKSPACE%路径搜索文件。

stage('CppCheck') {
    steps {                       
        publishCppcheck pattern:'output/bin/Release/report_cppcheck.xml'
    }    
}
于 2018-10-02T21:34:53.087 回答