move issue-filter plugin from it-core to SQ sources

This commit is contained in:
Sébastien Lesaint 2015-10-21 14:57:55 +02:00 committed by Julien Lancelot
parent 417e7c62ce
commit b424f93de2
5 changed files with 118 additions and 0 deletions

View File

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.sonarsource.sonarqube</groupId>
<artifactId>it-plugins</artifactId>
<version>5.3-SNAPSHOT</version>
</parent>
<artifactId>issue-filter-plugin</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>sonar-plugin</packaging>
<name>IT :: Issue Filter</name>
<description>IT :: Issue Filter</description>
<dependencies>
<dependency>
<groupId>org.sonarsource.sonarqube</groupId>
<artifactId>sonar-plugin-api</artifactId>
<version>${apiVersion}</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.sonarsource.sonar-packaging-maven-plugin</groupId>
<artifactId>sonar-packaging-maven-plugin</artifactId>
<version>1.15</version>
<extensions>true</extensions>
<configuration>
<pluginClass>IssueFilterPlugin</pluginClass>
</configuration>
</plugin>
</plugins>
</build>
</project>

View File

@ -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
* <p/>
* 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;
}
}

View File

@ -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);
}
}

View File

@ -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.
* <p/>
* 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());
}
}

View File

@ -45,5 +45,6 @@
<module>settings-plugin</module>
<module>sonar-fake-plugin</module>
<module>sonar-subcategories-plugin</module>
<module>issue-filter-plugin</module>
</modules>
</project>