private static int line(Issue issue) { if (issue instanceof PreciseIssue) { return ((PreciseIssue) issue).primaryLocation().startLine(); } else if (issue instanceof FileIssue) { return 0; } else if (issue instanceof LineIssue) { return ((LineIssue) issue).line(); } else { throw new IllegalStateException("Unknown type of issue."); } }
private static List<Integer> secondary(Issue issue) { List<Integer> result = new ArrayList<>(); if (issue instanceof PreciseIssue) { result.addAll(((PreciseIssue) issue).secondaryLocations().stream() .map(IssueLocation::startLine) .collect(Collectors.toList())); } else if (issue instanceof FileIssue) { result.addAll(((FileIssue) issue).secondaryLocations().stream() .map(IssueLocation::startLine) .collect(Collectors.toList())); } return Ordering.natural().sortedCopy(result); }
public PreciseIssue addPreciseIssue(File file, Tree tree, String message) { PreciseIssue issue = new PreciseIssue(check, new IssueLocation(file, tree, message)); issueList.add(issue); return issue; }
private void savePreciseIssue(PreciseIssue issue) { NewIssue newIssue = sensorContext.newIssue(); InputFile primaryFile = Preconditions.checkNotNull(fileSystem.inputFile(fileSystem.predicates().is(issue.primaryLocation().file()))); newIssue .forRule(ruleKey(issue.check())) .at(newLocation(primaryFile, newIssue, issue.primaryLocation())); if (issue.cost() != null) { newIssue.gap(issue.cost()); } InputFile secondaryFile; for (IssueLocation secondary : issue.secondaryLocations()) { secondaryFile = fileSystem.inputFile(fileSystem.predicates().is(secondary.file())); if (secondaryFile == null) { secondaryFile = primaryFile; } newIssue.addLocation(newLocation(secondaryFile, newIssue, secondary)); } newIssue.save(); }
private void createIssue(AtKeywordTree tree) { PreciseIssue issue = addPreciseIssue( tree, "Move this @import rule before all the other at-rules and style rules."); precedingRules.stream().forEach(t -> issue.secondary(t, "Preceding rule")); }
private static Collection<CheckMessage> getCheckMessages(List<Issue> issues) { List<CheckMessage> checkMessages = new ArrayList<>(); for (Issue issue : issues) { CheckMessage checkMessage; if (issue instanceof FileIssue) { FileIssue fileIssue = (FileIssue) issue; checkMessage = new CheckMessage(fileIssue.check(), fileIssue.message()); } else if (issue instanceof LineIssue) { LineIssue lineIssue = (LineIssue) issue; checkMessage = new CheckMessage(lineIssue.check(), lineIssue.message()); checkMessage.setLine(lineIssue.line()); } else { PreciseIssue preciseIssue = (PreciseIssue) issue; checkMessage = new CheckMessage(preciseIssue.check(), preciseIssue.primaryLocation().message()); checkMessage.setLine(preciseIssue.primaryLocation().startLine()); } if (issue.cost() != null) { checkMessage.setCost(issue.cost()); } checkMessages.add(checkMessage); } return checkMessages; }
private void createIssue(Map.Entry<String, List<Tree>> entry) { PreciseIssue issue = addPreciseIssue(entry.getValue().get(0), "Remove this duplicated font family."); for (int i = 1; i < entry.getValue().size(); i++) { issue.secondary(entry.getValue().get(i), "Duplicated font family"); } }
private static Collection<CheckMessage> getCheckMessages(List<Issue> issues) { List<CheckMessage> checkMessages = new ArrayList<>(); for (Issue issue : issues) { CheckMessage checkMessage; if (issue instanceof FileIssue) { FileIssue fileIssue = (FileIssue) issue; checkMessage = new CheckMessage(fileIssue.check(), fileIssue.message()); } else if (issue instanceof LineIssue) { LineIssue lineIssue = (LineIssue) issue; checkMessage = new CheckMessage(lineIssue.check(), lineIssue.message()); checkMessage.setLine(lineIssue.line()); } else { PreciseIssue preciseIssue = (PreciseIssue) issue; checkMessage = new CheckMessage(preciseIssue.check(), preciseIssue.primaryLocation().message()); checkMessage.setLine(preciseIssue.primaryLocation().startLine()); } if (issue.cost() != null) { checkMessage.setCost(issue.cost()); } checkMessages.add(checkMessage); } return checkMessages; }
private void addIssues() { for (Map.Entry<String, List<UriTree>> url : urls.entrySet()) { if (url.getValue().size() > 1) { PreciseIssue issue = addPreciseIssue(url.getValue().get(0), "Keep only one definition of those duplicated background images."); for (int i = 1; i < url.getValue().size(); i++) { issue.secondary(url.getValue().get(i), "Duplicated background image"); } } } }
private static int line(Issue issue) { if (issue instanceof PreciseIssue) { return ((PreciseIssue) issue).primaryLocation().startLine(); } else if (issue instanceof FileIssue) { return 0; } else if (issue instanceof LineIssue) { return ((LineIssue) issue).line(); } else { throw new IllegalStateException("Unknown type of issue."); } }
private static List<Integer> secondary(Issue issue) { List<Integer> result = new ArrayList<>(); if (issue instanceof PreciseIssue) { result.addAll(((PreciseIssue) issue).secondaryLocations().stream() .map(IssueLocation::startLine) .collect(Collectors.toList())); } else if (issue instanceof FileIssue) { result.addAll(((FileIssue) issue).secondaryLocations().stream() .map(IssueLocation::startLine) .collect(Collectors.toList())); } return Ordering.natural().sortedCopy(result); }
public PreciseIssue addPreciseIssue(File file, Tree tree, String message) { PreciseIssue issue = new PreciseIssue(check, new IssueLocation(file, tree, message)); issueList.add(issue); return issue; }
private void addIssues() { for (Map.Entry<String, List<UriTree>> url : urls.entrySet()) { if (url.getValue().size() > 1) { PreciseIssue issue = addPreciseIssue(url.getValue().get(0), "Keep only one definition of those duplicated background images."); for (int i = 1; i < url.getValue().size(); i++) { issue.secondary(url.getValue().get(i), "Duplicated background image"); } } } }
private static String message(Issue issue) { if (issue instanceof PreciseIssue) { return ((PreciseIssue) issue).primaryLocation().message(); } else if (issue instanceof FileIssue) { return ((FileIssue) issue).message(); } else if (issue instanceof LineIssue) { return ((LineIssue) issue).message(); } else { throw new IllegalStateException("Unknown type of issue."); } }
private void addIssue(StatementBlockTree statementBlockTree, PropertyTree propertyTree) { PreciseIssue issue = addPreciseIssue(statementBlockTree, "Alphabetically order these rule's properties."); issue.secondary(propertyTree, "First unproperly ordered property"); }
private static String message(Issue issue) { if (issue instanceof PreciseIssue) { return ((PreciseIssue) issue).primaryLocation().message(); } else if (issue instanceof FileIssue) { return ((FileIssue) issue).message(); } else if (issue instanceof LineIssue) { return ((LineIssue) issue).message(); } else { throw new IllegalStateException("Unknown type of issue."); } }
private void addIssue(StatementBlockTree statementBlockTree, PropertyTree propertyTree) { PreciseIssue issue = addPreciseIssue(statementBlockTree, "Alphabetically order these rule's properties."); issue.secondary(propertyTree, "First unproperly ordered property"); }
private static void verifyIssue(TestIssue expected, Issue actual, File file) { if (line(actual) > expected.line()) { fail("Missing issue at line " + expected.line() + " in file " + file.getAbsolutePath()); } if (line(actual) < expected.line()) { fail("Unexpected issue at line " + line(actual) + ": \"" + message(actual) + "\"" + " in file " + file.getAbsolutePath()); } if (expected.message() != null) { assertThat(message(actual)).as("Bad message at line " + expected.line()).isEqualTo(expected.message()); } if (expected.effortToFix() != null) { assertThat(actual.cost()).as("Bad effortToFix at line " + expected.line()).isEqualTo(expected.effortToFix()); } if (expected.startColumn() != null) { assertThat(((PreciseIssue) actual).primaryLocation().startLineOffset() + 1).as("Bad start column at line " + expected.line()).isEqualTo(expected.startColumn()); } if (expected.endColumn() != null) { assertThat(((PreciseIssue) actual).primaryLocation().endLineOffset() + 1).as("Bad end column at line " + expected.line()).isEqualTo(expected.endColumn()); } if (expected.endLine() != null) { assertThat(((PreciseIssue) actual).primaryLocation().endLine()).as("Bad end line at line " + expected.line()).isEqualTo(expected.endLine()); } if (expected.secondaryLines() != null) { assertThat(secondary(actual)).as("Bad secondary locations at line " + expected.line()).isEqualTo(expected.secondaryLines()); } }
private void createIssue(AtKeywordTree tree) { PreciseIssue issue = addPreciseIssue( tree, "Move this @import rule before all the other at-rules and style rules."); precedingRules.stream().forEach(t -> issue.secondary(t, "Preceding rule")); }
private static void verifyIssue(TestIssue expected, Issue actual, File file) { if (line(actual) > expected.line()) { fail("Missing issue at line " + expected.line() + " in file " + file.getAbsolutePath()); } if (line(actual) < expected.line()) { fail("Unexpected issue at line " + line(actual) + ": \"" + message(actual) + "\"" + " in file " + file.getAbsolutePath()); } if (expected.message() != null) { assertThat(message(actual)).as("Bad message at line " + expected.line()).isEqualTo(expected.message()); } if (expected.effortToFix() != null) { assertThat(actual.cost()).as("Bad effortToFix at line " + expected.line()).isEqualTo(expected.effortToFix()); } if (expected.startColumn() != null) { assertThat(((PreciseIssue) actual).primaryLocation().startLineOffset() + 1).as("Bad start column at line " + expected.line()).isEqualTo(expected.startColumn()); } if (expected.endColumn() != null) { assertThat(((PreciseIssue) actual).primaryLocation().endLineOffset() + 1).as("Bad end column at line " + expected.line()).isEqualTo(expected.endColumn()); } if (expected.endLine() != null) { assertThat(((PreciseIssue) actual).primaryLocation().endLine()).as("Bad end line at line " + expected.line()).isEqualTo(expected.endLine()); } if (expected.secondaryLines() != null) { assertThat(secondary(actual)).as("Bad secondary locations at line " + expected.line()).isEqualTo(expected.secondaryLines()); } }