我怎样才能使 cppcheck.xml 使用 jenkinsfile 本身在 jenkins 上发布?

Posted

技术标签:

【中文标题】我怎样才能使 cppcheck.xml 使用 jenkinsfile 本身在 jenkins 上发布?【英文标题】:How can i make the cppcheck.xml to be published on jenkins using the jenkinsfile itself? 【发布时间】:2017-09-13 11:49:36 【问题描述】:

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

只有常规、构建触发器、高级项目选项和管道选项卡可用(我检查了高级项目选项,没有添加后期构建部分的选项)。

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

【问题讨论】:

最后..我使用cppcheck_html属性创建了一个html报告并发布在jenkins上。 【参考方案1】:

为此,我将 Jenkins Warnings Plugin 与自定义解析器一起使用。

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

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

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

这里是 template 参数的帮助:

--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 manual 中找到。

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

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

更新

警告插件已终止使用。所有功能都已集成到Warnings Next Generation Plugin。

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

使用此命令行生成 XML 文件:

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

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

scanForIssues tool: cppCheck(pattern: 'cppcheck.xml')

【讨论】:

【参考方案2】:

目前 CPPCheck 插件不支持流水线。

然而,插件有一个拉取请求

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

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

【讨论】:

那很不幸。我会检查的。谢谢你的回答。【参考方案3】:

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

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

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

stage('CppCheck') 
    steps                        
        publishCppcheck pattern:'output/bin/Release/report_cppcheck.xml'
        

【讨论】:

以上是关于我怎样才能使 cppcheck.xml 使用 jenkinsfile 本身在 jenkins 上发布?的主要内容,如果未能解决你的问题,请参考以下文章

使用来自其他类的公共静态 HashTable 的同步方法。我怎样才能使这个方法线程安全?

我怎样才能使指南针的针头朝南?

断点被划掉了,我怎样才能使它们有效?

我怎样才能使禁用的字段变灰?

我怎样才能使 WinForms TabPage 标题宽度适合它的标题?

我正在使用 jQuery 进行图像预览。但是我无法发布预览后单击的数据。我怎样才能使它成为现实?