public static boolean isHigherThanOrEquals(final Resource resource, final String than) { return isHigherThanOrEquals(resource.getScope(), than); }
@CheckForNull @Override protected Issuable loadPerspective(Class<Issuable> perspectiveClass, Component component) { boolean supported = true; if (component instanceof ResourceComponent) { supported = Scopes.isHigherThanOrEquals(((ResourceComponent) component).scope(), Scopes.FILE); } return supported ? new DefaultIssuable(component, projectTree.getRootProject(), moduleIssues, cache) : null; } }
@Override public void addViolation(Violation violation, boolean force) { Resource resource = violation.getResource(); if (resource == null) { violation.setResource(currentProject); } else if (!Scopes.isHigherThanOrEquals(resource, Scopes.FILE)) { throw new IllegalArgumentException("Violations are only supported on files, directories and project"); } Rule rule = violation.getRule(); if (rule == null) { LOG.warn("Rule is null. Ignoring violation {}", violation); return; } Bucket bucket = getBucket(resource); if (bucket == null) { LOG.warn("Resource is not indexed. Ignoring violation {}", violation); return; } // keep a limitation (bug?) of deprecated violations api : severity is always // set by sonar. The severity set by plugins is overridden. // This is not the case with issue api. violation.setSeverity(null); violation.setResource(bucket.getResource()); moduleIssues.initAndAddViolation(violation); }
@Override public Measure calculate(FormulaData data, FormulaContext context) { Collection<Measure> measures = data.getChildrenMeasures(context.getTargetMetric()); if (measures == null || measures.isEmpty()) { return null; } RangeDistributionBuilder distribution = new RangeDistributionBuilder(context.getTargetMetric()); for (Measure measure : measures) { distribution.add(measure); } Measure measure = distribution.build(); if (!Scopes.isHigherThanOrEquals(context.getResource().getScope(), minimumScopeToPersist)) { measure.setPersistenceMode(PersistenceMode.MEMORY); } return measure; } }
@Override public void store(Measure newMeasure) { DefaultMeasure measure = (DefaultMeasure) newMeasure; org.sonar.api.measures.Metric m = findMetricOrFail(measure.metric().key()); org.sonar.api.measures.Measure measureToSave = new org.sonar.api.measures.Measure(m); setValueAccordingToMetricType(newMeasure, m, measureToSave); measureToSave.setFromCore(measure.isFromCore()); InputFile inputFile = newMeasure.inputFile(); if (inputFile != null) { Formula formula = newMeasure.metric() instanceof org.sonar.api.measures.Metric ? ((org.sonar.api.measures.Metric) newMeasure.metric()).getFormula() : null; if (formula instanceof SumChildDistributionFormula && !Scopes.isHigherThanOrEquals(Scopes.FILE, ((SumChildDistributionFormula) formula).getMinimumScopeToPersist())) { measureToSave.setPersistenceMode(PersistenceMode.MEMORY); } File sonarFile = getFile(inputFile); if (coverageExclusions.accept(sonarFile, measureToSave)) { sonarIndex.addMeasure(sonarFile, measureToSave); } } else { sonarIndex.addMeasure(project, measureToSave); } }