private boolean importIssue(Issue issue) { NewExternalIssue externalIssue = context.newExternalIssue() .engineId(issue.engineId) .ruleId(issue.ruleId) .severity(Severity.valueOf(issue.severity)) .type(RuleType.valueOf(issue.type)); if (issue.effortMinutes != null) { externalIssue.remediationEffortMinutes(Long.valueOf(issue.effortMinutes)); } NewIssueLocation primary = fillLocation(context, externalIssue.newLocation(), issue.primaryLocation); if (primary != null) { knownFiles.add(issue.primaryLocation.filePath); externalIssue.at(primary); if (issue.secondaryLocations != null) { for (Location l : issue.secondaryLocations) { NewIssueLocation secondary = fillLocation(context, externalIssue.newLocation(), l); if (secondary != null) { externalIssue.addLocation(secondary); } } } externalIssue.save(); return true; } else { unknownFiles.add(issue.primaryLocation.filePath); return false; } }
private static void createIssues(InputFile file, SensorContext context) { for (int line = 1; line <= file.lines(); line++) { NewExternalIssue newIssue = context.newExternalIssue(); newIssue .engineId(ENGINE_ID) .ruleId(RULE_ID) .at(newIssue.newLocation() .on(file) .at(file.selectLine(line)) .message("This issue is generated on each line")) .severity(Severity.valueOf(SEVERITY)) .remediationEffortMinutes(EFFORT) .type(TYPE) .save(); } } }
private static void createIssues(InputFile file, SensorContext context) { for (int line = 1; line <= file.lines(); line++) { NewExternalIssue newIssue = context.newExternalIssue(); newIssue .engineId(ENGINE_ID) .ruleId(RULE_ID) .at(newIssue.newLocation() .on(file) .at(file.selectLine(line)) .message("This issue is generated on each line and the rule is predefined")) .severity(Severity.valueOf(SEVERITY)) .remediationEffortMinutes(EFFORT) .type(TYPE) .save(); } } }
private static void createIssues(InputFile file, SensorContext context) { for (int line = 1; line <= file.lines(); line++) { NewExternalIssue newIssue = context.newExternalIssue(); newIssue .engineId(OnePredefinedRuleExternalIssuePerLineSensor.ENGINE_ID) .ruleId(OnePredefinedRuleExternalIssuePerLineSensor.RULE_ID) .at(newIssue.newLocation() .on(file) .at(file.selectLine(line)) .message("This issue is generated on each line and the rule is predefined")) .severity(Severity.valueOf(OnePredefinedRuleExternalIssuePerLineSensor.SEVERITY)) .remediationEffortMinutes(OnePredefinedRuleExternalIssuePerLineSensor.EFFORT) .type(OnePredefinedRuleExternalIssuePerLineSensor.TYPE) .save(); // Even if the issue is on a predefined rule, the sensor is declaring an adHoc rule => this info should be ignored context.newAdHocRule() .engineId(OnePredefinedRuleExternalIssuePerLineSensor.ENGINE_ID) .ruleId(OnePredefinedRuleExternalIssuePerLineSensor.RULE_ID) .name("An ad hoc rule") .description("blah blah") .severity(Severity.BLOCKER) .type(RuleType.BUG) .save(); } } }
private boolean importIssue(Issue issue) { NewExternalIssue externalIssue = context.newExternalIssue() .engineId(issue.engineId) .ruleId(issue.ruleId) .severity(Severity.valueOf(issue.severity)) .type(RuleType.valueOf(issue.type)); if (issue.effortMinutes != null) { externalIssue.remediationEffortMinutes(Long.valueOf(issue.effortMinutes)); } NewIssueLocation primary = fillLocation(context, externalIssue.newLocation(), issue.primaryLocation); if (primary != null) { knownFiles.add(issue.primaryLocation.filePath); externalIssue.at(primary); if (issue.secondaryLocations != null) { for (Location l : issue.secondaryLocations) { NewIssueLocation secondary = fillLocation(context, externalIssue.newLocation(), l); if (secondary != null) { externalIssue.addLocation(secondary); } } } externalIssue.save(); return true; } else { unknownFiles.add(issue.primaryLocation.filePath); return false; } }
private static void saveIssue(SensorContext context, Issue issue, Set<String> unresolvedInputFiles, boolean engineIdIsSupported) { if (isEmpty(issue.ruleKey) || isEmpty(issue.filePath) || isEmpty(issue.message)) { LOG.debug("Missing information for ruleKey:'{}', filePath:'{}', message:'{}'", issue.ruleKey, issue.filePath, issue.message); return; } InputFile inputFile = context.fileSystem().inputFile(context.fileSystem().predicates().hasPath(issue.filePath)); if (inputFile == null) { unresolvedInputFiles.add(issue.filePath); return; } NewExternalIssue newExternalIssue = context.newExternalIssue(); newExternalIssue .type(RuleType.VULNERABILITY) .severity(toSonarQubeSeverity(issue.severity, issue.confidence)) .remediationEffortMinutes(DEFAULT_CONSTANT_DEBT_MINUTES); NewIssueLocation primaryLocation = newExternalIssue.newLocation() .message(issue.message) .on(inputFile); if (issue.lineNumber != null) { primaryLocation.at(inputFile.selectLine(issue.lineNumber)); } newExternalIssue.at(primaryLocation); if (engineIdIsSupported) { newExternalIssue.engineId(LINTER_KEY).ruleId(issue.ruleKey); } else { // Call the deprecated "forRule" method to support SQ 7.2 newExternalIssue.forRule(RuleKey.of(LINTER_KEY, issue.ruleKey)); } newExternalIssue.save(); }
private static void saveIssue(SensorContext context, Issue issue, Set<String> unresolvedInputFiles, boolean engineIdIsSupported) { if (isEmpty(issue.ruleKey) || isEmpty(issue.filePath) || isEmpty(issue.message)) { LOG.debug("Missing information for ruleKey:'{}', filePath:'{}', message:'{}'", issue.ruleKey, issue.filePath, issue.message); return; } InputFile inputFile = context.fileSystem().inputFile(context.fileSystem().predicates().hasPath(issue.filePath)); if (inputFile == null) { unresolvedInputFiles.add(issue.filePath); return; } NewExternalIssue newExternalIssue = context.newExternalIssue(); newExternalIssue .type(RuleType.VULNERABILITY) .severity(toSonarQubeSeverity(issue.severity, issue.confidence)) .remediationEffortMinutes(DEFAULT_CONSTANT_DEBT_MINUTES); NewIssueLocation primaryLocation = newExternalIssue.newLocation() .message(issue.message) .on(inputFile); if (issue.lineNumber != null) { primaryLocation.at(inputFile.selectLine(issue.lineNumber)); } newExternalIssue.at(primaryLocation); if (engineIdIsSupported) { newExternalIssue.engineId(LINTER_KEY).ruleId(issue.ruleKey); } else { // Call the deprecated "forRule" method to support SQ 7.2 newExternalIssue.forRule(RuleKey.of(LINTER_KEY, issue.ruleKey)); } newExternalIssue.save(); }
private static void createIssues(InputFile file, SensorContext context) { for (int line = 1; line <= file.lines(); line++) { NewExternalIssue newIssue = context.newExternalIssue(); newIssue .engineId(ENGINE_ID) .ruleId(RULE_ID) .at(newIssue.newLocation() .on(file) .at(file.selectLine(line)) .message("This issue is generated on each line and the rule is predefined")) .severity(Severity.valueOf(SEVERITY)) .remediationEffortMinutes(EFFORT) .type(TYPE) .save(); } } }
private static void createIssues(InputFile file, SensorContext context) { for (int line = 1; line <= file.lines(); line++) { NewExternalIssue newIssue = context.newExternalIssue(); newIssue .engineId(ENGINE_ID) .ruleId(RULE_ID) .at(newIssue.newLocation() .on(file) .at(file.selectLine(line)) .message("This issue is generated on each line")) .severity(Severity.valueOf(SEVERITY)) .remediationEffortMinutes(EFFORT) .type(TYPE) .save(); } } }
private static void createIssues(InputFile file, SensorContext context) { for (int line = 1; line <= file.lines(); line++) { NewExternalIssue newIssue = context.newExternalIssue(); newIssue .engineId(OnePredefinedRuleExternalIssuePerLineSensor.ENGINE_ID) .ruleId(OnePredefinedRuleExternalIssuePerLineSensor.RULE_ID) .at(newIssue.newLocation() .on(file) .at(file.selectLine(line)) .message("This issue is generated on each line and the rule is predefined")) .severity(Severity.valueOf(OnePredefinedRuleExternalIssuePerLineSensor.SEVERITY)) .remediationEffortMinutes(OnePredefinedRuleExternalIssuePerLineSensor.EFFORT) .type(OnePredefinedRuleExternalIssuePerLineSensor.TYPE) .save(); // Even if the issue is on a predefined rule, the sensor is declaring an adHoc rule => this info should be ignored context.newAdHocRule() .engineId(OnePredefinedRuleExternalIssuePerLineSensor.ENGINE_ID) .ruleId(OnePredefinedRuleExternalIssuePerLineSensor.RULE_ID) .name("An ad hoc rule") .description("blah blah") .severity(Severity.BLOCKER) .type(RuleType.BUG) .save(); } } }