【问题标题】:How to analyse only new added lines of code?如何只分析新添加的代码行?
【发布时间】:2019-05-13 14:54:04
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: sonarqube


    【解决方案1】:

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

    New Code analysis only:

    G 安坎贝尔:

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

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

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

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

    I want sonar analysis on newly checkin code:

    G 安坎贝尔:

    首先,SonarQube 界面和默认的 Quality Gate 旨在帮助您集中注意力 在新法典时期。你不能阻止分析捡起那些 老问题,但您可以决定只关注提出的问题 关于新更改的代码。这意味着您基本上会忽略 项目主页左侧的issues带有白色 背景并专注于黄色上的新代码值 右边的背景。我们称之为Fixing the Leak,或者 交替清洁代码。

    其次,如果你有商业版,那么分支和PR分析 可供您使用。使用 Short-Lived Branch (SLB) 和 PR 分析 仍然涵盖所有文件,但 UI 中报告的所有内容都是 在 PR / SLB 中更改。

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

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

    【讨论】:

    • 很高兴知道,我已经找了几天了,现在我确定了。谢谢你的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-18
    • 1970-01-01
    • 2015-07-19
    • 2016-08-01
    • 1970-01-01
    • 2021-10-02
    相关资源
    最近更新 更多