]> source.dussan.org Git - sonarqube.git/commitdiff
Fix quality flaws
authorSimon Brandhof <simon.brandhof@sonarsource.com>
Tue, 14 Oct 2014 19:47:34 +0000 (21:47 +0200)
committerSimon Brandhof <simon.brandhof@sonarsource.com>
Tue, 14 Oct 2014 19:47:34 +0000 (21:47 +0200)
plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/timemachine/TendencyAnalyser.java
server/sonar-process-monitor/src/main/java/org/sonar/process/monitor/ProcessRef.java
sonar-batch/src/main/java/org/sonar/batch/design/BaseTangleIndexDecorator.java
sonar-core/src/main/java/org/sonar/core/issue/db/IssueDto.java
sonar-core/src/main/java/org/sonar/core/persistence/DbTemplate.java
sonar-core/src/test/java/org/sonar/core/persistence/PreviewDatabaseFactoryTest.java
sonar-plugin-api/src/main/java/org/sonar/api/measures/WeightedMeanAggregationFormula.java
sonar-plugin-api/src/main/java/org/sonar/api/resources/ResourceTypeTree.java

index 32b760bc463dd457f557bb901d3f908ff96c7988..07fdef297f6d15ec4cf81210328a5b03f86dcb63 100644 (file)
@@ -52,17 +52,17 @@ public class TendencyAnalyser {
     for (Double p : values) {
       if (p != null) {
         nullValuesYList = false;
-        //SumY calculation
+        // SumY calculation
         sumY += p;
         // sumYPower2 calculation
         sumYPower2 += p * p;
-        //sumXY calculation
+        // sumXY calculation
         sumXY += p * (i + 1);
-        //SumX calculation
+        // SumX calculation
         sumX += (i + 1);
-        //sumXPower2 calculation
+        // sumXPower2 calculation
         sumXPower2 += (i + 1) * (i + 1);
-        //Point number calculation
+        // Point number calculation
         nbrPoints++;
       }
       i++;
@@ -77,10 +77,10 @@ public class TendencyAnalyser {
 
     SlopeData result = new SlopeData();
 
-    //yIntercept Calculation the value when X equals zero
+    // yIntercept Calculation the value when X equals zero
     result.setYIntercept(n1 / d);
     // Slope Calculation
-    if (n0 == 0d && d == 0d) {
+    if (Double.doubleToRawLongBits(n0) == 0L && Double.doubleToRawLongBits(d) == 0L) {
       result.setSlope(0.0);
     } else {
       Double slope = n0 / d;
@@ -94,7 +94,7 @@ public class TendencyAnalyser {
     result.setSumXY(sumXY);
     result.setSumYPower2(sumYPower2);
 
-    if (sumXPower2 == 0 || sumYPower2 == 0) {
+    if (Double.doubleToRawLongBits(sumXPower2) == 0L || Double.doubleToRawLongBits(sumYPower2) == 0L) {
       result.setCorrelationRate(0.0);
     } else {
       result.setCorrelationRate(sumXY / Math.sqrt(sumXPower2 * sumYPower2));
@@ -103,7 +103,6 @@ public class TendencyAnalyser {
     return result;
   }
 
-
   static class SlopeData {
     private double sumXPower2;
     private double sumYPower2;
index dc348a54516e2b599ec7ec02b150a818bf166993..a69e61c44876e6c18ce19ef7a3cbc9ba139ab78e 100644 (file)
@@ -19,6 +19,7 @@
  */
 package org.sonar.process.monitor;
 
+import org.slf4j.LoggerFactory;
 import org.sonar.process.MessageException;
 import org.sonar.process.ProcessCommands;
 import org.sonar.process.ProcessUtils;
@@ -90,9 +91,9 @@ class ProcessRef {
         // signal is sent, waiting for shutdown hooks to be executed (or not... it depends on OS)
         process.waitFor();
 
-      } catch (InterruptedException ignored) {
+      } catch (InterruptedException e) {
         // can't wait for the termination of process. Let's assume it's down.
-        // TODO log warning
+        LoggerFactory.getLogger(getClass()).warn(String.format("Interrupted while stopping process %s", key), e);
       }
     }
     ProcessUtils.closeStreams(process);
index 509cedcc7f1265222ec1931b68214de26321e314..069b570723611e6b35c3e4380dbb514976115310 100644 (file)
@@ -82,9 +82,8 @@ public class BaseTangleIndexDecorator implements Decorator {
     return context.getMeasure(tangleIndexMetric) == null;
   }
 
-
   private double compute(double tangles, double totalWeight) {
-    if (totalWeight==0.0) {
+    if (Double.doubleToRawLongBits(totalWeight) == 0L) {
       return 0.0;
     }
     double result = 2 * tangles / totalWeight;
index 15092940d6829f8fbe2368de1b6bfa01e205117f..550ce46b6d3d6a5e990cc40bcc39dd15f0459b07 100644 (file)
@@ -44,7 +44,6 @@ import java.util.UUID;
  */
 public final class IssueDto extends Dto<String> implements Serializable {
 
-
   private Long id;
   private String kee;
   private Long componentId;
@@ -87,12 +86,10 @@ public final class IssueDto extends Dto<String> implements Serializable {
     return getKee();
   }
 
-  @Deprecated
   public Long getId() {
     return id;
   }
 
-  @Deprecated
   public IssueDto setId(@Nullable Long id) {
     this.id = id;
     return this;
@@ -118,9 +115,8 @@ public final class IssueDto extends Dto<String> implements Serializable {
   }
 
   /**
-   * @deprecated please use setComponent(ComponentDto component)
+   * please use setComponent(ComponentDto component)
    */
-  @Deprecated
   public IssueDto setComponentId(Long componentId) {
     this.componentId = componentId;
     return this;
@@ -137,9 +133,8 @@ public final class IssueDto extends Dto<String> implements Serializable {
   }
 
   /**
-   * @deprecated please use setRootComponent
+   * please use setRootComponent
    */
-  @Deprecated
   public IssueDto setRootComponentId(Long rootComponentId) {
     this.rootComponentId = rootComponentId;
     return this;
@@ -159,9 +154,8 @@ public final class IssueDto extends Dto<String> implements Serializable {
   }
 
   /**
-   * @deprecated please use setRule(RuleDto rule)
+   * please use setRule(RuleDto rule)
    */
-  @Deprecated
   public IssueDto setRuleId(Integer ruleId) {
     this.ruleId = ruleId;
     return this;
index 4df446c8dd40665b54bb1b1acbd1f7c0069891be..9c42c50fb96c892d14b3fb64c7167665889515eb 100644 (file)
@@ -151,26 +151,6 @@ public class DbTemplate implements ServerComponent {
     return columnTypes;
   }
 
-  public int getRowCount(DataSource dataSource, String table) {
-    Connection connection = null;
-    Statement statement = null;
-    ResultSet resultSet = null;
-    try {
-      connection = dataSource.getConnection();
-      statement = connection.createStatement();
-      resultSet = statement.executeQuery("SELECT count(*) FROM " + table);
-
-      return resultSet.next() ? resultSet.getInt(1) : 0;
-    } catch (SQLException e) {
-      LOG.error("Fail to get row count for table " + table, e);
-      throw new SonarException("Fail to get row count for table " + table, e);
-    } finally {
-      DbUtils.closeQuietly(resultSet);
-      DbUtils.closeQuietly(statement);
-      DbUtils.closeQuietly(connection);
-    }
-  }
-
   public DbTemplate truncate(DataSource dataSource, String table) {
     Connection connection = null;
     Statement statement = null;
index 0e4dbbe9b3d9f1305f7751db7a1df203698b6d63..0aaf8ad50617674362f397e85504fa6be2f9853a 100644 (file)
@@ -32,7 +32,6 @@ import org.sonar.api.config.Settings;
 import org.sonar.core.profiling.Profiling;
 
 import javax.sql.DataSource;
-
 import java.io.File;
 import java.io.IOException;
 import java.sql.Connection;
@@ -68,9 +67,9 @@ public class PreviewDatabaseFactoryTest extends AbstractDaoTestCase {
     byte[] db = createDb(null);
     dataSource = createDatabase(db);
 
-    assertThat(rowCount("projects")).isZero();
-    assertThat(rowCount("events")).isZero();
-    assertThat(rowCount("users")).isEqualTo(3);
+    assertThat(countRows("projects")).isZero();
+    assertThat(countRows("events")).isZero();
+    assertThat(countRows("users")).isEqualTo(3);
     // Verify that password column was not exported into dryRun DB
     assertThat(getUserPassword(dataSource, 1)).isNull();
   }
@@ -86,10 +85,10 @@ public class PreviewDatabaseFactoryTest extends AbstractDaoTestCase {
     byte[] database = createDb(123L);
     dataSource = createDatabase(database);
 
-    assertThat(rowCount("projects")).isEqualTo(1);
-    assertThat(rowCount("snapshots")).isEqualTo(1);
-    assertThat(rowCount("project_measures")).isEqualTo(1);
-    assertThat(rowCount("events")).isEqualTo(2);
+    assertThat(countRows("projects")).isEqualTo(1);
+    assertThat(countRows("snapshots")).isEqualTo(1);
+    assertThat(countRows("project_measures")).isEqualTo(1);
+    assertThat(countRows("events")).isEqualTo(2);
   }
 
   @Test
@@ -99,7 +98,7 @@ public class PreviewDatabaseFactoryTest extends AbstractDaoTestCase {
     byte[] database = createDb(399L);
     dataSource = createDatabase(database);
 
-    assertThat(rowCount("issues")).isEqualTo(1);
+    assertThat(countRows("issues")).isEqualTo(1);
   }
 
   @Test
@@ -109,11 +108,11 @@ public class PreviewDatabaseFactoryTest extends AbstractDaoTestCase {
     // 300 : root module -> export issues of all modules
     byte[] database = createDb(300L);
     dataSource = createDatabase(database);
-    assertThat(rowCount("issues")).isEqualTo(1);
-    assertThat(rowCount("projects")).isEqualTo(4);
-    assertThat(rowCount("snapshots")).isEqualTo(4);
-    assertThat(rowCount("snapshot_data")).isEqualTo(2);
-    assertThat(rowCount("project_measures")).isEqualTo(4);
+    assertThat(countRows("issues")).isEqualTo(1);
+    assertThat(countRows("projects")).isEqualTo(4);
+    assertThat(countRows("snapshots")).isEqualTo(4);
+    assertThat(countRows("snapshot_data")).isEqualTo(2);
+    assertThat(countRows("project_measures")).isEqualTo(4);
   }
 
   @Test
@@ -123,10 +122,10 @@ public class PreviewDatabaseFactoryTest extends AbstractDaoTestCase {
     // 301 : sub module with 1 closed issue and 1 open issue
     byte[] database = createDb(301L);
     dataSource = createDatabase(database);
-    assertThat(rowCount("issues")).isEqualTo(1);
-    assertThat(rowCount("projects")).isEqualTo(2);
-    assertThat(rowCount("snapshots")).isEqualTo(2);
-    assertThat(rowCount("project_measures")).isEqualTo(4);
+    assertThat(countRows("issues")).isEqualTo(1);
+    assertThat(countRows("projects")).isEqualTo(2);
+    assertThat(countRows("snapshots")).isEqualTo(2);
+    assertThat(countRows("project_measures")).isEqualTo(4);
   }
 
   @Test
@@ -136,7 +135,7 @@ public class PreviewDatabaseFactoryTest extends AbstractDaoTestCase {
     // 302 : sub module without any issues
     byte[] database = createDb(302L);
     dataSource = createDatabase(database);
-    assertThat(rowCount("issues")).isEqualTo(0);
+    assertThat(countRows("issues")).isEqualTo(0);
   }
 
   @Test
@@ -145,9 +144,9 @@ public class PreviewDatabaseFactoryTest extends AbstractDaoTestCase {
 
     byte[] database = createDb(null);
     dataSource = createDatabase(database);
-    assertThat(rowCount("permission_templates")).isEqualTo(1);
-    assertThat(rowCount("perm_templates_users")).isEqualTo(1);
-    assertThat(rowCount("perm_templates_groups")).isEqualTo(1);
+    assertThat(countRows("permission_templates")).isEqualTo(1);
+    assertThat(countRows("perm_templates_users")).isEqualTo(1);
+    assertThat(countRows("perm_templates_groups")).isEqualTo(1);
   }
 
   private BasicDataSource createDatabase(byte[] db) throws IOException {
@@ -156,8 +155,23 @@ public class PreviewDatabaseFactoryTest extends AbstractDaoTestCase {
     return new DbTemplate(new Profiling(new Settings())).dataSource("org.h2.Driver", "sonar", "sonar", "jdbc:h2:" + file.getAbsolutePath().replaceAll(".h2.db", ""));
   }
 
-  private int rowCount(String table) {
-    return new DbTemplate(new Profiling(new Settings())).getRowCount(dataSource, table);
+  private int countRows(String table) {
+    Connection connection = null;
+    Statement statement = null;
+    ResultSet resultSet = null;
+    try {
+      connection = dataSource.getConnection();
+      statement = connection.createStatement();
+      resultSet = statement.executeQuery("SELECT count(*) FROM " + table);
+
+      return resultSet.next() ? resultSet.getInt(1) : 0;
+    } catch (SQLException e) {
+      throw new IllegalStateException("Fail to get row count for table " + table, e);
+    } finally {
+      DbUtils.closeQuietly(resultSet);
+      DbUtils.closeQuietly(statement);
+      DbUtils.closeQuietly(connection);
+    }
   }
 
   public String getUserPassword(DataSource dataSource, int userId) {
index 61f4d7ccbaefa8b35d976e244d47bc3a053803c1..c6daf0289acd4e3aa50383b5287ca28233b59a38 100644 (file)
@@ -63,7 +63,7 @@ public class WeightedMeanAggregationFormula implements Formula {
       return null;
     }
 
-    double result = count==0.0 ? 0.0 : sum/count;
+    double result = Double.doubleToRawLongBits(count)==0L ? 0.0 : sum/count;
     return new Measure(context.getTargetMetric(), result);
   }
 }
index 7ee6878708131dab7cd1e252af55e696977c791e..c6e4031f9e22fcbfc439e7ec080b97caebc2ad13 100644 (file)
@@ -21,11 +21,15 @@ package org.sonar.api.resources;
 
 import com.google.common.base.Preconditions;
 import com.google.common.base.Predicate;
-import com.google.common.collect.*;
+import com.google.common.collect.ArrayListMultimap;
+import com.google.common.collect.Collections2;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableListMultimap;
+import com.google.common.collect.ListMultimap;
+import com.google.common.collect.Lists;
 import org.sonar.api.ServerExtension;
 import org.sonar.api.task.TaskExtension;
 
-import javax.annotation.concurrent.Immutable;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.List;
@@ -33,12 +37,11 @@ import java.util.List;
 /**
  * @since 2.14
  */
-@Immutable
 public class ResourceTypeTree implements TaskExtension, ServerExtension {
 
-  private List<ResourceType> types;
-  private ListMultimap<String, String> relations;
-  private ResourceType root;
+  private final List<ResourceType> types;
+  private final ListMultimap<String, String> relations;
+  private final ResourceType root;
 
   private ResourceTypeTree(Builder builder) {
     this.types = ImmutableList.copyOf(builder.types);