我想在我的项目中使用SonarQube。该项目很大,扫描整个文件需要很多时间。是否可以仅扫描最后一次提交中的更改文件,并仅基于更改的代码行提供报告? 我想检查是否添加或修改的行使项目质量最差,并且我不在乎旧代码。
例如,如果某人A创建了一个包含9个错误的文件,然后提交了更改,则报告和质量门应显示9个错误。然后,人员B编辑了同一文件,添加了几行包含2个其他错误的行,然后提交了更改-报告应显示最后2个错误,并应对最后一次更改执行质量检查(因此应考虑最后2个错误)
我能够将扫描范围缩小到上一次提交时仅更改的文件,但是报告是基于整个文件生成的。我有一个想法,就是只剪切更改的代码行,将其粘贴到新文件中,然后对该文件运行声纳扫描-但我几乎可以确定SonarQube需要整个文件上下文。
是否有可能实现我的用例?
答案 0 :(得分:1)
不,这是不可能的。我看到了很多类似的问题。这些是其中两个的答案:
G Ann Campbell:
分析将始终包含所有代码。为什么?为什么花时间去 仅更改一两个文件时分析所有内容?因为 任何给定的变化都会产生深远的影响。我给你两个 例子:
我签入了一个不推荐使用的更改。突然, 关于不赞成使用的代码的使用问题应该在整个 项目,但是因为我只分析了一个文件,所以没有新问题 提出。
在某些情况下,我修改了一个常用的方法以返回null。突然间 不先引用返回值的方法 空检查它有NullPointerExceptions的风险。但是只有 分析了我更改的一个文件,因此没有“可能的NPE” 提出了问题。更糟糕的是,直到每次 单个文件碰巧。
这就是为什么所有文件都包含在每个分析中的原因。
I want sonar analysis on newly checkin code:
G Ann Campbell:
首先,SonarQube界面和默认的Quality Gate旨在帮助您集中精力 在新守则期限内。您不能阻止分析者去选择那些 旧问题,但您可以决定只关注提出的问题 在新更改的代码上。这意味着您实际上将忽略 项目首页左侧的问题带有白色 背景,而是着重于黄色上方的“新代码”值 右边的背景。我们称此为Fixing the Leak,或者 交替清洁代码。
第二,如果您有商业版,则进行分支和PR分析 可供您使用。具有短期分支(SLB)和PR分析 仍然涵盖所有文件,但用户界面中报告的全部是 更改了PR / SLB。
理想情况下,您将两者结合起来以确保您的新 代码保持干净。
这件事的立场在过去几年中没有改变,所以不要指望它会改变。