忽略块中的问题
Ignore Issues in Blocks
我们在 SQ 上分析的 Java 文件包含自动生成的代码块。这样的块以
开头
// @UKA_GENERATION_START@
并以
结尾
// @UKA_GENERATION_END@
它们之间的代码行应该被 SQ 忽略。
站点 http://docs.sonarqube.org/display/SONAR/Narrowing+the+Focus 在章节 'Ignore Issues in Blocks' 中描述了如何完成。应使用参数 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@
之间的代码块!
你有什么想法,为什么?
您需要在 UI 中进行设置,而不是在参数中进行设置。文档中已经有关于此的警告,但我让它更引人注目。
如何通过省略 //
个字符来简化您的正则表达式?以下配置应该可以正常工作:
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!");
我们在 SQ 上分析的 Java 文件包含自动生成的代码块。这样的块以
开头// @UKA_GENERATION_START@
并以
结尾// @UKA_GENERATION_END@
它们之间的代码行应该被 SQ 忽略。
站点 http://docs.sonarqube.org/display/SONAR/Narrowing+the+Focus 在章节 'Ignore Issues in Blocks' 中描述了如何完成。应使用参数 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@
之间的代码块!
你有什么想法,为什么?
您需要在 UI 中进行设置,而不是在参数中进行设置。文档中已经有关于此的警告,但我让它更引人注目。
如何通过省略 //
个字符来简化您的正则表达式?以下配置应该可以正常工作:
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!");