public boolean isGreaterThanOrEqual(Version than) { return this.version.isGreaterThanOrEqual(than); } }
if (context.getSonarQubeVersion().isGreaterThanOrEqual(Version.create(6, 6))) { context.addExtension(XooBuiltInQualityProfilesDefinition.class); if (context.getSonarQubeVersion().isGreaterThanOrEqual(Version.create(6, 4))) { context.addExtension(DeprecatedGlobalSensor.class); if (context.getSonarQubeVersion().isGreaterThanOrEqual(Version.create(7, 6))) { context.addExtensions( GlobalProjectSensor.class, XooIgnoreCommand.class); if (context.getSonarQubeVersion().isGreaterThanOrEqual(Version.create(7, 2))) { context.addExtensions( OneExternalIssuePerLineSensor.class, SignificantCodeSensor.class); if (context.getSonarQubeVersion().isGreaterThanOrEqual(Version.create(7, 3))) { context.addExtension(HotspotSensor.class);
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(); } }
public boolean isGreaterThanOrEqual(Version than) { return this.version.isGreaterThanOrEqual(than); } }
.setDebtRemediationFunction(hotspot.debtRemediationFunctions().constantPerIssue("2min")); if (version != null && version.isGreaterThanOrEqual(Version.create(7, 3))) { hotspot .addOwaspTop10(OwaspTop10.A1, OwaspTop10.A3)
static Class<?> getAnalysisWarningsWrapper(SonarRuntime runtime) { if (runtime.getApiVersion().isGreaterThanOrEqual(SQ_MIN_SUPPORTED_VERSION)) { return DefaultAnalysisWarningsWrapper.class; } return NoOpAnalysisWarningsWrapper.class; } }
static boolean securityHotspotsSupported(SonarRuntime runtime) { return runtime.getApiVersion().isGreaterThanOrEqual(SQ_7_3); } }
/** * Drop this and related when the minimum supported version of SonarJava reaches 7.4. */ private static boolean isAnalysisWarningsSupported(SonarRuntime runtime) { return runtime.getApiVersion().isGreaterThanOrEqual(ANALYSIS_WARNINGS_MIN_SUPPORTED_SQ_VERSION) && runtime.getProduct() != SonarProduct.SONARLINT; } }
/** * @return ServerID based on the SonarQube version */ public static String getServerId(SensorContext context) { String str = context.config().get(context.getSonarQubeVersion().isGreaterThanOrEqual(Version.parse("6.7")) ? CoreProperties.SERVER_ID : CoreProperties.PERMANENT_SERVER_ID).orElse(""); int dashIndex = str.indexOf('-'); return (dashIndex == 8) && (str.length() >= 20) ? str.substring(dashIndex + 1) : str; }
boolean securityHotspotsSupported() { final Version SQ_7_3 = Version.create(7, 3); return sonarRuntime.getApiVersion().isGreaterThanOrEqual(SQ_7_3); }
private static void importReport(File reportPath, SensorContext context, Set<String> unresolvedInputFiles) { try (InputStream in = new FileInputStream(reportPath)) { LOG.info("Importing {}", reportPath); boolean engineIdIsSupported = context.getSonarQubeVersion().isGreaterThanOrEqual(Version.create(7, 4)); BanditJsonReportReader.read(in, issue -> saveIssue(context, issue, unresolvedInputFiles, engineIdIsSupported)); } catch (IOException | ParseException | RuntimeException e) { LOG.error("No issues information will be saved as the report file '{}' can't be read. " + e.getClass().getSimpleName() + ": " + e.getMessage(), reportPath, e); } }
private static void importReport(File reportPath, SensorContext context, Set<String> unresolvedInputFiles) { try (InputStream in = new FileInputStream(reportPath)) { LOG.info("Importing {}", reportPath); boolean engineIdIsSupported = context.getSonarQubeVersion().isGreaterThanOrEqual(Version.create(7, 4)); BanditJsonReportReader.read(in, issue -> saveIssue(context, issue, unresolvedInputFiles, engineIdIsSupported)); } catch (IOException | ParseException | RuntimeException e) { LOG.error("No issues information will be saved as the report file '{}' can't be read. " + e.getClass().getSimpleName() + ": " + e.getMessage(), reportPath, e); } }
public static List<File> getReportFiles(SensorContext context, String externalReportsProperty) { boolean externalIssuesSupported = context.getSonarQubeVersion().isGreaterThanOrEqual(Version.create(7, 2)); String[] reportPaths = context.config().getStringArray(externalReportsProperty); if (reportPaths.length == 0) { return Collections.emptyList(); } if (!externalIssuesSupported) { LOG.error("Import of external issues requires SonarQube 7.2 or greater."); return Collections.emptyList(); } List<File> result = new ArrayList<>(); for (String reportPath : reportPaths) { File report = getIOFile(context.fileSystem().baseDir(), reportPath); result.add(report); } return result; }
/** * This method is executed at runtime when: * <ul> * <li>Web Server starts</li> * <li>Compute Engine starts</li> * <li>Scanner starts</li> * </ul> * * @param context the Context to which extensions have to be added to. */ @Override public void define(final Context context) { context.addExtension(SmellChecksRegistrar.class); context.addExtension(SmellRulesDefinition.class); context.addExtension(SmellMetrics.class); context.addExtension(SmellMeasuresSensor.class); context.addExtension(SmellDebtComputer.class); context.addExtension(SmellCountByTypeMeasuresComputer.class); context.addExtension(SmellCountTotalMeasureComputer.class); if (!context.getSonarQubeVersion() .isGreaterThanOrEqual(NO_MORE_WIDGETS_VERSION)) { context.addExtension(SmellWidget.class); } } }
@Override public void execute(SensorContext context) { boolean externalIssuesSupported = context.getSonarQubeVersion().isGreaterThanOrEqual(Version.create(7, 2)); String[] reportPaths = context.config().getStringArray(reportsPropertyName()); if (reportPaths.length == 0) { return; } if (!externalIssuesSupported) { LOG.error(logPrefix() + "Import of external issues requires SonarQube 7.2 or greater."); return; } for (String reportPath : reportPaths) { File report = getIOFile(context.fileSystem().baseDir(), reportPath); importReport(context, report); } }
private static void addBanditExtensions(Context context) { context.addExtension(BanditSensor.class); boolean externalIssuesSupported = context.getSonarQubeVersion().isGreaterThanOrEqual(Version.create(7, 2)); if (externalIssuesSupported) { context.addExtensions( PropertyDefinition.builder(BanditSensor.REPORT_PATH_KEY) .name("Bandit Report Files") .description("Paths (absolute or relative) to json files with Bandit issues.") .category(EXTERNAL_ANALYZERS_CATEGORY) .subCategory(PYTHON_CATEGORY) .onQualifiers(Qualifiers.PROJECT) .multiValues(true) .build(), BanditRulesDefinition.class); } }
private static void addBanditExtensions(Context context) { context.addExtension(BanditSensor.class); boolean externalIssuesSupported = context.getSonarQubeVersion().isGreaterThanOrEqual(Version.create(7, 2)); if (externalIssuesSupported) { context.addExtensions( PropertyDefinition.builder(BanditSensor.REPORT_PATH_KEY) .name("Bandit Report Files") .description("Paths (absolute or relative) to json files with Bandit issues.") .category(EXTERNAL_ANALYZERS_CATEGORY) .subCategory(PYTHON_CATEGORY) .onQualifiers(Qualifiers.PROJECT) .multiValues(true) .build(), BanditRulesDefinition.class); } }
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(); } }
@Override public void define(Context context) { context.addExtensions( PropertyDefinition.builder(FILE_SUFFIXES_KEY) .index(10) .name("File Suffixes") .description("List of suffixes of Python files to analyze.") .multiValues(true) .category(PYTHON_CATEGORY) .subCategory(GENERAL) .onQualifiers(Qualifiers.PROJECT) .defaultValue("py") .build(), Python.class, PythonProfile.class, PythonSquidSensor.class, PythonRuleRepository.class); SonarRuntime sonarRuntime = context.getRuntime(); if (sonarRuntime.getProduct() != SonarProduct.SONARLINT) { if (sonarRuntime.getApiVersion().isGreaterThanOrEqual(SQ_MIN_VERSION_ANALYSIS_WARNINGS)) { context.addExtension(DefaultAnalysisWarningsWrapper.class); } else { context.addExtension(NoOpAnalysisWarningsWrapper.class); } addCoberturaExtensions(context); addXUnitExtensions(context); addPylintExtensions(context); addBanditExtensions(context); } }
context.addExtension(SpotBugsSensor.class); boolean externalIssuesSupported = context.getSonarQubeVersion().isGreaterThanOrEqual(Version.create(7, 2)); if (externalIssuesSupported) { context.addExtension(new ExternalRulesDefinition(CheckstyleSensor.RULE_LOADER, CheckstyleSensor.LINTER_KEY));