]> source.dussan.org Git - sonarqube.git/commitdiff
fix various quality flaws 1087/head
authorSébastien Lesaint <sebastien.lesaint@sonarsource.com>
Thu, 7 Jul 2016 12:41:10 +0000 (14:41 +0200)
committerSébastien Lesaint <sebastien.lesaint@sonarsource.com>
Thu, 7 Jul 2016 15:07:11 +0000 (17:07 +0200)
server/sonar-process/src/main/java/org/sonar/process/Lifecycle.java
server/sonar-server/src/main/java/org/sonar/server/computation/filemove/FileMoveDetectionStep.java
server/sonar-server/src/main/java/org/sonar/server/computation/filemove/SourceSimilarity.java
server/sonar-server/src/main/java/org/sonar/server/computation/filemove/SourceSimilarityImpl.java
server/sonar-server/src/main/java/org/sonar/server/computation/step/PeriodResolver.java
server/sonar-server/src/main/java/org/sonar/server/plugins/WebServerExtensionInstaller.java
sonar-core/src/main/java/org/sonar/core/platform/ContainerPopulator.java
sonar-db/src/main/java/org/sonar/db/purge/PurgeCommands.java
sonar-db/src/main/java/org/sonar/db/version/v60/PopulateAnalysisUuidOnEvents.java
sonar-db/src/main/java/org/sonar/db/version/v60/PopulateComponentUuidColumnsOfSnapshots.java

index 876f5db2b6775f09b65151aadafc44320d1c08b8..a6649bd0860f3326ea5eb761eec5392947dd067b 100644 (file)
  */
 package org.sonar.process;
 
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.EnumMap;
-import java.util.HashSet;
+import java.util.EnumSet;
 import java.util.Map;
 import java.util.Set;
 import javax.annotation.Nullable;
@@ -64,9 +65,7 @@ public class Lifecycle {
     if (states.length == 1) {
       return Collections.singleton(states[0]);
     }
-    Set<State> res = new HashSet<>(states.length);
-    Collections.addAll(res, states);
-    return res;
+    return EnumSet.copyOf(Arrays.asList(states));
   }
 
   private State state = INIT;
index cafbab7ced63ba28b206edfaf1a2be62601e46e7..9780878cecf45b21b09bb1050d6cdd1314cc362a 100644 (file)
@@ -19,7 +19,6 @@
  */
 package org.sonar.server.computation.filemove;
 
-import com.google.common.base.Predicate;
 import com.google.common.base.Splitter;
 import com.google.common.collect.ArrayListMultimap;
 import com.google.common.collect.ImmutableMap;
@@ -33,7 +32,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import javax.annotation.CheckForNull;
-import javax.annotation.Nonnull;
 import javax.annotation.concurrent.Immutable;
 import org.sonar.api.resources.Qualifiers;
 import org.sonar.api.utils.log.Logger;
@@ -316,12 +314,6 @@ public class FileMoveDetectionStep implements ComputationStep {
   private static class ElectedMatches implements Iterable<Match> {
     private final List<Match> matches;
     private final Set<String> matchedFileKeys;
-    private final Predicate<Match> notAlreadyMatched = new Predicate<Match>() {
-      @Override
-      public boolean apply(@Nonnull Match input) {
-        return !(matchedFileKeys.contains(input.getDbKey()) || matchedFileKeys.contains(input.getReportKey()));
-      }
-    };
 
     public ElectedMatches(MatchesByScore matchesByScore, Set<String> dbFileKeys, Map<String, File> reportFileSourcesByKey) {
       this.matches = new ArrayList<>(matchesByScore.getSize());
@@ -335,7 +327,11 @@ public class FileMoveDetectionStep implements ComputationStep {
     }
 
     public List<Match> filter(Iterable<Match> matches) {
-      return from(matches).filter(notAlreadyMatched).toList();
+      return from(matches).filter(this::notAlreadyMatched).toList();
+    }
+
+    private boolean notAlreadyMatched(Match input) {
+      return !(matchedFileKeys.contains(input.getDbKey()) || matchedFileKeys.contains(input.getReportKey()));
     }
 
     @Override
index a244f0f88cb63469e51324a2480c35ca87f29a45..8df26813b01c38dbaee8d2787682159a363afadb 100644 (file)
@@ -23,8 +23,9 @@ import java.util.List;
 
 public interface SourceSimilarity {
 
-  // TODO verify algorithm http://stackoverflow.com/questions/6087281/similarity-score-levenshtein
-  // the higher the more similar. Order is not important (TODO to be verified). 100% = same source.
-  // Range: between 0 and 100 (TODO to be verified)
+  /**
+   * the higher the more similar. Order is not important (TODO to be verified). 100% = same source.
+   * Range: between 0 and 100
+   */
   <T extends Object> int score(List<T> left, List<T> right);
 }
index c6b30bad3c6ccd53ca62f6440500e97bd3111104..2eb325dfd6126070315f1a35d6564f0e6f806353 100644 (file)
@@ -59,7 +59,7 @@ public class SourceSimilarityImpl implements SourceSimilarity {
       // transformation cost for each letter in s0
       for (int i = 1; i < len0; i++) {
         // matching current letters in both strings
-        int match = (left.get(i - 1).equals(right.get(j - 1))) ? 0 : 1;
+        int match = left.get(i - 1).equals(right.get(j - 1)) ? 0 : 1;
 
         // computing cost for each transformation
         int costReplace = cost[i - 1] + match;
index 81e8427860fbe6f20a75c68c7324dfa2f7106b01..85a3afe98a505631aca5126b39d2446443cdc07d 100644 (file)
@@ -20,7 +20,7 @@
 package org.sonar.server.computation.step;
 
 import com.google.common.base.Strings;
-import java.util.Calendar;
+import java.time.temporal.ChronoUnit;
 import java.util.Date;
 import java.util.List;
 import javax.annotation.CheckForNull;
@@ -203,7 +203,7 @@ public class PeriodResolver {
   }
 
   private static String formatDate(long date) {
-    return DateUtils.formatDate(org.apache.commons.lang.time.DateUtils.truncate(new Date(date), Calendar.SECOND));
+    return DateUtils.formatDate(Date.from(new Date(date).toInstant().truncatedTo(ChronoUnit.SECONDS)));
   }
 
   private static String getPropertyValue(@Nullable String qualifier, Settings settings, int index) {
index 9e6483d83fce550fa84a9c4f7aebd4aaf96def28..a3b7da4e63609826eba66fce51e2f2c4b8e7f355 100644 (file)
  */
 package org.sonar.server.plugins;
 
-import org.sonar.api.SonarQubeVersion;
+import org.sonar.api.SonarRuntime;
 import org.sonar.api.server.ServerSide;
 import org.sonar.core.platform.PluginRepository;
 
 @ServerSide
 public class WebServerExtensionInstaller extends ServerExtensionInstaller {
-  public WebServerExtensionInstaller(SonarQubeVersion sonarQubeVersion, PluginRepository pluginRepository) {
-    super(sonarQubeVersion, pluginRepository, ServerSide.class);
+  public WebServerExtensionInstaller(SonarRuntime sonarRuntime, PluginRepository pluginRepository) {
+    super(sonarRuntime, pluginRepository, ServerSide.class);
   }
 }
index b63adfaace2e7e81bb04ad3c3f54b8f97e26cb72..029698a247ef52b58d6747acda5a193fbdc806bb 100644 (file)
@@ -21,6 +21,7 @@ package org.sonar.core.platform;
 
 import java.util.List;
 
+@FunctionalInterface
 public interface ContainerPopulator<T extends ContainerPopulator.Container> {
   void populateContainer(T container);
 
index 9930512fb0d380b7bf6d5b5a8fea36861d33909f..470cf399bcd3ea916da85d4b77f0828bf56d577f 100644 (file)
@@ -181,7 +181,6 @@ class PurgeCommands {
 
   @VisibleForTesting
   protected void deleteAnalyses(List<IdUuidPair> analysisIdUuids) {
-    List<List<Long>> analysisIdsPartitions = Lists.partition(IdUuidPairs.ids(analysisIdUuids), MAX_SNAPSHOTS_PER_QUERY);
     List<List<String>> analysisUuidsPartitions = Lists.partition(IdUuidPairs.uuids(analysisIdUuids), MAX_SNAPSHOTS_PER_QUERY);
 
     deleteAnalysisDuplications(analysisUuidsPartitions);
@@ -203,7 +202,6 @@ class PurgeCommands {
   }
 
   public void purgeAnalyses(List<IdUuidPair> analysisUuids) {
-    List<List<Long>> analysisIdsPartitions = Lists.partition(IdUuidPairs.ids(analysisUuids), MAX_SNAPSHOTS_PER_QUERY);
     List<List<String>> analysisUuidsPartitions = Lists.partition(IdUuidPairs.uuids(analysisUuids), MAX_SNAPSHOTS_PER_QUERY);
 
     deleteAnalysisDuplications(analysisUuidsPartitions);
index 49e970b67b3a74bc42f827570f66cab78b984708..95c59a2ef37753fdfff056294d1fc54861be3509 100644 (file)
@@ -40,10 +40,10 @@ public class PopulateAnalysisUuidOnEvents extends BaseDataChange {
       " where e.snapshot_id is not null and e.analysis_uuid is null");
     massUpdate.update("UPDATE events SET analysis_uuid=? WHERE snapshot_id=? and analysis_uuid is null");
     massUpdate.rowPluralName("analysis uuid of root component events");
-    massUpdate.execute(this::handle);
+    massUpdate.execute(PopulateAnalysisUuidOnEvents::handle);
   }
 
-  private boolean handle(Select.Row row, SqlStatement update) throws SQLException {
+  private static boolean handle(Select.Row row, SqlStatement update) throws SQLException {
     long snapshotId = row.getLong(1);
     String snapshotUuid = row.getString(2);
 
index 36db0807e50049ea369eb7973d1b1be3c274613f..991a7cac183c489c8da3a3c5f492a0f3915d9a36 100644 (file)
@@ -60,10 +60,10 @@ public class PopulateComponentUuidColumnsOfSnapshots extends BaseDataChange {
     massUpdate.select("SELECT sn.id, sn.project_id, sn.root_project_id from snapshots sn where sn.component_uuid is null or sn.root_component_uuid is null");
     massUpdate.update("UPDATE snapshots SET component_uuid=?, root_component_uuid=? WHERE id=?");
     massUpdate.rowPluralName("snapshots");
-    massUpdate.execute((row, update) -> this.handle(componentUuidById, row, update));
+    massUpdate.execute((row, update) -> handle(componentUuidById, row, update));
   }
 
-  private boolean handle(Map<Long, String> componentUuidById, Select.Row row, SqlStatement update) throws SQLException {
+  private static boolean handle(Map<Long, String> componentUuidById, Select.Row row, SqlStatement update) throws SQLException {
     long id = row.getLong(1);
     long componentId = row.getLong(2);
     long rootProjectId = row.getLong(3);