@Override protected void processFile(InputFile inputFile, SensorContext context, RuleKey ruleKey, String languageKey) { NewIssue newIssue = context.newIssue() .forRule(ruleKey); NewIssueLocation location = newIssue.newLocation().on(inputFile); settings.get(MESSAGE_PROPERTY).ifPresent(location::message); newIssue .at(location) .save(); } }
private static void analyse(SensorContext context) { FileSystem fs = context.fileSystem(); FilePredicates p = fs.predicates(); RuleKey ruleKey = RuleKey.of(XooRulesDefinition.XOO_REPOSITORY, RULE_KEY); StreamSupport.stream(fs.inputFiles(p.hasType(Type.MAIN)).spliterator(), false) .map(file -> fs.inputDir(file.file().getParentFile())) .filter(Objects::nonNull) .distinct() .forEach(inputDir -> { NewIssue newIssue = context.newIssue(); newIssue .forRule(ruleKey) .at(newIssue.newLocation() .on(inputDir) .message("This issue is generated for any non-empty directory")) .save(); }); } }
@Override protected void processFile(InputFile inputFile, SensorContext context, RuleKey ruleKey, String languageKey) { NewIssue newIssue = context.newIssue() .forRule(ruleKey) .gap(settings.getDouble(EFFORT_TO_FIX_PROPERTY).orElse(0.0)); newIssue.at(newIssue.newLocation() .on(inputFile) .message("This issue is generated on each file")) .save(); } }
@Override protected void processFile(InputFile inputFile, SensorContext context, RuleKey ruleKey, String languageKey) { NewIssue newIssue = context.newIssue() .forRule(ruleKey); newIssue.at(newIssue.newLocation() .on(inputFile) .message("This issue is generated on each file with a debt of one day")) .save(); }
@Override protected void processFile(InputFile inputFile, SensorContext context, RuleKey ruleKey, String languageKey) { NewIssue newIssue = context.newIssue(); newIssue .forRule(ruleKey) .at(newIssue.newLocation().message("This issue is generated on each test file") .on(inputFile)) .save(); }
@Override protected void processFile(InputFile inputFile, SensorContext context, RuleKey ruleKey, String languageKey) { NewIssue newIssue = context.newIssue() .overrideSeverity(Severity.BLOCKER) .forRule(ruleKey); newIssue.at(newIssue.newLocation() .on(inputFile) .message("This issue is generated on each file. Severity is blocker, whatever quality profile")) .save(); } }
@Override public void execute(SensorContext sensorContext, InputFile file, RuleKey ruleKey) { NewIssue newIssue = sensorContext.newIssue(); newIssue .forRule(ruleKey) .at(newIssue.newLocation() .on(file) .at(file.selectLine(line))) .save(); }
@CheckForNull private static NewIssueLocation fillLocation(SensorContext context, NewIssueLocation newLocation, Location location) { InputFile file = findFile(context, location.filePath); if (file != null) { newLocation .on(file); if (location.message != null) { newLocation.message(location.message); } if (location.textRange != null) { if (location.textRange.startColumn != null) { TextPointer start = file.newPointer(location.textRange.startLine, location.textRange.startColumn); TextPointer end = file.newPointer(location.textRange.endLine, location.textRange.endColumn); newLocation.at(file.newRange(start, end)); } else { newLocation.at(file.selectLine(location.textRange.startLine)); } } return newLocation; } return null; }
private void analyse(SensorContext context, String repo) { RuleKey ruleKey = RuleKey.of(repo, RULE_KEY); NewIssue newIssue = context.newIssue(); newIssue .forRule(ruleKey) .at(newIssue.newLocation() .on(context.module()) .message("This issue is generated on each module")) .save(); }
private void analyse(SensorContext context, String language, String repo) { RuleKey ruleKey = RuleKey.of(repo, RULE_KEY); NewIssue newIssue = context.newIssue(); newIssue .forRule(ruleKey) .at(newIssue.newLocation() .on(context.module()) .message("This issue is generated on each module")) .save(); }
private static void createIssues(InputFile file, SensorContext context) { RuleKey ruleKey = RuleKey.of(XooRulesDefinition.XOO_REPOSITORY, RULE_KEY); InputDir inputDir = context.fileSystem().inputDir(file.file().getParentFile()); if (inputDir != null) { NewIssue newIssue = context.newIssue(); newIssue .forRule(ruleKey) .at(newIssue.newLocation() .on(inputDir) .message("This issue is generated for file " + file.relativePath())) .save(); } } }
private static void createIssues(InputFile file, SensorContext context) { RuleKey ruleKey = RuleKey.of(XooRulesDefinition.XOO_REPOSITORY, RULE_KEY); NewIssue newIssue = context.newIssue(); newIssue .forRule(ruleKey) .at(newIssue.newLocation() .on(file) .at(file.selectLine(1)) .message("This issue is generated on each file")) .save(); } }
@Override public void execute(SensorContext context) { RuleKey ruleKey = RuleKey.of(XooRulesDefinition.XOO_REPOSITORY, RULE_KEY); FilePredicate unknownFilesPredicate = context.fileSystem().predicates().matchesPathPattern("**/*.unknown"); Iterable<InputFile> unknownFiles = context.fileSystem().inputFiles(unknownFilesPredicate); unknownFiles.forEach(inputFile -> { NewIssue newIssue = context.newIssue(); newIssue .forRule(ruleKey) .at(newIssue.newLocation() .on(inputFile) .message("This issue is generated on each file with extension 'unknown'")) .save(); }); }
private static void createIssues(InputFile file, SensorContext context) { ActiveRule rule = context.activeRules().findByInternalKey(XooRulesDefinition.XOO_REPOSITORY, context.settings().getString(INTERNAL_KEY_PROPERTY)); if (rule != null) { NewIssue newIssue = context.newIssue(); newIssue .forRule(rule.ruleKey()) .at(newIssue.newLocation() .on(file) .message("This issue is generated on each file")) .save(); } } }
private static void createIssues(InputFile file, SensorContext context, String repo) { RuleKey ruleKey = RuleKey.of(repo, RULE_KEY); for (int line = 1; line <= file.lines(); line++) { TextRange text = file.selectLine(line); // do not count empty lines, which can be a pain with end-of-file return if (text.end().lineOffset() == 0) { continue; } NewIssue newIssue = context.newIssue(); newIssue .forRule(ruleKey) .at(newIssue.newLocation() .on(file) .at(text) .message("This bug issue is generated on each line")) .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(); } } }
@Test public void testIssues() { assertThat(tester.allIssues()).isEmpty(); NewIssue newIssue = tester.newIssue(); newIssue .at(newIssue.newLocation().on(new TestInputFileBuilder("foo", "src/Foo.java").build())) .forRule(RuleKey.of("repo", "rule")) .save(); newIssue = tester.newIssue(); newIssue .at(newIssue.newLocation().on(new TestInputFileBuilder("foo", "src/Foo.java").build())) .forRule(RuleKey.of("repo", "rule")) .save(); assertThat(tester.allIssues()).hasSize(2); }
@Test public void testExternalIssues() { assertThat(tester.allExternalIssues()).isEmpty(); NewExternalIssue newExternalIssue = tester.newExternalIssue(); newExternalIssue .at(newExternalIssue.newLocation().message("message").on(new TestInputFileBuilder("foo", "src/Foo.java").build())) .forRule(RuleKey.of("repo", "rule")) .type(RuleType.BUG) .severity(Severity.BLOCKER) .save(); newExternalIssue = tester.newExternalIssue(); newExternalIssue .at(newExternalIssue.newLocation().message("message").on(new TestInputFileBuilder("foo", "src/Foo.java").build())) .type(RuleType.BUG) .severity(Severity.BLOCKER) .forRule(RuleKey.of("repo", "rule")) .save(); assertThat(tester.allExternalIssues()).hasSize(2); }
private void createIssues(InputFile file, SensorContext context, String repo) { RuleKey ruleKey = RuleKey.of(repo, RULE_KEY); String severity = context.settings().getString(FORCE_SEVERITY_PROPERTY); for (int line = 1; line <= file.lines(); line++) { NewIssue newIssue = context.newIssue(); newIssue .forRule(ruleKey) .at(newIssue.newLocation() .on(file) .at(file.selectLine(line)) .message("This issue is generated on each line")) .overrideSeverity(severity != null ? Severity.valueOf(severity) : null); if (context.getSonarQubeVersion().isGreaterThanOrEqual(Version.create(5, 5))) { newIssue.gap(context.settings().getDouble(EFFORT_TO_FIX_PROPERTY)); } else { newIssue.gap(context.settings().getDouble(EFFORT_TO_FIX_PROPERTY)); } newIssue.save(); } }