boolean shouldDecorate(Resource resource) { return Scopes.isHigherThan(resource, Scopes.FILE); } }
public static boolean isHigherThanOrEquals(final Resource resource, final String than) { return isHigherThanOrEquals(resource.getScope(), than); }
private boolean shouldDecorate(Resource resource) { return Scopes.isFile(resource) && !Qualifiers.UNIT_TEST_FILE.equals(resource.getQualifier()); }
private void updateUuids(Resource resource, Resource parentResource, ResourceModel model) { // Don't override uuids when persisting a library and a project already exists if (ResourceUtils.isLibrary(resource) && !Qualifiers.LIBRARY.equals(model.getQualifier())) { return; } if (parentResource == null) { // Root module && libraries model.setProjectUuid(model.getUuid()); model.setModuleUuidPath(MODULE_UUID_PATH_SEPARATOR + model.getUuid() + MODULE_UUID_PATH_SEPARATOR); } else { ResourceModel parentModel = session.getSingleResult(ResourceModel.class, "id", parentResource.getId()); model.setProjectUuid(parentModel.getProjectUuid()); if (Scopes.isProject(resource)) { // Sub module model.setModuleUuid(parentResource.getUuid()); String parentModuleUuidPath = parentModel.getModuleUuidPath(); model.setModuleUuidPath(parentModuleUuidPath + model.getUuid() + MODULE_UUID_PATH_SEPARATOR); } else if (Scopes.isProject(parentResource)) { // Directory model.setModuleUuid(parentResource.getUuid()); String parentModuleUuidPath = parentModel.getModuleUuidPath(); model.setModuleUuidPath(parentModuleUuidPath); } else { // File model.setModuleUuid(parentModel.getModuleUuid()); String parentModuleUuidPath = parentModel.getModuleUuidPath(); model.setModuleUuidPath(parentModuleUuidPath); } } }
public static boolean isHigherThan(final Resource resource, final String than) { return isHigherThan(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; } }
public void decorate(Resource resource, DecoratorContext context) { if (resource instanceof JavaMethod) { computeMethodDistribution(resource, context); return; } if (!Scopes.isHigherThan(resource, Scopes.FILE)) { computeDistributionFromChildren(context); } }
@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); } }