【问题标题】:Python - Difference between Sonarcube Vs pylintPython - Sonarcube 与 pylint 之间的区别
【发布时间】:2019-09-26 11:40:54
【问题描述】:
我正在为我将从事的一个新 Python 项目评估测试框架、lint 和代码覆盖率选项。
我选择 pytest 来满足测试需求。在阅读了一堆资源后,我很困惑何时使用 Sonarcube、Sonarlint、pylint 和 coverage.py。
SonarLint 和 Pylint 是否具有可比性?我什么时候使用 Sonarcube?
我需要能够在 Jenkins 构建中使用它。感谢您的帮助!
【问题讨论】:
标签:
python
python-3.x
lint
【解决方案1】:
在某种程度上,Sonarlint 和 pylint 具有可比性。
Sonarlint 是一个代码 linter,pylint 也是。我没有使用 sonarlint,但它似乎比 pylint 更深入地分析了代码。根据我的经验,pylint 只遵循一组规则(顺便说一下,您可以修改),而 sonarlint 会进一步分析代码的内部工作原理。然而,它们都是静态分析工具。
另一方面,Sonarcube 做得更多。 Sonarcube 是一个 CI/CD 工具,它运行静态 linter,但也向您显示代码气味,并进行安全分析。我所说的一切都是基于他们的网站。
如果您想运行 CI/CD 工作流程或脚本,可以使用 Sonarcube,但对于本地编码,sonarlint 就足够了。不过,Pylint 是传统方式。
【解决方案2】:
Nicholas 对 Pylint 与 Sonarlint 进行了很好的总结。
(我个人使用Sonarlint)
虽然这个问题比较老,但我想我会回答你问题的另一部分,以防其他人有同样的问题;互联网是永恒的。
Coverage.py 听起来会为您的包运行代码覆盖。然后,SonarQube 使用 coverage.py 制作的报告并使用它进行处理,并以 Sonar 团队认为必要的方式对其进行格式化。如果您想使用 SonarQube 进行代码覆盖,则需要 Coverage.py。但是,如果您只是想要 SonarQube 的代码气味,则不需要。
您还询问了何时使用 SonarQube、coverage.py 和 Jenkins。
在 Jenkins 中,您将创建一个包含多个阶段的管道。大致如下:
- 签出代码(由 Jenkins 作为第一步自动完成
- 构建供用户/开发人员使用的代码
- 运行单元测试
- 运行coverage.py
- 运行 SonarQube