我已成功设置 Cobertura 以通过 Jenkins 运行并生成覆盖率报告,现在我坚持配置 Violations 以报告 pep8 测试的结果。
现在我有了它,以便我使用批处理命令运行 PEP8,它会生成一个 .txt 文件,该文件存储所有最终出现在工作区中的违规行为。
我是否必须定义批处理命令来为这些违规创建一个 xml 文件以发送到 Report Violations Post-build 操作?如果是这样,我将如何定义该命令?
我已成功设置 Cobertura 以通过 Jenkins 运行并生成覆盖率报告,现在我坚持配置 Violations 以报告 pep8 测试的结果。
现在我有了它,以便我使用批处理命令运行 PEP8,它会生成一个 .txt 文件,该文件存储所有最终出现在工作区中的违规行为。
我是否必须定义批处理命令来为这些违规创建一个 xml 文件以发送到 Report Violations Post-build 操作?如果是这样,我将如何定义该命令?
正如 Vajk 所指出的,您不需要 XML 文件。您可以简单地将 pep8 实用程序的输出通过管道传输到一个文件,并将其用作 Jenkins 中的违规文件。
例如,在您的 Jenkins 构建配置中:
Build -> Execute Shell -> Command
你可以写:
pep8 path/to/code > pep8_report.txt
然后在:
Post-build Actions -> Report Violations -> pep8 / XML filename pattern
添加:
pep8_report.txt
请注意,即使 UI 要求提供 XML 文件并且该文件不是 XML 文件,这对我来说在 Jenkins 版本 1.499 上工作得很好。
我看到这是一个非常古老的问题,但我自己很难找到答案,所以希望这对其他人有帮助。
经过大量研究后,我发现 Jenkins Violations 插件不喜欢每行之前的 ./ 位,因此只需解析 pep8 的输出(它对 flake8 也有效)就可以解决问题:
pep8 . | 's|^./||' | tee pep.txt
其中重要的一点是 sed,它将字符串(^)开头的 ./ 更改为 '',有效地删除了它们
如果 pep8 命令的输出为非零,则 tee 位是避免 Jenkins 停止的一些解决方法。