如何只分析新添加的代码行?

问题描述 投票:0回答:2

我想在我的项目中使用 SonarQube。该项目相当大,扫描整个文件需要很多时间。是否可以仅扫描上次提交中更改的文件,并仅根据更改的代码行提供报告? 我想检查添加或修改的行是否会使项目质量最差,并且我不关心旧代码。

例如,如果人员 A 创建了一个包含 9 个错误的文件,然后提交了更改 - 报告和质量门应显示 9 个错误。然后 B 编辑同一个文件,添加几行包含 2 个额外错误,然后提交更改 - 报告应显示最后 2 个错误,质量门应在最后更改上执行(因此应考虑最后 2 个错误)

我能够将扫描范围缩小到仅上次提交中更改的文件,但报告是基于整个文件生成的。我有一个想法,只剪切更改的代码行,将它们粘贴到新文件中,然后对文件运行声纳扫描 - 但我几乎确定 SonarQube 需要文件的整个上下文。

是否有可能以某种方式实现我的用例?

sonarqube
2个回答
13
投票

不,这是不可能的。我看到很多类似的问题。这是其中两个的答案:

仅限新代码分析

G 安·坎贝尔:

分析将始终包括所有代码。为什么?为什么要花时间 当只更改一两个文件时分析所有内容?因为 任何特定的变化都可能产生深远的影响。我给你两个 例子:

我签入了一项弃用常用方法的更改。突然, 关于使用已弃用代码的问题应该在整个组织中提出 项目,但因为我只分析了一个文件,所以没有新问题 举起。

我修改了一个常用的方法,在某些情况下返回 null。突然一切 不首先取消引用返回值的方法 对它进行 null 检查有 NullPointerException 的风险。但只有 分析了我更改的一个文件,因此没有一个“可能的 NPE” 问题被提出。更糟糕的是,直到每次之后它们才会被提出 个别文件碰巧被触及。

这就是每次分析中都包含所有文件的原因。

我想要对新签入代码进行声纳分析

G 安·坎贝尔:

首先,SonarQube 界面和默认质量门旨在帮助您集中注意力 关于新法典时期。你无法阻止分析发现这些 老问题,但您可以决定只关注提出的问题 关于新更改的代码。这意味着你基本上会忽略 项目主页左侧的问题带有白色 背景并重点关注黄色上方的新代码值 右边的背景。我们称之为“修复泄漏”,或者 交替地在编写代码时进行清理。 第二,如果你有商业版,那么分支和PR分析 可供您使用。通过短期分支 (SLB) 和 PR 分析 仍然涵盖所有文件,但 UI 中报告的只是 PR / SLB 中发生了变化。

理想情况下,您可以将这两件事结合起来,以确保您的新 代码保持干净。

在这件事上的立场多年来没有改变,所以不要指望它会改变。


0
投票

© www.soinside.com 2019 - 2024. All rights reserved.