Skip to content

Commit

Permalink
SONAR-6014 Drop deprecated violations
Browse files Browse the repository at this point in the history
  • Loading branch information
henryju committed Jan 7, 2015
1 parent c698fdc commit d3dd88a
Show file tree
Hide file tree
Showing 19 changed files with 76 additions and 642 deletions.
Expand Up @@ -37,7 +37,6 @@
import org.sonar.api.resources.Resource;
import org.sonar.api.rules.Violation;
import org.sonar.api.utils.SonarException;
import org.sonar.api.violations.ViolationQuery;
import org.sonar.batch.duplication.DuplicationCache;
import org.sonar.batch.duplication.DuplicationUtils;
import org.sonar.batch.scan.measure.MeasureCache;
Expand Down Expand Up @@ -207,22 +206,6 @@ public DecoratorContext saveMeasure(Metric metric, Double value) {
return this;
}

/**
* {@inheritDoc}
*/
@Override
public List<Violation> getViolations(ViolationQuery violationQuery) {
return sonarIndex.getViolations(violationQuery);
}

/**
* {@inheritDoc}
*/
@Override
public List<Violation> getViolations() {
return sonarIndex.getViolations(resource);
}

@Override
public Dependency saveDependency(Dependency dependency) {
checkReadOnly("addDependency");
Expand Down
60 changes: 0 additions & 60 deletions sonar-batch/src/main/java/org/sonar/batch/ViolationFilters.java

This file was deleted.

83 changes: 28 additions & 55 deletions sonar-batch/src/main/java/org/sonar/batch/index/DefaultIndex.java
Expand Up @@ -48,9 +48,7 @@
import org.sonar.api.rules.Violation;
import org.sonar.api.scan.filesystem.PathResolver;
import org.sonar.api.utils.SonarException;
import org.sonar.api.violations.ViolationQuery;
import org.sonar.batch.ProjectTree;
import org.sonar.batch.issue.DeprecatedViolations;
import org.sonar.batch.issue.ModuleIssues;
import org.sonar.batch.scan.measure.MeasureCache;
import org.sonar.batch.scan2.DefaultSensorContext;
Expand Down Expand Up @@ -85,7 +83,6 @@ public class DefaultIndex extends SonarIndex {
private Map<Resource, Map<Resource, Dependency>> outgoingDependenciesByResource = Maps.newLinkedHashMap();
private Map<Resource, Map<Resource, Dependency>> incomingDependenciesByResource = Maps.newLinkedHashMap();
private ProjectTree projectTree;
private final DeprecatedViolations deprecatedViolations;
private ModuleIssues moduleIssues;
private final MeasureCache measureCache;
private final ResourceKeyMigration migration;
Expand All @@ -95,14 +92,24 @@ public class DefaultIndex extends SonarIndex {

public DefaultIndex(ResourceCache resourceCache, DependencyPersister dependencyPersister,
LinkPersister linkPersister, EventPersister eventPersister, ProjectTree projectTree, MetricFinder metricFinder,
DeprecatedViolations deprecatedViolations, ResourceKeyMigration migration, MeasureCache measureCache) {
ResourceKeyMigration migration, MeasureCache measureCache) {
this.resourceCache = resourceCache;
this.dependencyPersister = dependencyPersister;
this.linkPersister = linkPersister;
this.eventPersister = eventPersister;
this.projectTree = projectTree;
this.metricFinder = metricFinder;
this.deprecatedViolations = deprecatedViolations;
this.migration = migration;
this.measureCache = measureCache;
}

public DefaultIndex(ResourceCache resourceCache, ProjectTree projectTree, MetricFinder metricFinder, ResourceKeyMigration migration, MeasureCache measureCache) {
this.resourceCache = resourceCache;
this.dependencyPersister = null;
this.linkPersister = null;
this.eventPersister = null;
this.projectTree = projectTree;
this.metricFinder = metricFinder;
this.migration = migration;
this.measureCache = measureCache;
}
Expand Down Expand Up @@ -264,7 +271,7 @@ public Dependency addDependency(Dependency dependency) {
addDependency(parentDependency);
}

if (registerDependency(dependency)) {
if (registerDependency(dependency) && dependencyPersister != null) {
dependencyPersister.saveDependency(currentProject, from, to, dependency, parentDependency);
}
return dependency;
Expand Down Expand Up @@ -361,51 +368,6 @@ Set<Dependency> getDependenciesBetweenProjects() {
//
//

/**
* {@inheritDoc}
*/
@Override
public List<Violation> getViolations(ViolationQuery violationQuery) {
Resource resource = violationQuery.getResource();
if (resource == null) {
throw new IllegalArgumentException("A resource must be set on the ViolationQuery in order to search for violations.");
}

if (!Scopes.isHigherThanOrEquals(resource, Scopes.FILE)) {
return Collections.emptyList();
}

Bucket bucket = buckets.get(resource);
if (bucket == null) {
return Collections.emptyList();
}

List<Violation> violations = deprecatedViolations.get(bucket.getResource().getEffectiveKey());
if (violationQuery.getSwitchMode() == ViolationQuery.SwitchMode.BOTH) {
return violations;
}

List<Violation> filteredViolations = Lists.newArrayList();
for (Violation violation : violations) {
if (isFiltered(violation, violationQuery.getSwitchMode())) {
filteredViolations.add(violation);
}
}
return filteredViolations;
}

private static boolean isFiltered(Violation violation, ViolationQuery.SwitchMode mode) {
return mode == ViolationQuery.SwitchMode.BOTH || isSwitchOff(violation, mode) || isSwitchOn(violation, mode);
}

private static boolean isSwitchOff(Violation violation, ViolationQuery.SwitchMode mode) {
return mode == ViolationQuery.SwitchMode.OFF && violation.isSwitchedOff();
}

private static boolean isSwitchOn(Violation violation, ViolationQuery.SwitchMode mode) {
return mode == ViolationQuery.SwitchMode.ON && !violation.isSwitchedOff();
}

@Override
public void addViolation(Violation violation, boolean force) {
Resource resource = violation.getResource();
Expand Down Expand Up @@ -446,12 +408,16 @@ public void addViolation(Violation violation, boolean force) {

@Override
public void addLink(ProjectLink link) {
linkPersister.saveLink(currentProject, link);
if (linkPersister != null) {
linkPersister.saveLink(currentProject, link);
}
}

@Override
public void deleteLink(String key) {
linkPersister.deleteLink(currentProject, key);
if (linkPersister != null) {
linkPersister.deleteLink(currentProject, key);
}
}

//
Expand All @@ -469,12 +435,17 @@ public List<Event> getEvents(Resource resource) {
if (reload == null) {
return Collections.emptyList();
}
if (eventPersister == null) {
throw new UnsupportedOperationException("Event are not available in preview mode");
}
return eventPersister.getEvents(reload);
}

@Override
public void deleteEvent(Event event) {
eventPersister.deleteEvent(event);
if (eventPersister != null) {
eventPersister.deleteEvent(event);
}
}

@Override
Expand All @@ -483,7 +454,9 @@ public Event addEvent(Resource resource, String name, String description, String
event.setDate(date);
event.setCreatedAt(new Date());

eventPersister.saveEvent(resource, event);
if (eventPersister != null) {
eventPersister.saveEvent(resource, event);
}
return null;
}

Expand Down

This file was deleted.

42 changes: 5 additions & 37 deletions sonar-batch/src/main/java/org/sonar/batch/issue/IssueFilters.java
Expand Up @@ -22,69 +22,37 @@
import org.sonar.api.BatchComponent;
import org.sonar.api.issue.batch.IssueFilter;
import org.sonar.api.issue.internal.DefaultIssue;
import org.sonar.api.rules.Violation;
import org.sonar.batch.ViolationFilters;

import javax.annotation.Nullable;

public class IssueFilters implements BatchComponent {

private final ViolationFilters deprecatedFilters;
private final DeprecatedViolations deprecatedViolations;
private final org.sonar.api.issue.IssueFilter[] exclusionFilters;
private final IssueFilter[] filters;

public IssueFilters(@Nullable ViolationFilters deprecatedFilters, @Nullable DeprecatedViolations deprecatedViolations, org.sonar.api.issue.IssueFilter[] exclusionFilters,
IssueFilter[] filters) {
this.deprecatedFilters = deprecatedFilters;
this.deprecatedViolations = deprecatedViolations;
public IssueFilters(org.sonar.api.issue.IssueFilter[] exclusionFilters, IssueFilter[] filters) {
this.exclusionFilters = exclusionFilters;
this.filters = filters;
}

public IssueFilters(@Nullable ViolationFilters deprecatedFilters, @Nullable DeprecatedViolations deprecatedViolations, IssueFilter[] filters) {
this(deprecatedFilters, deprecatedViolations, new org.sonar.api.issue.IssueFilter[0], filters);
}

public IssueFilters(@Nullable ViolationFilters deprecatedFilters, @Nullable DeprecatedViolations deprecatedViolations, org.sonar.api.issue.IssueFilter[] exclusionFilters) {
this(deprecatedFilters, deprecatedViolations, exclusionFilters, new IssueFilter[0]);
}

public IssueFilters(@Nullable ViolationFilters deprecatedFilters, @Nullable DeprecatedViolations deprecatedViolations) {
this(deprecatedFilters, deprecatedViolations, new org.sonar.api.issue.IssueFilter[0]);
}

/**
* Used by scan2
*/
public IssueFilters(org.sonar.api.issue.IssueFilter[] exclusionFilters, IssueFilter[] filters) {
this(null, null, exclusionFilters, filters);
}

public IssueFilters(org.sonar.api.issue.IssueFilter[] exclusionFilters) {
this(null, null, exclusionFilters, new IssueFilter[0]);
this(exclusionFilters, new IssueFilter[0]);
}

public IssueFilters(IssueFilter[] filters) {
this(null, null, new org.sonar.api.issue.IssueFilter[0], filters);
this(new org.sonar.api.issue.IssueFilter[0], filters);
}

public IssueFilters() {
this(null, null, new org.sonar.api.issue.IssueFilter[0], new IssueFilter[0]);
this(new org.sonar.api.issue.IssueFilter[0], new IssueFilter[0]);
}

public boolean accept(DefaultIssue issue, @Nullable Violation violation) {
public boolean accept(DefaultIssue issue) {
if (new DefaultIssueFilterChain(filters).accept(issue)) {
// Apply deprecated rules only if filter chain accepts the current issue
for (org.sonar.api.issue.IssueFilter filter : exclusionFilters) {
if (!filter.accept(issue)) {
return false;
}
}
if (deprecatedFilters != null && !deprecatedFilters.isEmpty() && deprecatedViolations != null) {
Violation v = violation != null ? violation : deprecatedViolations.toViolation(issue);
return !deprecatedFilters.isIgnored(v);
}
return true;
} else {
return false;
Expand Down

0 comments on commit d3dd88a

Please sign in to comment.