忽略块

时间:2016-04-13 14:50:33

标签: sonarqube sonarqube-scan

我们在SQ上分析的Java文件包含自动生成代码的块。这样的块以

开头
// @UKA_GENERATION_START@

结束
// @UKA_GENERATION_END@

SQ应忽略它们之间的代码行。

网站http://docs.sonarqube.org/display/SONAR/Narrowing+the+Focus在“忽略块中的问题”一章中进行了描述。怎么做应该使用参数sonar.issue.ignore.block

在我们的环境中,我们使用Maven进行项目构建和分析。在项目的POM中,我们设置了以下参数:

<sonar.issue.ignore.block>e1</sonar.issue.ignore.block>
<sonar.issue.ignore.block.e1.beginBlockRegexp>\/\/ @UKA_GENERATION_START@</sonar.issue.ignore.block.e1.beginBlockRegexp>
<sonar.issue.ignore.block.e1.endBlockRegexp>\/\/ @UKA_GENERATION_END@</sonar.issue.ignore.block.e1.endBlockRegexp>                

(正则表达式匹配上面的字符串)。

不幸的是,SQ不会从分析中排除// @UKA_GENERATION_START@// @UKA_GENERATION_END@之间的代码块! 你知道吗,为什么?

2 个答案:

答案 0 :(得分:0)

您需要在UI中设置它,而不是在参数中设置它。在文档中已经有关于此的警告,但我已经使它更加引人注目。

答案 1 :(得分:0)

如何通过省略//字符来简化正则表达式?以下配置应该完全正常:

sonar.issue.ignore.block=e1
sonar.issue.ignore.block.e1.beginBlockRegexp=@UKA_GENERATION_START@
sonar.issue.ignore.block.e1.endBlockRegexp=@UKA_GENERATION_END@

如上配置,将忽略开始和结束标记之间的问题

// @UKA_GENERATION_START@

System.out.println("Hello world!");

// @UKA_GENERATION_END@

或者更详细......在以下示例中,第1行和第5行将引发声纳问题,而第2 - 4行将被忽略:

1:  System.out.println("Hello world!");
2:  System.out.println("Hello world!");   // @UKA_GENERATION_START@
3:  System.out.println("Hello world!");
4:  System.out.println("Hello world!");   // @UKA_GENERATION_END@
5:  System.out.println("Hello world!");