@Override public void execute(SensorContext context) { for (InputFile file : context.fileSystem().inputFiles(context.fileSystem().predicates().hasLanguages(Xoo.KEY, Xoo2.KEY))) { File ioFile = file.file(); File measureFile = new File(ioFile.getParentFile(), ioFile.getName() + MEASURES_EXTENSION); processFileMeasures(file, measureFile, context); InputDir inputDir = context.fileSystem().inputDir(ioFile.getParentFile()); if (inputDir != null) { processFileMeasures(inputDir, new File(ioFile.getParentFile(), "folder" + MEASURES_EXTENSION), context); } } processFileMeasures(context.module(), new File(context.fileSystem().baseDir(), "module" + MEASURES_EXTENSION), context); } }
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 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(); }
public void saveAnalysisErrors() { if (!isSonarLintContext() && !analysisErrors.isEmpty() && shouldCollectAnalysisErrors()) { Gson gson = new Gson(); String metricValue = gson.toJson(analysisErrors); context.<String>newMeasure().forMetric(FEEDBACK_METRIC).on(context.module()).withValue(metricValue).save(); } }
public void saveAnalysisErrors() { if (!isSonarLintContext() && !analysisErrors.isEmpty() && shouldCollectAnalysisErrors()) { Gson gson = new Gson(); String metricValue = gson.toJson(analysisErrors); context.<String>newMeasure().forMetric(FEEDBACK_METRIC).on(context.module()).withValue(metricValue).save(); } }
@Override public void execute(SensorContext context) { for (InputFile file : context.fileSystem().inputFiles(context.fileSystem().predicates().hasLanguages(Xoo.KEY, Xoo2.KEY))) { File ioFile = file.file(); File measureFile = new File(ioFile.getParentFile(), ioFile.getName() + MEASURES_EXTENSION); processFileMeasures(file, measureFile, context); InputDir inputDir = context.fileSystem().inputDir(ioFile.getParentFile()); if (inputDir != null) { processFileMeasures(inputDir, new File(ioFile.getParentFile(), "folder" + MEASURES_EXTENSION), context); } } processFileMeasures(context.module(), new File(context.fileSystem().baseDir(), "module" + MEASURES_EXTENSION), context); } }
private void saveMeasures(SensorContext context) { context.<Integer>newMeasure().forMetric(DependencyCheckMetrics.CRITICAL_SEVERITY_VULNS).on(context.module()).withValue(blockerIssuesCount).save(); context.<Integer>newMeasure().forMetric(DependencyCheckMetrics.HIGH_SEVERITY_VULNS).on(context.module()).withValue(criticalIssuesCount).save(); context.<Integer>newMeasure().forMetric(DependencyCheckMetrics.MEDIUM_SEVERITY_VULNS).on(context.module()).withValue(majorIssuesCount).save(); context.<Integer>newMeasure().forMetric(DependencyCheckMetrics.LOW_SEVERITY_VULNS).on(context.module()).withValue(minorIssuesCount).save(); context.<Integer>newMeasure().forMetric(DependencyCheckMetrics.TOTAL_DEPENDENCIES).on(context.module()).withValue(totalDependencies).save(); context.<Integer>newMeasure().forMetric(DependencyCheckMetrics.VULNERABLE_DEPENDENCIES).on(context.module()).withValue(vulnerableDependencies).save(); context.<Integer>newMeasure().forMetric(DependencyCheckMetrics.TOTAL_VULNERABILITIES).on(context.module()).withValue(vulnerabilityCount).save(); LOGGER.debug("Found {} info Issues", infoIssuesCount); context.<Integer>newMeasure().forMetric(DependencyCheckMetrics.INHERITED_RISK_SCORE).on(context.module()) .withValue(DependencyCheckMetrics.inheritedRiskScore(blockerIssuesCount, criticalIssuesCount, majorIssuesCount, minorIssuesCount)).save(); context.<Double>newMeasure().forMetric(DependencyCheckMetrics.VULNERABLE_COMPONENT_RATIO).on(context.module()) .withValue(DependencyCheckMetrics.vulnerableComponentRatio(vulnerabilityCount, vulnerableDependencies)).save(); try { HtmlReportFile htmlReportFile = HtmlReportFile.getHtmlReport(context.config(), fileSystem, pathResolver); String htmlReport = htmlReportFile.getReportContent(); if (htmlReport != null) { LOGGER.info("Upload Dependency-Check HTML-Report"); context.<String>newMeasure().forMetric(DependencyCheckMetrics.REPORT).on(context.module()).withValue(htmlReport).save(); } } catch (FileNotFoundException e) { LOGGER.info(e.getMessage()); LOGGER.debug(e.getMessage(), e); } }
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 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 parseVersiondebtXML(final File file, final SensorContext context) { try { final Versiondebts versiondebts = VersiondebtsFactory.newInstance().fromXML(new FileInputStream(file)); LOGGER.info("Amount of non-up to date versions '{}'", versiondebts.getVersiondebtItems().size()); context.<Integer>newMeasure() .on(context.module()) .forMetric(VersiondebtMetrics.DEPENDENCY_AMOUNT) .withValue(getOutdatedVersionCount(versiondebts)) .save(); final long duration = calculateDuration(versiondebts); final long days = (duration / (1000*60*60*24)); final String durationDateString = PrettyFormatter.formatMillisToYearsDaysHours(duration); LOGGER.info("Duration '{}'", durationDateString); context.<Integer>newMeasure() .on(context.module()) .forMetric(VersiondebtMetrics.TOTAL_DEPENDENCY_DEBT_DAYS) .withValue((int) days) .save(); context.<String>newMeasure() .on(context.module()) .forMetric(VersiondebtMetrics.TOTAL_DEPENDENCY_DEBT_STRING) .withValue(durationDateString) .save(); } catch (FileNotFoundException e) { e.printStackTrace(); } }
private void addIssue(SensorContext context, Dependency dependency, Vulnerability vulnerability) { Float severityBlocker = context.config().getFloat(DependencyCheckConstants.SEVERITY_BLOCKER).orElse(DependencyCheckConstants.SEVERITY_BLOCKER_DEFAULT); Float severityCritical = context.config().getFloat(DependencyCheckConstants.SEVERITY_CRITICAL).orElse(DependencyCheckConstants.SEVERITY_CRITICAL_DEFAULT); Float severityMajor = context.config().getFloat(DependencyCheckConstants.SEVERITY_MAJOR).orElse(DependencyCheckConstants.SEVERITY_MAJOR_DEFAULT); Float severityMinor = context.config().getFloat(DependencyCheckConstants.SEVERITY_MINOR).orElse(DependencyCheckConstants.SEVERITY_MINOR_DEFAULT); Severity severity = DependencyCheckUtils.cvssToSonarQubeSeverity(vulnerability.getCvssScore(), severityBlocker ,severityCritical, severityMajor, severityMinor); context.newIssue() .forRule(RuleKey.of(DependencyCheckPlugin.REPOSITORY_KEY, DependencyCheckPlugin.RULE_KEY)) .at(new DefaultIssueLocation() .on(context.module()) .message(formatDescription(dependency, vulnerability)) ) .overrideSeverity(severity) .save(); incrementCount(severity); }
private void addIssue(SensorContext context, Dependency dependency) { dependency.sortVulnerabilityBycvssScore(); List<Vulnerability> vulnerabilities = dependency.getVulnerabilities(); Float severityBlocker = context.config().getFloat(DependencyCheckConstants.SEVERITY_BLOCKER).orElse(DependencyCheckConstants.SEVERITY_BLOCKER_DEFAULT); Float severityCritical = context.config().getFloat(DependencyCheckConstants.SEVERITY_CRITICAL).orElse(DependencyCheckConstants.SEVERITY_CRITICAL_DEFAULT); Float severityMajor = context.config().getFloat(DependencyCheckConstants.SEVERITY_MAJOR).orElse(DependencyCheckConstants.SEVERITY_MAJOR_DEFAULT); Float severityMinor = context.config().getFloat(DependencyCheckConstants.SEVERITY_MINOR).orElse(DependencyCheckConstants.SEVERITY_MINOR_DEFAULT); Vulnerability highestVulnerability = vulnerabilities.get(0); Severity severity = DependencyCheckUtils.cvssToSonarQubeSeverity(highestVulnerability.getCvssScore(), severityBlocker ,severityCritical, severityMajor, severityMinor); context.newIssue() .forRule(RuleKey.of(DependencyCheckPlugin.REPOSITORY_KEY, DependencyCheckPlugin.RULE_KEY)) .at(new DefaultIssueLocation() .on(context.module()) .message(formatDescription(dependency, vulnerabilities, highestVulnerability))) .overrideSeverity(severity) .save(); incrementCount(severity); }
private void addIssue(org.sonar.api.batch.sensor.SensorContext context, AlertItem alert) { Severity severity = ZapUtils.riskCodeToSonarQubeSeverity(alert.getRiskcode()); context.newIssue() .forRule(RuleKey.of(ZapPlugin.REPOSITORY_KEY, String.valueOf(alert.getPluginid()))) .at(new DefaultIssueLocation().on(context.module()).message(formatDescription(alert))) .overrideSeverity(severity) .save(); incrementCount(severity); }
InputComponent module = context.module(); MeasureUtil.saveMeasure(context, module, CoreMetrics.TESTS, testsCount); MeasureUtil.saveMeasure(context, module, CoreMetrics.SKIPPED_TESTS, testsSkipped);
private static void simpleMode(final SensorContext context, List<File> reports) throws XMLStreamException { TestSuiteParser parserHandler = new TestSuiteParser(); StaxParser parser = new StaxParser(parserHandler); for (File report : reports) { parser.parse(report); } TestResult total = new TestResult(); parserHandler.getParsedReports().forEach(testSuite -> testSuite.getTestCases().forEach(total::addTestCase)); if (total.getTests() > 0) { InputComponent module = context.module(); saveMeasure(context, module, CoreMetrics.TESTS, total.getExecutedTests()); saveMeasure(context, module, CoreMetrics.SKIPPED_TESTS, total.getSkipped()); saveMeasure(context, module, CoreMetrics.TEST_ERRORS, total.getErrors()); saveMeasure(context, module, CoreMetrics.TEST_FAILURES, total.getFailures()); saveMeasure(context, module, CoreMetrics.TEST_EXECUTION_TIME, total.getTime()); } }
private static void simpleMode(final SensorContext context, List<File> reports) throws XMLStreamException { TestSuiteParser parserHandler = new TestSuiteParser(); StaxParser parser = new StaxParser(parserHandler); for (File report : reports) { parser.parse(report); } TestResult total = new TestResult(); parserHandler.getParsedReports().forEach(testSuite -> testSuite.getTestCases().forEach(total::addTestCase)); if (total.getTests() > 0) { InputComponent module = context.module(); saveMeasure(context, module, CoreMetrics.TESTS, total.getExecutedTests()); saveMeasure(context, module, CoreMetrics.SKIPPED_TESTS, total.getSkipped()); saveMeasure(context, module, CoreMetrics.TEST_ERRORS, total.getErrors()); saveMeasure(context, module, CoreMetrics.TEST_FAILURES, total.getFailures()); saveMeasure(context, module, CoreMetrics.TEST_EXECUTION_TIME, total.getTime()); } }