9: Replace all List<Issue>s with Set<Issue>s
This commit is contained in:
@@ -12,7 +12,7 @@ import com.bartek.esa.dispatcher.model.DispatcherActions;
|
||||
import com.bartek.esa.formatter.provider.FormatterProvider;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public class EsaMain {
|
||||
private final CliArgsParser cliArgsParser;
|
||||
@@ -37,13 +37,13 @@ public class EsaMain {
|
||||
.build();
|
||||
|
||||
CliArgsOptions options = cliArgsParser.parse(args);
|
||||
List<Issue> issues = methodDispatcher.dispatchMethod(options, dispatcherActions);
|
||||
Set<Issue> issues = methodDispatcher.dispatchMethod(options, dispatcherActions);
|
||||
formatterProvider.provide(options).format(issues);
|
||||
|
||||
exitWithErrorIfAnyIssueIsAnError(issues);
|
||||
}
|
||||
|
||||
private void exitWithErrorIfAnyIssueIsAnError(List<Issue> issues) {
|
||||
private void exitWithErrorIfAnyIssueIsAnError(Set<Issue> issues) {
|
||||
if(issues.stream().anyMatch(i -> i.getSeverity() == Severity.ERROR)) {
|
||||
System.exit(1);
|
||||
}
|
||||
|
||||
@@ -8,7 +8,6 @@ import com.bartek.esa.file.provider.FileProvider;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
@@ -25,13 +24,13 @@ public abstract class Analyser {
|
||||
this.fileProvider = fileProvider;
|
||||
}
|
||||
|
||||
public List<Issue> analyse(String source, Set<String> pluginCodes, Set<String> excludeCodes) {
|
||||
public Set<Issue> analyse(String source, Set<String> pluginCodes, Set<String> excludeCodes) {
|
||||
String newSource = prepareSources(source);
|
||||
File manifest = getManifest(newSource);
|
||||
Set<File> files = getFiles(newSource);
|
||||
Set<Plugin> selectedPlugins = getPlugins(pluginCodes, excludeCodes);
|
||||
|
||||
List<Issue> issues = pluginExecutor.executeForFiles(manifest, files, selectedPlugins);
|
||||
Set<Issue> issues = pluginExecutor.executeForFiles(manifest, files, selectedPlugins);
|
||||
performCleaning(newSource);
|
||||
return issues;
|
||||
}
|
||||
|
||||
@@ -5,11 +5,11 @@ import com.bartek.esa.core.model.object.Issue;
|
||||
import org.w3c.dom.Document;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
public abstract class BasePlugin implements Plugin {
|
||||
private List<Issue> issues = new ArrayList<>();
|
||||
private Set<Issue> issues = new HashSet<>();
|
||||
private Document manifest;
|
||||
private File file;
|
||||
|
||||
@@ -21,7 +21,7 @@ public abstract class BasePlugin implements Plugin {
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Issue> runForIssues() {
|
||||
public Set<Issue> runForIssues() {
|
||||
run(file);
|
||||
return issues;
|
||||
}
|
||||
|
||||
@@ -4,10 +4,10 @@ import com.bartek.esa.core.model.object.Issue;
|
||||
import org.w3c.dom.Document;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public interface Plugin {
|
||||
boolean supports(File file);
|
||||
void update(File file, Document manifest);
|
||||
List<Issue> runForIssues();
|
||||
Set<Issue> runForIssues();
|
||||
}
|
||||
|
||||
@@ -7,10 +7,9 @@ import org.w3c.dom.Document;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import static java.util.stream.Collectors.toList;
|
||||
import static java.util.stream.Collectors.toSet;
|
||||
|
||||
public class PluginExecutor {
|
||||
private final XmlHelper xmlHelper;
|
||||
@@ -20,20 +19,20 @@ public class PluginExecutor {
|
||||
this.xmlHelper = xmlHelper;
|
||||
}
|
||||
|
||||
public List<Issue> executeForFiles(File manifest, Set<File> files, Set<Plugin> plugins) {
|
||||
public Set<Issue> executeForFiles(File manifest, Set<File> files, Set<Plugin> plugins) {
|
||||
return files.stream()
|
||||
.map(file -> executeForFile(manifest, file, plugins))
|
||||
.flatMap(List::stream)
|
||||
.collect(toList());
|
||||
.flatMap(Set::stream)
|
||||
.collect(toSet());
|
||||
}
|
||||
|
||||
private List<Issue> executeForFile(File manifest, File file, Set<Plugin> plugins) {
|
||||
private Set<Issue> executeForFile(File manifest, File file, Set<Plugin> plugins) {
|
||||
Document xmlManifest = xmlHelper.parseXml(manifest);
|
||||
return plugins.stream()
|
||||
.peek(plugin -> plugin.update(file, xmlManifest))
|
||||
.filter(plugin -> plugin.supports(file))
|
||||
.map(Plugin::runForIssues)
|
||||
.flatMap(List::stream)
|
||||
.collect(toList());
|
||||
.flatMap(Set::stream)
|
||||
.collect(toSet());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ import com.bartek.esa.dispatcher.model.DispatcherActions;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public class MethodDispatcher {
|
||||
|
||||
@@ -15,7 +15,7 @@ public class MethodDispatcher {
|
||||
|
||||
}
|
||||
|
||||
public List<Issue> dispatchMethod(CliArgsOptions options, DispatcherActions actions) {
|
||||
public Set<Issue> dispatchMethod(CliArgsOptions options, DispatcherActions actions) {
|
||||
if(options.isSourceAnalysis()) {
|
||||
return actions.getSourceAnalysis().perform(
|
||||
options.getSourceAnalysisDirectory(),
|
||||
@@ -32,6 +32,6 @@ public class MethodDispatcher {
|
||||
);
|
||||
}
|
||||
|
||||
return Collections.emptyList();
|
||||
return Collections.emptySet();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,11 +2,10 @@ package com.bartek.esa.dispatcher.model;
|
||||
|
||||
import com.bartek.esa.core.model.object.Issue;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
@FunctionalInterface
|
||||
public interface Action {
|
||||
|
||||
List<Issue> perform(String source, Set<String> plugins, Set<String> excludes);
|
||||
Set<Issue> perform(String source, Set<String> plugins, Set<String> excludes);
|
||||
}
|
||||
|
||||
@@ -2,8 +2,8 @@ package com.bartek.esa.formatter.archetype;
|
||||
|
||||
import com.bartek.esa.core.model.object.Issue;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public interface Formatter {
|
||||
void format(List<Issue> issues);
|
||||
void format(Set<Issue> issues);
|
||||
}
|
||||
|
||||
@@ -7,8 +7,8 @@ import org.fusesource.jansi.Ansi;
|
||||
import org.fusesource.jansi.AnsiConsole;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static org.fusesource.jansi.Ansi.Color.*;
|
||||
@@ -24,7 +24,7 @@ public class ColorFormatter implements Formatter {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void format(List<Issue> issues) {
|
||||
public void format(Set<Issue> issues) {
|
||||
AnsiConsole.systemInstall();
|
||||
if(issues.isEmpty()) {
|
||||
Ansi noIssuesFound = ansi().fg(GREEN).a("No issues found.").reset();
|
||||
|
||||
@@ -5,8 +5,8 @@ import com.bartek.esa.core.model.object.Issue;
|
||||
import com.bartek.esa.formatter.archetype.Formatter;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class SimpleFormatter implements Formatter {
|
||||
@@ -18,7 +18,7 @@ public class SimpleFormatter implements Formatter {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void format(List<Issue> issues) {
|
||||
public void format(Set<Issue> issues) {
|
||||
if(issues.isEmpty()) {
|
||||
System.out.println("No issues found.");
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user