]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-6176 Display DSM even when there is no dependency
authorJulien HENRY <julien.henry@sonarsource.com>
Tue, 17 Feb 2015 15:24:28 +0000 (16:24 +0100)
committerJulien HENRY <julien.henry@sonarsource.com>
Tue, 17 Feb 2015 17:56:28 +0000 (18:56 +0100)
sonar-batch/src/main/java/org/sonar/batch/design/DsmDecorator.java
sonar-batch/src/test/java/org/sonar/batch/design/DirectoryDsmDecoratorTest.java
sonar-batch/src/test/java/org/sonar/batch/design/ProjectDsmDecoratorTest.java
sonar-batch/src/test/java/org/sonar/batch/design/SubProjectDsmDecoratorTest.java
sonar-graph/src/main/java/org/sonar/graph/Dsm.java

index 3569ba9a913fa7c2c5a28dde1b3e6490a8515f27..0fdae1a037ba717d38d3b51eb53471c9c8008002 100644 (file)
@@ -75,9 +75,7 @@ public abstract class DsmDecorator implements Decorator {
       }
       Dsm<Resource> dsm = getDsm(children, feedbackEdges);
       // Optimization, don't save DSM if there is no dependency at all
-      if (dsm.hasAtLeastOneDependency()) {
-        saveDsm(context, dsm);
-      }
+      saveDsm(context, dsm);
     }
   }
 
index fa3ceecc3a561bd921823dc10340404fd5f44bdc..7cc8ca87bc1c3be93ae447dba18de2064cdda23b 100644 (file)
@@ -97,12 +97,16 @@ public class DirectoryDsmDecoratorTest {
   public void testDirectoryDsmDecoratorNoDependency() {
     decorator.decorate(dir, dirContext);
 
-    verify(dirContext, times(4)).saveMeasure(any(Measure.class));
+    verify(dirContext, times(5)).saveMeasure(any(Measure.class));
 
     verify(dirContext).saveMeasure(isMeasureWithValue(CoreMetrics.FILE_CYCLES, 0.0));
     verify(dirContext).saveMeasure(isMeasureWithValue(CoreMetrics.FILE_FEEDBACK_EDGES, 0.0));
     verify(dirContext).saveMeasure(isMeasureWithValue(CoreMetrics.FILE_TANGLES, 0.0));
     verify(dirContext).saveMeasure(isMeasureWithValue(CoreMetrics.FILE_EDGES_WEIGHT, 0.0));
+    verify(dirContext).saveMeasure(
+      isMeasureWithValue(CoreMetrics.DEPENDENCY_MATRIX,
+        "[{\"i\":1,\"n\":\"Foo1.java\",\"q\":\"FIL\",\"v\":[{},{}]},{\"i\":2,\"n\":\"Foo2.java\",\"q\":\"FIL\",\"v\":[{},{}]}]"));
+
   }
 
   @Test
index c18da1fdde9c382f697015cbd2c6d156688f15c6..0d78693fa59e5e230a4e11e0964f5dd0315f0c14 100644 (file)
@@ -19,7 +19,6 @@
  */
 package org.sonar.batch.design;
 
-import edu.emory.mathcs.backport.java.util.Collections;
 import org.apache.commons.lang.ObjectUtils;
 import org.junit.Before;
 import org.junit.Test;
@@ -87,17 +86,6 @@ public class ProjectDsmDecoratorTest {
     Project child = new Project("child").setParent(p);
     decorator.decorate(p, rootContext);
 
-    // Should not do anything if module has no dir
-    when(rootContext.getChildren()).thenReturn(Collections.emptyList());
-    decorator.decorate(root, rootContext);
-
-    verify(rootContext, never()).saveMeasure(any(Measure.class));
-  }
-
-  @Test
-  public void testProjectDsmDecoratorNoDependency() {
-    decorator.decorate(root, rootContext);
-
     verify(rootContext, never()).saveMeasure(any(Measure.class));
   }
 
index a9a41264adf95fdb2e9c7703c03efc0eaf62b670..bc65050aab23ae20011b8ecd804bdc83e7fdbdfd 100644 (file)
@@ -96,12 +96,14 @@ public class SubProjectDsmDecoratorTest {
   public void testSubProjectDsmDecoratorNoDependency() {
     decorator.decorate(module, moduleContext);
 
-    verify(moduleContext, times(4)).saveMeasure(any(Measure.class));
+    verify(moduleContext, times(5)).saveMeasure(any(Measure.class));
 
     verify(moduleContext).saveMeasure(isMeasureWithValue(CoreMetrics.DIRECTORY_CYCLES, 0.0));
     verify(moduleContext).saveMeasure(isMeasureWithValue(CoreMetrics.DIRECTORY_FEEDBACK_EDGES, 0.0));
     verify(moduleContext).saveMeasure(isMeasureWithValue(CoreMetrics.DIRECTORY_TANGLES, 0.0));
     verify(moduleContext).saveMeasure(isMeasureWithValue(CoreMetrics.DIRECTORY_EDGES_WEIGHT, 0.0));
+    verify(moduleContext).saveMeasure(isMeasureWithValue(CoreMetrics.DEPENDENCY_MATRIX,
+      "[{\"i\":1,\"n\":\"src/foo1\",\"q\":\"DIR\",\"v\":[{},{}]},{\"i\":2,\"n\":\"src/foo2\",\"q\":\"DIR\",\"v\":[{},{}]}]"));
   }
 
   @Test
index 4d8673d1992e4cc45306004b1f829bccca5f3043..811cad56e3e293503a2642dd19c0fab13b72f1c8 100644 (file)
@@ -31,7 +31,6 @@ public class Dsm<V> {
   private final DsmCell[][] cells;
   private final int dimension;
   private final DirectedGraphAccessor<V, ? extends Edge<V>> graph;
-  private boolean atLeastOneDependency = false;
 
   public Dsm(DirectedGraphAccessor<V, ? extends Edge<V>> graph, Collection<V> vertices, Set<Edge> feedbackEdges) {
     this.graph = graph;
@@ -57,7 +56,6 @@ public class Dsm<V> {
 
         Edge<V> edge = graph.getEdge(from, to);
         if (edge != null) {
-          atLeastOneDependency = true;
           boolean isFeedbackEdge = feedbackEdges.contains(edge);
           result[x][y] = new DsmCell(edge, isFeedbackEdge);
         }
@@ -171,13 +169,6 @@ public class Dsm<V> {
     return cells[x][y];
   }
 
-  /**
-   * @since 5.0
-   */
-  public boolean hasAtLeastOneDependency() {
-    return atLeastOneDependency;
-  }
-
   public V[] getVertices() {
     V[] verticesCopy = (V[]) new Object[vertices.length];
     System.arraycopy(vertices, 0, verticesCopy, 0, vertices.length);