]> source.dussan.org Git - sonarqube.git/commitdiff
Fix Quality flaws
authorSimon Brandhof <simon.brandhof@sonarsource.com>
Thu, 8 Sep 2016 06:54:57 +0000 (08:54 +0200)
committerSimon Brandhof <simon.brandhof@sonarsource.com>
Thu, 8 Sep 2016 14:09:00 +0000 (16:09 +0200)
sonar-duplications/src/main/java/org/sonar/duplications/detector/original/BlocksGroup.java
sonar-duplications/src/main/java/org/sonar/duplications/detector/original/OriginalCloneDetectionAlgorithm.java

index 05ba74e0eb20c3431d1c6a0c7ac64ebd54a03004..9fcaf2ebf3de6ee3ecc2454553b67923bae359ea 100644 (file)
@@ -22,6 +22,7 @@ package org.sonar.duplications.detector.original;
 import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.List;
+import javax.annotation.CheckForNull;
 import org.sonar.duplications.block.Block;
 import org.sonar.duplications.utils.FastStringComparator;
 
@@ -72,6 +73,7 @@ final class BlocksGroup {
   /**
    * First block from this group with specified resource id.
    */
+  @CheckForNull
   public Block first(String resourceId) {
     for (Block block : blocks) {
       if (resourceId.equals(block.getResourceId())) {
index 655bb1ccbb64ca23caf757b633b0d3d27c94f77f..be93463a5e4fae92cbda2855b9651a7f67c5ea52 100644 (file)
@@ -38,23 +38,8 @@ import org.sonar.duplications.index.ClonePart;
  */
 public final class OriginalCloneDetectionAlgorithm {
 
-  /**
-   * Performs detection and returns list of clone groups between file (which represented as a collection of blocks) and index.
-   * Note that this method ignores blocks for this file, that will be retrieved from index.
-   */
-  public static List<CloneGroup> detect(CloneIndex cloneIndex, Collection<Block> fileBlocks) {
-    if (fileBlocks.isEmpty()) {
-      return Collections.EMPTY_LIST;
-    }
-    OriginalCloneDetectionAlgorithm reporter = new OriginalCloneDetectionAlgorithm(cloneIndex);
-    reporter.findClones(fileBlocks);
-    return reporter.filter.getResult();
-  }
-
   private final CloneIndex cloneIndex;
-
   private final Filter filter = new Filter();
-
   private String originResourceId;
 
   private OriginalCloneDetectionAlgorithm(CloneIndex cloneIndex) {
@@ -213,9 +198,7 @@ public final class OriginalCloneDetectionAlgorithm {
         lastBlock.getEndLine());
 
       if (originResourceId.equals(part.getResourceId())) {
-        if (origin == null) {
-          origin = part;
-        } else if (part.getUnitStart() < origin.getUnitStart()) {
+        if (origin == null || part.getUnitStart() < origin.getUnitStart()) {
           origin = part;
         }
       }
@@ -226,4 +209,16 @@ public final class OriginalCloneDetectionAlgorithm {
     filter.add(CloneGroup.builder().setLength(cloneLength).setOrigin(origin).setParts(parts).build());
   }
 
+  /**
+   * Performs detection and returns list of clone groups between file (which represented as a collection of blocks) and index.
+   * Note that this method ignores blocks for this file, that will be retrieved from index.
+   */
+  public static List<CloneGroup> detect(CloneIndex cloneIndex, Collection<Block> fileBlocks) {
+    if (fileBlocks.isEmpty()) {
+      return Collections.emptyList();
+    }
+    OriginalCloneDetectionAlgorithm reporter = new OriginalCloneDetectionAlgorithm(cloneIndex);
+    reporter.findClones(fileBlocks);
+    return reporter.filter.getResult();
+  }
 }