sonarqube - 如何只分析新添加的代码行?
问题描述
我想在我的项目中使用 SonarQube。该项目相当大,扫描整个文件需要很长时间。是否可以仅扫描上次提交中更改的文件,并仅根据更改的代码行提供报告?我想检查添加或修改的行是否会使项目质量最差,并且我不关心旧代码。
例如,如果 A 人创建了一个包含 9 个错误的文件,然后提交了更改 - 报告和质量门应该显示 9 个错误。然后 B 人编辑了同一个文件,添加了几行包含 2 个额外错误的行,然后提交了更改 - 报告应该显示最后 2 个错误,并且应该在最后一次更改时执行质量门(所以应该考虑最后 2 个错误)
我能够将扫描范围缩小到仅在上次提交中更改的文件,但报告是基于整个文件生成的。我有一个想法,只剪切更改的代码行,将它们粘贴到新文件并在文件上运行声纳扫描 - 但我几乎可以肯定 SonarQube 需要文件的整个上下文。
是否有可能以某种方式实现我的用例?
解决方案
不,这是不可能的。我看到很多类似的问题。以下是其中两个的答案:
G安坎贝尔:
分析将始终包括所有代码。为什么?当只更改一两个文件时,为什么要花时间分析所有这些?因为任何给定的变化都会产生深远的影响。我给你举两个例子:
我签入了弃用常用方法的更改。突然间,整个项目都应该提出关于使用过时代码的问题,但是因为我只分析了那个文件,所以没有提出新的问题。
在某些情况下,我修改了一个常用的方法以返回 null。突然间,所有取消引用返回值而不先对其进行空值检查的方法都面临着 NullPointerExceptions 的风险。但只分析了我更改的一个文件,因此没有提出任何“可能的 NPE”问题。更糟糕的是,直到碰巧触及每个单独的文件之后,它们才会被提升。
这就是为什么所有文件都包含在每个分析中的原因。
G安坎贝尔:
首先,SonarQube 界面和默认质量门旨在帮助您专注于新代码期。您不能阻止分析发现那些旧问题,但您可以决定只关注新更改的代码引发的问题。这意味着您基本上会忽略项目主页左侧的白色背景问题,而将注意力集中在右侧黄色背景上的新代码值上。我们将其称为修复泄漏,或者在编写代码时清洁。
其次,如果您有商业版,那么您可以使用分支和 PR 分析。使用 Short-Lived Branch (SLB) 和 PR 分析仍然涵盖所有文件,但 UI 中报告的所有内容都是 PR / SLB 中的更改。
理想情况下,你会结合这两个东西来确保你的新代码保持干净。
在这件事上的立场在过去几年没有改变,所以不要指望它会改变。
推荐阅读
- django - Django模板如何对简单标签返回的结果应用过滤器
- sitemap - 在 wordpress 中自动生成站点地图
- c - 将长整数(十进制)转换为基数 36 字符串(C 中的 strtol 反转函数)
- python - 如何按单元格值获取数据框列索引
- node.js - 如何在阿多尼斯查询生成器中只有一列不为空的情况下应用
- c - 在 STM32F407 CORTEX-M4 上比较浮点 NaN 失败
- r - 使用 R 计算基于时间戳和组变量的新变量
- javascript - Jquery UI 可调整大小不适用于空内容
- windows - Windows 上的 git hooks 权限问题
- angular - 使用 AWS CloudFront 将 Angular 6 上编写的站点传输到 AWS S3 的问题