From: Julien HENRY Date: Fri, 3 Oct 2014 13:04:28 +0000 (+0200) Subject: Fix some quality flaws X-Git-Tag: 5.0-RC1~814 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=d102a8a9916bac0ab600cd5e90ba5359766f8d6d;p=sonarqube.git Fix some quality flaws --- diff --git a/sonar-batch/src/main/java/org/sonar/batch/scan2/AnalysisPublisher.java b/sonar-batch/src/main/java/org/sonar/batch/scan2/AnalysisPublisher.java index 1dad931f8b5..f5596acbb52 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/scan2/AnalysisPublisher.java +++ b/sonar-batch/src/main/java/org/sonar/batch/scan2/AnalysisPublisher.java @@ -26,6 +26,7 @@ import org.slf4j.LoggerFactory; import org.sonar.api.batch.bootstrap.ProjectDefinition; import org.sonar.api.batch.fs.FileSystem; import org.sonar.api.batch.fs.InputFile; +import org.sonar.api.batch.fs.InputPath; import org.sonar.api.batch.sensor.issue.Issue; import org.sonar.api.batch.sensor.issue.Issue.Severity; import org.sonar.api.batch.sensor.measure.Measure; @@ -104,8 +105,9 @@ public final class AnalysisPublisher { jsonWriter.beginObject() .prop("repository", issue.ruleKey().repository()) .prop("rule", issue.ruleKey().rule()); - if (issue.inputPath() != null) { - jsonWriter.prop("path", issue.inputPath().relativePath()); + InputPath inputPath = issue.inputPath(); + if (inputPath != null) { + jsonWriter.prop("path", inputPath.relativePath()); } jsonWriter.prop("message", issue.message()) .prop("effortToFix", issue.effortToFix()) diff --git a/sonar-batch/src/main/java/org/sonar/batch/scan2/DefaultIssueValueCoder.java b/sonar-batch/src/main/java/org/sonar/batch/scan2/DefaultIssueValueCoder.java index 61ce8f9166f..53b7cb34b05 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/scan2/DefaultIssueValueCoder.java +++ b/sonar-batch/src/main/java/org/sonar/batch/scan2/DefaultIssueValueCoder.java @@ -73,7 +73,7 @@ class DefaultIssueValueCoder implements ValueCoder { @Override public Object get(Value value, Class clazz, CoderContext context) { - DefaultIssue newIssue = new DefaultIssue(null); + DefaultIssue newIssue = new DefaultIssue(); newIssue.withKey(value.getString()); if (value.isNull(true)) { newIssue.onProject(); diff --git a/sonar-batch/src/main/java/org/sonar/batch/scan2/DefaultSensorContext.java b/sonar-batch/src/main/java/org/sonar/batch/scan2/DefaultSensorContext.java index 486c241f7a2..dff662a8f9e 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/scan2/DefaultSensorContext.java +++ b/sonar-batch/src/main/java/org/sonar/batch/scan2/DefaultSensorContext.java @@ -27,6 +27,7 @@ import org.sonar.api.batch.bootstrap.ProjectDefinition; import org.sonar.api.batch.fs.FileSystem; import org.sonar.api.batch.fs.InputFile; import org.sonar.api.batch.fs.InputFile.Type; +import org.sonar.api.batch.fs.InputPath; import org.sonar.api.batch.measure.Metric; import org.sonar.api.batch.rule.ActiveRules; import org.sonar.api.batch.rule.internal.DefaultActiveRule; @@ -123,8 +124,9 @@ public class DefaultSensorContext extends BaseSensorContext { @Override public void store(Issue issue) { String resourceKey; - if (issue.inputPath() != null) { - resourceKey = ComponentKeys.createEffectiveKey(def.getKey(), issue.inputPath()); + InputPath inputPath = issue.inputPath(); + if (inputPath != null) { + resourceKey = ComponentKeys.createEffectiveKey(def.getKey(), inputPath); } else { resourceKey = def.getKey(); } diff --git a/sonar-batch/src/main/java/org/sonar/batch/scm/ScmConfiguration.java b/sonar-batch/src/main/java/org/sonar/batch/scm/ScmConfiguration.java index fd96308fa43..c9ed4ecb653 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/scm/ScmConfiguration.java +++ b/sonar-batch/src/main/java/org/sonar/batch/scm/ScmConfiguration.java @@ -70,6 +70,8 @@ public final class ScmConfiguration implements BatchComponent, Startable { autodetection(); if (this.provider == null) { considerOldScmUrl(); + } + if (this.provider == null) { LOG.warn("SCM provider autodetection failed. No SCM provider claims to support this project. Please use " + CoreProperties.SCM_PROVIDER_KEY + " to define SCM of your project."); } @@ -99,12 +101,12 @@ public final class ScmConfiguration implements BatchComponent, Startable { } private void autodetection() { - for (ScmProvider provider : providerPerKey.values()) { - if (provider.supports(projectReactor.getRoot().getBaseDir())) { + for (ScmProvider installedProvider : providerPerKey.values()) { + if (installedProvider.supports(projectReactor.getRoot().getBaseDir())) { if (this.provider == null) { - this.provider = provider; + this.provider = installedProvider; } else { - throw new IllegalStateException("SCM provider autodetection failed. Both " + this.provider.key() + " and " + provider.key() + throw new IllegalStateException("SCM provider autodetection failed. Both " + this.provider.key() + " and " + installedProvider.key() + " claim to support this project. Please use " + CoreProperties.SCM_PROVIDER_KEY + " to define SCM of your project."); } } @@ -121,7 +123,7 @@ public final class ScmConfiguration implements BatchComponent, Startable { @Override public void stop() { - + // Nothing to do } } diff --git a/sonar-batch/src/main/java/org/sonar/batch/scm/ScmSensor.java b/sonar-batch/src/main/java/org/sonar/batch/scm/ScmSensor.java index 4485407e9e3..e3de5aa41d1 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/scm/ScmSensor.java +++ b/sonar-batch/src/main/java/org/sonar/batch/scm/ScmSensor.java @@ -79,16 +79,7 @@ public final class ScmSensor implements Sensor { List filesToBlame = new LinkedList(); for (InputFile f : fs.inputFiles(fs.predicates().all())) { - FileData fileData = projectReferentials.fileData(projectDefinition.getKeyWithBranch(), f.relativePath()); - if (f.status() == Status.SAME - && fileData != null - && fileData.scmAuthorsByLine() != null - && fileData.scmLastCommitDatetimesByLine() != null - && fileData.scmRevisionsByLine() != null) { - saveMeasures(context, f, fileData.scmAuthorsByLine(), fileData.scmLastCommitDatetimesByLine(), fileData.scmRevisionsByLine()); - } else { - filesToBlame.add(f); - } + copyPreviousMeasuresForUnmodifiedFiles(context, filesToBlame, f); } if (!filesToBlame.isEmpty()) { LOG.info("SCM provider for this project is: " + configuration.provider().key()); @@ -98,6 +89,25 @@ public final class ScmSensor implements Sensor { } } + private void copyPreviousMeasuresForUnmodifiedFiles(final SensorContext context, List filesToBlame, InputFile f) { + FileData fileData = projectReferentials.fileData(projectDefinition.getKeyWithBranch(), f.relativePath()); + + if (f.status() == Status.SAME && fileData != null) { + String scmAuthorsByLine = fileData.scmAuthorsByLine(); + String scmLastCommitDatetimesByLine = fileData.scmLastCommitDatetimesByLine(); + String scmRevisionsByLine = fileData.scmRevisionsByLine(); + if (scmAuthorsByLine != null + && scmLastCommitDatetimesByLine != null + && scmRevisionsByLine != null) { + saveMeasures(context, f, scmAuthorsByLine, scmLastCommitDatetimesByLine, scmRevisionsByLine); + } else { + filesToBlame.add(f); + } + } else { + filesToBlame.add(f); + } + } + /** * This method is synchronized since it is allowed for plugins to compute blame in parallel. */ diff --git a/sonar-batch/src/main/java/org/sonar/batch/test/DefaultTestCaseValueCoder.java b/sonar-batch/src/main/java/org/sonar/batch/test/DefaultTestCaseValueCoder.java index 727b14efb8f..88b5de896d9 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/test/DefaultTestCaseValueCoder.java +++ b/sonar-batch/src/main/java/org/sonar/batch/test/DefaultTestCaseValueCoder.java @@ -72,7 +72,7 @@ class DefaultTestCaseValueCoder implements ValueCoder { long duration = value.getLong(); TestCase.Type type = TestCase.Type.values()[value.getInt()]; TestCase.Status status = TestCase.Status.values()[value.getInt()]; - return new DefaultTestCase(null) + return new DefaultTestCase() .inTestFile(testFile) .ofType(type) .name(name)