我怎样才能使 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 的同步方法。我怎样才能使这个方法线程安全?