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

时间:2019-05-11 21:02:08

标签: sonarqube

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

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

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

是否有可能实现我的用例?

1 个答案:

答案 0 :(得分:1)

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

New Code analysis only

  

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。

     

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

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