From b424f93de235499682f602df7f1541396d22dc16 Mon Sep 17 00:00:00 2001 From: =?utf8?q?S=C3=A9bastien=20Lesaint?= Date: Wed, 21 Oct 2015 14:57:55 +0200 Subject: [PATCH] move issue-filter plugin from it-core to SQ sources --- it/it-plugins/issue-filter-plugin/pom.xml | 39 +++++++++++++++++++ .../src/main/java/IssueFilterBeforeLine5.java | 29 ++++++++++++++ .../src/main/java/IssueFilterPlugin.java | 17 ++++++++ .../src/main/java/ModuleIssueFilter.java | 32 +++++++++++++++ it/it-plugins/pom.xml | 1 + 5 files changed, 118 insertions(+) create mode 100644 it/it-plugins/issue-filter-plugin/pom.xml create mode 100644 it/it-plugins/issue-filter-plugin/src/main/java/IssueFilterBeforeLine5.java create mode 100644 it/it-plugins/issue-filter-plugin/src/main/java/IssueFilterPlugin.java create mode 100644 it/it-plugins/issue-filter-plugin/src/main/java/ModuleIssueFilter.java diff --git a/it/it-plugins/issue-filter-plugin/pom.xml b/it/it-plugins/issue-filter-plugin/pom.xml new file mode 100644 index 00000000000..8df7470448d --- /dev/null +++ b/it/it-plugins/issue-filter-plugin/pom.xml @@ -0,0 +1,39 @@ + + + 4.0.0 + + + org.sonarsource.sonarqube + it-plugins + 5.3-SNAPSHOT + + + issue-filter-plugin + 1.0-SNAPSHOT + sonar-plugin + IT :: Issue Filter + IT :: Issue Filter + + + + org.sonarsource.sonarqube + sonar-plugin-api + ${apiVersion} + provided + + + + + + + org.sonarsource.sonar-packaging-maven-plugin + sonar-packaging-maven-plugin + 1.15 + true + + IssueFilterPlugin + + + + + diff --git a/it/it-plugins/issue-filter-plugin/src/main/java/IssueFilterBeforeLine5.java b/it/it-plugins/issue-filter-plugin/src/main/java/IssueFilterBeforeLine5.java new file mode 100644 index 00000000000..aaea16c5b69 --- /dev/null +++ b/it/it-plugins/issue-filter-plugin/src/main/java/IssueFilterBeforeLine5.java @@ -0,0 +1,29 @@ +import org.sonar.api.config.Settings; +import org.sonar.api.issue.Issue; +import org.sonar.api.issue.IssueFilter; + +/** + * This filter removes the issues that are on line < 5 + *

+ * Issue filters have been introduced in 3.6. + */ +public class IssueFilterBeforeLine5 implements IssueFilter { + + private final Settings settings; + + public IssueFilterBeforeLine5(Settings settings) { + this.settings = settings; + } + + @Override + public boolean accept(Issue issue) { + if (issue.componentKey() == null) { + throw new IllegalStateException("Issue component is not set"); + } + if (issue.ruleKey() == null) { + throw new IllegalStateException("Issue rule is not set"); + } + + return !settings.getBoolean("enableIssueFilters") || issue.line() == null || issue.line() >= 5; + } +} diff --git a/it/it-plugins/issue-filter-plugin/src/main/java/IssueFilterPlugin.java b/it/it-plugins/issue-filter-plugin/src/main/java/IssueFilterPlugin.java new file mode 100644 index 00000000000..19ff029ee78 --- /dev/null +++ b/it/it-plugins/issue-filter-plugin/src/main/java/IssueFilterPlugin.java @@ -0,0 +1,17 @@ +import java.util.Arrays; +import java.util.List; +import org.sonar.api.Properties; +import org.sonar.api.Property; +import org.sonar.api.PropertyType; +import org.sonar.api.SonarPlugin; + +@Properties(@Property( + key = "enableIssueFilters", + name = "Enable Issue Filters", + defaultValue = "false", + type = PropertyType.BOOLEAN)) +public class IssueFilterPlugin extends SonarPlugin { + public List getExtensions() { + return Arrays.asList(IssueFilterBeforeLine5.class, ModuleIssueFilter.class); + } +} diff --git a/it/it-plugins/issue-filter-plugin/src/main/java/ModuleIssueFilter.java b/it/it-plugins/issue-filter-plugin/src/main/java/ModuleIssueFilter.java new file mode 100644 index 00000000000..de0de20cf32 --- /dev/null +++ b/it/it-plugins/issue-filter-plugin/src/main/java/ModuleIssueFilter.java @@ -0,0 +1,32 @@ +import org.sonar.api.config.Settings; +import org.sonar.api.issue.Issue; +import org.sonar.api.issue.IssueFilter; +import org.sonar.api.rule.RuleKey; + +/** + * This filter removes the issues that are raised by Xoo plugin on modules. + *

+ * Issue filters have been introduced in 3.6. + */ +public class ModuleIssueFilter implements IssueFilter { + + private static final RuleKey ONE_ISSUE_PER_MODULE_RULEKEY = RuleKey.of("xoo", "OneIssuePerModule"); + + private final Settings settings; + + public ModuleIssueFilter(Settings settings) { + this.settings = settings; + } + + @Override + public boolean accept(Issue issue) { + if (issue.componentKey() == null) { + throw new IllegalStateException("Issue component is not set"); + } + if (issue.ruleKey() == null) { + throw new IllegalStateException("Issue rule is not set"); + } + + return !settings.getBoolean("enableIssueFilters") || !ONE_ISSUE_PER_MODULE_RULEKEY.equals(issue.ruleKey()); + } +} diff --git a/it/it-plugins/pom.xml b/it/it-plugins/pom.xml index 4d709ab02e2..36a13b04d49 100644 --- a/it/it-plugins/pom.xml +++ b/it/it-plugins/pom.xml @@ -45,5 +45,6 @@ settings-plugin sonar-fake-plugin sonar-subcategories-plugin + issue-filter-plugin -- 2.39.5