@Override public int compare(CheckMessage left, CheckMessage right) { if (Objects.equal(left.getLine(), right.getLine())) { return left.getDefaultMessage().compareTo(right.getDefaultMessage()); } else if (left.getLine() == null) { return -1; } else if (right.getLine() == null) { return 1; } else { return left.getLine().compareTo(right.getLine()); } } };
public void noMore() { if (iterator.hasNext()) { CheckMessage next = iterator.next(); throw new AssertionError("\nNo more violations expected\ngot: at line " + next.getLine()); } }
@Override public void leaveFile(AstNode node) { Set<CheckMessage> violationsOnCurrentFile = new HashSet<CheckMessage>(getContext().peekSourceCode().getCheckMessages()); for (CheckMessage violation : violationsOnCurrentFile) { violationCounter.increment(getRelativePath(getContext().getFile()), violation.getChecker().getClass().getSimpleName(), violation.getLine() == null ? -1 : violation.getLine()); } }
private static TreeMultimap<Integer, String> collectIssues(final SourceCode sourceCode) { final TreeMultimap<Integer, String> issues = TreeMultimap.create(); for (final CheckMessage checkMessage : sourceCode.getCheckMessages()) { Integer line = checkMessage.getLine(); if (line == null) { line = 0; } issues.put(line, checkMessage.getText(Locale.US)); } return issues; } }
@Override public void visitEdge(AsmEdge edge) { if (asmClass != null && edge != null) { String internalNameTargetClass = edge.getTargetAsmClass().getInternalName(); if (!internalNames.containsKey(internalNameTargetClass)) { if (WildcardPattern.match(getToPatterns(), internalNameTargetClass)) { int sourceLineNumber = getSourceLineNumber(edge); logMessage(asmClass.getInternalName(), internalNameTargetClass, sourceLineNumber); } } else { int sourceLineNumber = getSourceLineNumber(edge); // we log only first occurrence with non-zero line number if exists Integer line = internalNames.get(internalNameTargetClass).getLine(); if ((line == null || line == 0) && sourceLineNumber != 0) { logMessage(asmClass.getInternalName(), internalNameTargetClass, sourceLineNumber); } } } }
private void saveViolations(File sonarFile, SourceFile squidFile) { Collection<CheckMessage> messages = squidFile.getCheckMessages(); if (messages != null) { for (CheckMessage message : messages) { Violation violation = Violation.create(annotationCheckFactory.getActiveRule(message.getChecker()), sonarFile) .setLineId(message.getLine()) .setMessage(message.getText(Locale.ENGLISH)); context.saveViolation(violation); } } }
public void reportIssues(SourceFile squidFile, Resource sonarFile) { if (squidFile.hasCheckMessages()) { Issuable issuable = resourcePerspectives.as(Issuable.class, sonarFile); Set<CheckMessage> messages = squidFile.getCheckMessages(); if(issuable != null) { for (CheckMessage checkMessage : messages) { Object check = checkMessage.getCheck(); RuleKey ruleKey = getRuleKey((JavaCheck) check); if (ruleKey != null) { Issue issue = issuable.newIssueBuilder() .ruleKey(ruleKey) .line(checkMessage.getLine()) .message(checkMessage.formatDefaultMessage()) .effortToFix(checkMessage.getCost()) .build(); issuable.addIssue(issue); } else { throw new IllegalStateException("Cannot find rule key for instance of "+check.getClass()); } } } // Remove from memory: messages.clear(); } }
/** * Saves issues form input file and source file. * * @param sonarFile input file. * @param squidFile source file. */ private void saveIssues(InputFile sonarFile, SourceFile squidFile) { Collection<CheckMessage> messages = squidFile.getCheckMessages(); messages.forEach(message -> { RuleKey ruleKey = checks.ruleKey((SquidAstVisitor<Grammar>) message.getCheck()); Issuable issuable = resourcePerspectives.as(Issuable.class, sonarFile); if (issuable != null) { Issue issue = issuable.newIssueBuilder() .ruleKey(ruleKey) .line(message.getLine()) .message(message.getText(Locale.ENGLISH)) .build(); issuable.addIssue(issue); } }); }
private void saveIssues(File sonarFile, SourceFile squidFile) { Collection<CheckMessage> messages = squidFile.getCheckMessages(); if (messages != null) { for (CheckMessage message : messages) { RuleKey ruleKey = checks.ruleKey((CodeVisitor) message.getCheck()); Issuable issuable = resourcePerspectives.as(Issuable.class, sonarFile); if (issuable != null) { Issue issue = issuable.newIssueBuilder() .ruleKey(ruleKey) .line(message.getLine()) .message(message.getText(Locale.ENGLISH)) .build(); issuable.addIssue(issue); } } } }
private void saveIssues(InputFile inputFile, SourceFile squidFile) { Collection<CheckMessage> messages = squidFile.getCheckMessages(); if (inputFile != null) { for (CheckMessage message : messages) { RuleKey ruleKey = checks.ruleKey((SquidCheck<ObjectiveCGrammar>) message.getCheck()); NewIssue issue = context.newIssue() .forRule(ruleKey); NewIssueLocation dil = new DefaultIssueLocation() .on(inputFile) .at(inputFile.selectLine(message.getLine())) .message(message.getText(Locale.ENGLISH)); issue.at(dil); if (message.getCost() != null) { issue.gap(message.getCost()); } issue.save(); } } }
private void saveIssues(InputFile inputFile, SourceFile squidFile) { Collection<CheckMessage> messages = squidFile.getCheckMessages(); if (inputFile != null) { for (CheckMessage message : messages) { RuleKey ruleKey = checks.ruleKey((SquidCheck<SwiftGrammar>) message.getCheck()); NewIssue issue = context.newIssue() .forRule(ruleKey); NewIssueLocation dil = new DefaultIssueLocation() .on(inputFile) .at(inputFile.selectLine(message.getLine())) .message(message.getText(Locale.ENGLISH)); issue.at(dil); if (message.getCost() != null) { issue.gap(message.getCost()); } issue.save(); } } }