From: Teryk Bellahsene Date: Thu, 23 Apr 2015 08:20:43 +0000 (+0200) Subject: fix one line shift while auto-assigning issues in CE X-Git-Tag: 5.2-RC1~2140 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=refs%2Fpull%2F250%2Fhead;p=sonarqube.git fix one line shift while auto-assigning issues in CE --- diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/issue/SourceLinesCache.java b/server/sonar-server/src/main/java/org/sonar/server/computation/issue/SourceLinesCache.java index 9af0128ce8e..7f6fc739da5 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/issue/SourceLinesCache.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/issue/SourceLinesCache.java @@ -29,7 +29,6 @@ import org.sonar.server.source.index.SourceLineIndex; import javax.annotation.CheckForNull; import javax.annotation.Nullable; - import java.util.Date; import java.util.HashMap; import java.util.List; @@ -78,19 +77,18 @@ public class SourceLinesCache { /** * Last committer of the line, can be null. - * @param lineIndex starts at 0 */ @CheckForNull - public String lineAuthor(@Nullable Integer lineIndex) { + public String lineAuthor(@Nullable Integer lineNumber) { loadIfNeeded(); - if (lineIndex == null) { + if (lineNumber == null) { // issue on file, approximately estimate that author is the last committer on the file return lastCommitAuthor; } String author = null; - if (lineIndex < scm.getChangesetIndexByLineCount()) { - BatchReport.Changesets.Changeset changeset = scm.getChangeset(scm.getChangesetIndexByLine(lineIndex)); + if (lineNumber <= scm.getChangesetIndexByLineCount()) { + BatchReport.Changesets.Changeset changeset = scm.getChangeset(scm.getChangesetIndexByLine(lineNumber-1)); author = changeset.hasAuthor() ? changeset.getAuthor() : null; } diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/issue/SourceLinesCacheTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/issue/SourceLinesCacheTest.java index 5a9403fd765..c5635716af4 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/issue/SourceLinesCacheTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/issue/SourceLinesCacheTest.java @@ -72,11 +72,11 @@ public class SourceLinesCacheTest { sut.init("ANY_UUID", 123_456_789, new BatchReportReader(dir)); - assertThat(sut.lineAuthor(0)).isEqualTo("charb"); assertThat(sut.lineAuthor(1)).isEqualTo("charb"); - assertThat(sut.lineAuthor(2)).isEqualTo("wolinski"); - // compute last author + assertThat(sut.lineAuthor(2)).isEqualTo("charb"); assertThat(sut.lineAuthor(3)).isEqualTo("wolinski"); + // compute last author + assertThat(sut.lineAuthor(4)).isEqualTo("wolinski"); assertThat(sut.lineAuthor(null)).isEqualTo("wolinski"); } @@ -92,12 +92,12 @@ public class SourceLinesCacheTest { sut.init("DEFAULT_UUID", 123, new BatchReportReader(dir)); - assertThat(sut.lineAuthor(0)).isEqualTo("cabu"); assertThat(sut.lineAuthor(1)).isEqualTo("cabu"); assertThat(sut.lineAuthor(2)).isEqualTo("cabu"); - assertThat(sut.lineAuthor(3)).isEqualTo("wolinski"); - assertThat(sut.lineAuthor(4)).isEqualTo("cabu"); - assertThat(sut.lineAuthor(5)).isEqualTo("wolinski"); + assertThat(sut.lineAuthor(3)).isEqualTo("cabu"); + assertThat(sut.lineAuthor(4)).isEqualTo("wolinski"); + assertThat(sut.lineAuthor(5)).isEqualTo("cabu"); + assertThat(sut.lineAuthor(6)).isEqualTo("wolinski"); } @Test(expected = IllegalStateException.class) @@ -113,12 +113,12 @@ public class SourceLinesCacheTest { .setDate(date); } - private SourceLineDoc newSourceLine(String author, String revision, long date, int line) { + private SourceLineDoc newSourceLine(String author, String revision, long date, int lineNumber) { return new SourceLineDoc() .setScmAuthor(author) .setScmRevision(revision) .setScmDate(new Date(date)) - .setLine(line) + .setLine(lineNumber) .setProjectUuid("PROJECT_UUID") .setFileUuid("DEFAULT_UUID"); }