【问题标题】:Disable Sonar duplications on Entity, DTO packages在实体、DTO 包上禁用声纳复制
【发布时间】:2012-06-20 04:57:36
【问题描述】:

有什么方法可以禁用 Sonar 中选定软件包的某些指标?我使用 Sonar 分析我的项目,并且在实体和 DTO 包中我有一些相同的代码 - 带有注释的相同字段 ID 等被 Sonar 报告为重复。这对我来说绝对没有意义,所以我想禁用它。我怎样才能做到这一点?使用全局排除选项会禁用所选包上的所有指标,但如何仅针对代码重复执行此操作?

【问题讨论】:

  • 我也面临声纳的“重复”问题,详细信息有助于轻松识别问题。

标签: java static-analysis sonarqube


【解决方案1】:

您可以使用标准"sonar.exclusions" 参数排除资源,或使用Switch Off violation plugin 排除“重复代码”违规。

请注意,第二个选项(使用关闭插件)仅在您使用嵌入“sqale-java:DuplicatedBlocksCheck”规则的SQALE plugin 时有效。

【讨论】:

  • 我有点不确定如何将这个关闭违规插件与默认声纳规则一起使用。它应该是什么样子? com.projetc.dto.*;"重复代码";* com.projetc.dto.*;duplicated_lines;* 这条规则的正确名称是什么?
  • 我已经更新了我的答案,以便更准确地了解关闭违规插件的使用。
  • 谢谢。我认为我做的一切都是正确的,但它似乎根本不起作用。当我尝试简单地输入: com.project.dto.*;*;* 没有任何变化。你有什么想法可能是什么问题?
  • 除非您排除相应的文件(使用“sonar.exclusions”),否则无法自行删除重复项。使用关闭违规插件将“静音”“sqale-java:DuplicatedBlocksCheck”违规(但我猜你没有使用 SQALE 插件,所以你可能没有这样的违规)。换句话说,唯一的解决方案是从分析中排除文件。
  • Switch off violation plugin 现已弃用。这些功能已被纳入 SorarQube 本身。
【解决方案2】:

使用较新的 SonarQube 安装,您可以使用 sonar.cpd.exclusions 仅从重复检查中排除某些文件。 见:https://docs.sonarqube.org/display/SONAR/Analysis+Parameters

例子:

sonar.cpd.exclusions=**/AssemblyInfo.cs,**/*.g.cs,**/Mappings/*.cs

【讨论】:

  • 我们在pom.xml文件中怎么做?
  • 很遗憾,此密钥不是文档的一部分。但是,当您导航到以下位置时,SonarQube 设置中会显示键 sonar.cpd.exclusions:项目设置 > 常规设置 > 分析范围。
  • 这是现代 Sonar 版本的正确答案——接受的答案是 2012 年唯一的解决方法。有人知道为什么该参数在文档中仍然不可见吗?
【解决方案3】:

您可以将这些文件添加到 pom.xml 中的属性中:

这是从代码覆盖中排除的:

<sonarcube.coverage.exclusions>
  your file paths
</sonarcube.coverage.exclusions>

这是为了排除重复代码:

<sonarcube.cpd.exclusions>
  your file paths
</sonarcube.cpd.exclusions>

【讨论】:

  • 我相信是sonar 而不是sonarcube ;)
【解决方案4】:

对我来说是:

<sonar.cpd.exclusions>
  com.simulate.java.dto\**
<\sonar.cpd.exclusions>

我有这样的多模块java项目:

- parent
--  project-a
--  project-b
--  project-c

在标签&lt;properties&gt;里面的父项目的pom.xml中我放了:

<properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.compiler.source>1.8</maven.compiler.source>

        <sonar.cpd.exclusions>
                com.simulate.java.vo\**,
                com.simulate.java.dto\**
        <\sonar.cpd.exclusions>
<\properties>

就这样。希望对你有所帮助。

【讨论】:

  • 嘿,@rlresende。您有机会提供详细信息吗?
  • 你好@f.khantsis 当然。我更好地描述了我的解决方案。希望对你有所帮助。
猜你喜欢
  • 1970-01-01
  • 2013-04-30
  • 2021-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-03
  • 2015-03-11
  • 2013-05-25
相关资源
最近更新 更多