private static int line(Issue issue) { if (issue instanceof PreciseIssue) { return ((PreciseIssue) issue).primaryLocation().startLine(); } else { return ((LineIssue) issue).line(); } }
private static String message(Issue issue) { if (issue instanceof PreciseIssue) { return ((PreciseIssue) issue).primaryLocation().message(); } else { return ((LineIssue) issue).message(); } }
@Override public void visitFile(Tree scriptTree) { JavaScriptFile javaScriptFile = getContext().getJavaScriptFile(); List<String> lines = CheckUtils.readLines(javaScriptFile); for (int i = 0; i < lines.size(); i++) { String line = lines.get(i); if (line.length() > 0 && Pattern.matches("[" + JavaScriptLexer.WHITESPACE + "]", line.subSequence(line.length() - 1, line.length()))) { addIssue(new LineIssue(this, i + 1, MESSAGE)); } } }
public static IssueEntry from(Issue issue, File file) { if (issue instanceof PreciseIssue) { final PreciseIssue preciseIssue = (PreciseIssue) issue; final IssueLocation primaryLocation = preciseIssue.primaryLocation(); String locationBlurb = "P[" + primaryLocation.startLine() + "/" + primaryLocation.startLineOffset() + "," + primaryLocation.endLine() + "/" + primaryLocation.endLineOffset() + "]"; return new IssueEntry(primaryLocation.startLine(), primaryLocation.endLine(), primaryLocation.message(), locationBlurb, file); } if (issue instanceof LineIssue) { final LineIssue lineIssue = (LineIssue) issue; return new IssueEntry(lineIssue.line(), lineIssue.line(), lineIssue.message(), "L[" + lineIssue.line() + "]", file); } if (issue instanceof FileIssue) { final FileIssue fileIssue = (FileIssue) issue; return new IssueEntry(0, 0, fileIssue.message(), "F", file); } throw new IllegalArgumentException("Unsupported issue type : " + issue.getClass()); }
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 static void saveLineIssue(SensorContext sensorContext, InputFile inputFile, RuleKey ruleKey, LineIssue issue) { NewIssue newIssue = sensorContext.newIssue(); NewIssueLocation primaryLocation = newIssue.newLocation() .message(issue.message()) .on(inputFile) .at(inputFile.selectLine(issue.line())); saveIssue(newIssue, primaryLocation, ruleKey, issue); }
private static void saveLineIssue(SensorContext sensorContext, InputFile inputFile, RuleKey ruleKey, LineIssue issue) { NewIssue newIssue = sensorContext.newIssue(); NewIssueLocation primaryLocation = newIssue.newLocation() .message(issue.message()) .on(inputFile) .at(inputFile.selectLine(issue.line())); saveIssue(newIssue, primaryLocation, ruleKey, issue); }
@Override public void visitScript(ScriptTree tree) { JavaScriptFile javaScriptFile = getContext().getJavaScriptFile(); List<String> lines = CheckUtils.readLines(javaScriptFile); for (int i = 0; i < lines.size(); i++) { if (lines.get(i).contains("\t")) { addIssue(new LineIssue(this, i + 1, MESSAGE)); break; } } } }
@Override public void visitScript(ScriptTree tree) { JavaScriptFile file = getContext().getJavaScriptFile(); List<String> lines = CheckUtils.readLines(file); for (int i = 0; i < lines.size(); i++) { int length = lines.get(i).length(); if (length > maximumLineLength) { addIssue(new LineIssue( this, i + 1, String.format(MESSAGE, length, maximumLineLength))); } } } }
@Override public void visitNode(Tree tree) { if (pattern == null && !Strings.isNullOrEmpty(regularExpression)) { try { pattern = Pattern.compile(regularExpression, Pattern.DOTALL); } catch (RuntimeException e) { throw new IllegalArgumentException("Unable to compile regular expression: " + regularExpression, e); } } if (pattern != null) { SyntaxToken token = (SyntaxToken) tree; for (SyntaxTrivia trivia : token.trivias()) { if (pattern.matcher(trivia.text()).matches()) { addIssue(new LineIssue(this, trivia.line(), message)); } } } }
public void visitToken(SyntaxToken token) { for (SyntaxTrivia trivia : token.trivias()) { String comment = trivia.text(); if (StringUtils.containsIgnoreCase(comment, pattern)) { String[] lines = comment.split("\r\n?|\n"); for (int i = 0; i < lines.length; i++) { if (StringUtils.containsIgnoreCase(lines[i], pattern) && !isLetterAround(lines[i], pattern)) { check.addIssue(new LineIssue(check, trivia.line() + i, message)); } } } } }