private void checkForDuplications(ListMultimap<String, CallExpressionTree> selectors) { for (String selectorText : selectors.keySet()) { List<CallExpressionTree> references = selectors.get(selectorText); int numberOfDuplications = references.size(); if (numberOfDuplications > threshold) { String message = String.format(MESSAGE, selectorText, numberOfDuplications); PreciseIssue issue = addIssue(references.get(0), message) .cost((double) numberOfDuplications - threshold); references.subList(1, references.size()).forEach(issue::secondary); } } }
private void checkForIssues() { for (Map.Entry<String, StorageType> entry : storageTypes.entrySet()) { int cost = entry.getValue().count - 1; String message = String.format(MESSAGE, entry.getKey()); addIssue(entry.getValue().tree.object(), message).cost((double) cost); } }
private void addIssue(Tree expression, List<SyntaxToken> complexityOperators) { int complexity = complexityOperators.size(); String message = String.format(MESSAGE, complexity, max); PreciseIssue issue = addIssue(expression, message); for (SyntaxToken complexityOperator : complexityOperators) { issue.secondary(complexityOperator, "+1"); } issue.cost ((double) complexity - max); }
private void leaveScopeAndCheckNumberOfJump(SyntaxToken loopKeyword) { List<Tree> jumps = jumpTargets.pop().jumps; int jumpStatementNumber = jumps.size(); if (jumpStatementNumber > 1) { PreciseIssue issue = addIssue(loopKeyword, MESSAGE).cost((double) jumpStatementNumber - 1); for (Tree jump : jumps) { issue.secondary(new IssueLocation(jump)); } } }
private void raiseIssue(FunctionTree tree, List<Tree> complexityTrees) { int complexity = complexityTrees.size(); String message = String.format(MESSAGE, complexity, maximumFunctionComplexityThreshold); IssueLocation primaryIssueLocation = new IssueLocation(tree.firstToken(), tree.parameterClause(), message); PreciseIssue issue = addIssue(new PreciseIssue(this, primaryIssueLocation)); for (Tree complexityTree : complexityTrees) { issue.secondary(complexityTree, "+1"); } issue.cost((double) complexity - maximumFunctionComplexityThreshold); }
private void raiseIssue(CognitiveComplexity.ComplexityData complexityData, Tree function) { String message = String.format(MESSAGE, complexityData.complexity(), threshold); SyntaxToken primaryLocation = function.firstToken(); if (function.is(ARROW_FUNCTION)) { primaryLocation = ((ArrowFunctionTree) function).doubleArrowToken(); } PreciseIssue issue = addIssue(primaryLocation, message).cost(complexityData.complexity() - (double)threshold); complexityData.secondaryLocations().forEach(issue::secondary); }
private static void savePreciseIssue(SensorContext sensorContext, InputFile inputFile, RuleKey ruleKey, PreciseIssue issue) { NewIssue newIssue = sensorContext.newIssue(); newIssue .forRule(ruleKey) .at(newLocation(inputFile, newIssue, issue.primaryLocation())); if (issue.cost() != null) { newIssue.gap(issue.cost()); } for (IssueLocation secondary : issue.secondaryLocations()) { newIssue.addLocation(newLocation(inputFile, newIssue, secondary)); } newIssue.save(); }
private static void savePreciseIssue(SensorContext sensorContext, InputFile inputFile, RuleKey ruleKey, PreciseIssue issue) { NewIssue newIssue = sensorContext.newIssue(); newIssue .forRule(ruleKey) .at(newLocation(inputFile, newIssue, issue.primaryLocation())); if (issue.cost() != null) { newIssue.gap(issue.cost()); } for (IssueLocation secondary : issue.secondaryLocations()) { newIssue.addLocation(newLocation(inputFile, newIssue, secondary)); } newIssue.save(); }
public static void save(SensorContext sensorContext, InputFile inputFile, RuleKey ruleKey, PreciseIssue issue) { NewIssue newIssue = sensorContext.newIssue(); newIssue .forRule(ruleKey) .at(newLocation(inputFile, newIssue, issue.primaryLocation())); if (issue.cost() != null) { newIssue.effortToFix(issue.cost()); } for (IssueLocation secondary : issue.secondaryLocations()) { newIssue.addLocation(newLocation(inputFile, newIssue, secondary)); } newIssue.save(); }