diff options
author | Julien HENRY <julien.henry@sonarsource.com> | 2018-11-09 11:19:38 +0100 |
---|---|---|
committer | sonartech <sonartech@sonarsource.com> | 2019-01-16 09:42:59 +0100 |
commit | aec83bafc952d4786fa9552fb8749c9efce517b5 (patch) | |
tree | 2ea35a254dd7c52b7387368152bf51c209ff5b46 /plugins/sonar-xoo-plugin | |
parent | 0348fbfef3d9268003ffda07a81b85ec9a35b97c (diff) | |
download | sonarqube-aec83bafc952d4786fa9552fb8749c9efce517b5.tar.gz sonarqube-aec83bafc952d4786fa9552fb8749c9efce517b5.zip |
SONAR-11465 Introduce a new annotation for project level extensions
and deprecate issue filters
Diffstat (limited to 'plugins/sonar-xoo-plugin')
3 files changed, 56 insertions, 5 deletions
diff --git a/plugins/sonar-xoo-plugin/src/main/java/org/sonar/xoo/XooPlugin.java b/plugins/sonar-xoo-plugin/src/main/java/org/sonar/xoo/XooPlugin.java index 5445c753ea2..ba3c4ef0528 100644 --- a/plugins/sonar-xoo-plugin/src/main/java/org/sonar/xoo/XooPlugin.java +++ b/plugins/sonar-xoo-plugin/src/main/java/org/sonar/xoo/XooPlugin.java @@ -28,6 +28,7 @@ import org.sonar.api.utils.Version; import org.sonar.xoo.coverage.ItCoverageSensor; import org.sonar.xoo.coverage.OverallCoverageSensor; import org.sonar.xoo.coverage.UtCoverageSensor; +import org.sonar.xoo.extensions.XooIssueFilter; import org.sonar.xoo.extensions.XooPostJob; import org.sonar.xoo.extensions.XooProjectBuilder; import org.sonar.xoo.global.GlobalSensor; @@ -154,7 +155,8 @@ public class XooPlugin implements Plugin { // Other XooProjectBuilder.class, - XooPostJob.class); + XooPostJob.class, + XooIssueFilter.class); if (context.getRuntime().getProduct() != SonarProduct.SONARLINT) { context.addExtension(MeasureSensor.class); diff --git a/plugins/sonar-xoo-plugin/src/main/java/org/sonar/xoo/extensions/XooIssueFilter.java b/plugins/sonar-xoo-plugin/src/main/java/org/sonar/xoo/extensions/XooIssueFilter.java new file mode 100644 index 00000000000..57f923fa797 --- /dev/null +++ b/plugins/sonar-xoo-plugin/src/main/java/org/sonar/xoo/extensions/XooIssueFilter.java @@ -0,0 +1,49 @@ +/* + * SonarQube + * Copyright (C) 2009-2018 SonarSource SA + * mailto:info AT sonarsource DOT com + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +package org.sonar.xoo.extensions; + +import org.sonar.api.batch.fs.TextRange; +import org.sonar.api.config.Configuration; +import org.sonar.api.scan.issue.filter.FilterableIssue; +import org.sonar.api.scan.issue.filter.IssueFilter; +import org.sonar.api.scan.issue.filter.IssueFilterChain; + +public class XooIssueFilter implements IssueFilter { + + private final Configuration config; + + public XooIssueFilter(Configuration config) { + this.config = config; + } + + + @Override + public boolean accept(FilterableIssue issue, IssueFilterChain chain) { + if (config.getBoolean("sonar.xoo.excludeAllIssuesOnOddLines").orElse(false) && isOdd(issue)) { + return false; + } + return chain.accept(issue); + } + + private static boolean isOdd(FilterableIssue issue) { + TextRange textRange = issue.textRange(); + return textRange != null && textRange.start().line() % 2 == 1; + } +} diff --git a/plugins/sonar-xoo-plugin/src/test/java/org/sonar/xoo/XooPluginTest.java b/plugins/sonar-xoo-plugin/src/test/java/org/sonar/xoo/XooPluginTest.java index 2fcf3a38458..3e4c6aa5a82 100644 --- a/plugins/sonar-xoo-plugin/src/test/java/org/sonar/xoo/XooPluginTest.java +++ b/plugins/sonar-xoo-plugin/src/test/java/org/sonar/xoo/XooPluginTest.java @@ -40,7 +40,7 @@ public class XooPluginTest { Plugin.Context context = new PluginContextImpl.Builder().setSonarRuntime(runtime).build(); new XooPlugin().define(context); assertThat(getExtensions(context)) - .hasSize(46) + .hasSize(47) .doesNotContain(XooBuiltInQualityProfilesDefinition.class); } @@ -50,7 +50,7 @@ public class XooPluginTest { Plugin.Context context = new PluginContextImpl.Builder().setSonarRuntime(runtime).build(); new XooPlugin().define(context); assertThat(getExtensions(context)) - .hasSize(49) + .hasSize(50) .contains(XooBuiltInQualityProfilesDefinition.class); } @@ -60,7 +60,7 @@ public class XooPluginTest { Plugin.Context context = new PluginContextImpl.Builder().setSonarRuntime(runtime).build(); new XooPlugin().define(context); assertThat(getExtensions(context)) - .hasSize(53) + .hasSize(54) .contains(OneExternalIssuePerLineSensor.class); } @@ -70,7 +70,7 @@ public class XooPluginTest { Plugin.Context context = new PluginContextImpl.Builder().setSonarRuntime(runtime).build(); new XooPlugin().define(context); assertThat(getExtensions(context)) - .hasSize(54) + .hasSize(55) .contains(OneExternalIssuePerLineSensor.class); } |