From 757e077e138ad550028f3cc7109bb0ccc5a2922d Mon Sep 17 00:00:00 2001 From: Elena Vilchik Date: Tue, 10 Jan 2017 15:40:52 +0100 Subject: [PATCH] SONARPY-189 Metrics "files" and "lines" should not be computed by the python plugin (#76) * SONARPY-189 Metrics "files" and "lines" should not be computed by the python plugin * SONARPY-189 Remove code which is now useless --- .../org/sonar/python/PythonAstScanner.java | 2 -- .../org/sonar/python/api/PythonMetric.java | 1 - .../python/metrics/FileLinesVisitor.java | 13 +++++------- .../sonar/python/PythonAstScannerTest.java | 21 ------------------- .../sonar/python/api/PythonMetricTest.java | 2 +- .../src/test/resources/metrics/lines.py | 5 ----- .../test/resources/metrics/lines_of_code.py | 5 ----- .../plugins/python/PythonSquidSensor.java | 2 -- .../plugins/python/PythonSquidSensorTest.java | 2 -- 9 files changed, 6 insertions(+), 47 deletions(-) delete mode 100644 python-squid/src/test/resources/metrics/lines.py delete mode 100644 python-squid/src/test/resources/metrics/lines_of_code.py diff --git a/python-squid/src/main/java/org/sonar/python/PythonAstScanner.java b/python-squid/src/main/java/org/sonar/python/PythonAstScanner.java index e06901f582..bdd85c57d9 100644 --- a/python-squid/src/main/java/org/sonar/python/PythonAstScanner.java +++ b/python-squid/src/main/java/org/sonar/python/PythonAstScanner.java @@ -44,7 +44,6 @@ import org.sonar.squidbridge.indexer.QueryByType; import org.sonar.squidbridge.metrics.ComplexityVisitor; import org.sonar.squidbridge.metrics.CounterVisitor; -import org.sonar.squidbridge.metrics.LinesVisitor; public final class PythonAstScanner { @@ -99,7 +98,6 @@ public static AstScanner create(PythonConfiguration conf, SquidAstVisit } private static void setMetrics(AstScanner.Builder builder) { - builder.withSquidAstVisitor(new LinesVisitor(PythonMetric.LINES)); AstNodeType[] complexityAstNodeType = new AstNodeType[]{ // Entry points PythonGrammar.FUNCDEF, diff --git a/python-squid/src/main/java/org/sonar/python/api/PythonMetric.java b/python-squid/src/main/java/org/sonar/python/api/PythonMetric.java index 71bd47e75b..26a755bcd0 100644 --- a/python-squid/src/main/java/org/sonar/python/api/PythonMetric.java +++ b/python-squid/src/main/java/org/sonar/python/api/PythonMetric.java @@ -24,7 +24,6 @@ public enum PythonMetric implements MetricDef { FILES, - LINES, LINES_OF_CODE, STATEMENTS, FUNCTIONS, diff --git a/python-squid/src/main/java/org/sonar/python/metrics/FileLinesVisitor.java b/python-squid/src/main/java/org/sonar/python/metrics/FileLinesVisitor.java index 172abcdf59..410dec0a05 100644 --- a/python-squid/src/main/java/org/sonar/python/metrics/FileLinesVisitor.java +++ b/python-squid/src/main/java/org/sonar/python/metrics/FileLinesVisitor.java @@ -155,14 +155,11 @@ public void leaveFile(AstNode astNode) { linesOfComments.add(line); } - int fileLength = getContext().peekSourceCode().getInt(PythonMetric.LINES); - for (int line = 1; line <= fileLength; line++) { - if (linesOfCode.contains(line)) { - fileLinesContext.setIntValue(CoreMetrics.NCLOC_DATA_KEY, line, 1); - } - if (linesOfComments.contains(line)) { - fileLinesContext.setIntValue(CoreMetrics.COMMENT_LINES_DATA_KEY, line, 1); - } + for (int line : linesOfCode) { + fileLinesContext.setIntValue(CoreMetrics.NCLOC_DATA_KEY, line, 1); + } + for (int line : linesOfComments) { + fileLinesContext.setIntValue(CoreMetrics.COMMENT_LINES_DATA_KEY, line, 1); } fileLinesContext.save(); diff --git a/python-squid/src/test/java/org/sonar/python/PythonAstScannerTest.java b/python-squid/src/test/java/org/sonar/python/PythonAstScannerTest.java index a7b06c25d4..08e648617c 100644 --- a/python-squid/src/test/java/org/sonar/python/PythonAstScannerTest.java +++ b/python-squid/src/test/java/org/sonar/python/PythonAstScannerTest.java @@ -19,35 +19,14 @@ */ package org.sonar.python; -import com.google.common.base.Charsets; -import com.google.common.collect.ImmutableList; -import com.sonar.sslr.api.Grammar; -import java.io.File; import org.junit.Test; import org.sonar.python.api.PythonMetric; -import org.sonar.squidbridge.AstScanner; import org.sonar.squidbridge.api.SourceFile; -import org.sonar.squidbridge.api.SourceProject; -import org.sonar.squidbridge.indexer.QueryByType; import static org.assertj.core.api.Assertions.assertThat; public class PythonAstScannerTest { - @Test - public void files() { - AstScanner scanner = PythonAstScanner.create(new PythonConfiguration(Charsets.UTF_8)); - scanner.scanFiles(ImmutableList.of(new File("src/test/resources/metrics/lines.py"), new File("src/test/resources/metrics/lines_of_code.py"))); - SourceProject project = (SourceProject) scanner.getIndex().search(new QueryByType(SourceProject.class)).iterator().next(); - assertThat(project.getInt(PythonMetric.FILES)).isEqualTo(2); - } - - @Test - public void lines() { - SourceFile file = PythonAstScanner.scanSingleFile("src/test/resources/metrics/lines.py"); - assertThat(file.getInt(PythonMetric.LINES)).isEqualTo(6); - } - @Test public void statements() { SourceFile file = PythonAstScanner.scanSingleFile("src/test/resources/metrics/statements.py"); diff --git a/python-squid/src/test/java/org/sonar/python/api/PythonMetricTest.java b/python-squid/src/test/java/org/sonar/python/api/PythonMetricTest.java index 797b614b4d..f7ae5645f5 100644 --- a/python-squid/src/test/java/org/sonar/python/api/PythonMetricTest.java +++ b/python-squid/src/test/java/org/sonar/python/api/PythonMetricTest.java @@ -27,7 +27,7 @@ public class PythonMetricTest { @Test public void test() { - assertThat(PythonMetric.values()).hasSize(8); + assertThat(PythonMetric.values()).hasSize(7); for (PythonMetric metric : PythonMetric.values()) { assertThat(metric.getName()).isEqualTo(metric.name()); diff --git a/python-squid/src/test/resources/metrics/lines.py b/python-squid/src/test/resources/metrics/lines.py deleted file mode 100644 index 8b390e40f9..0000000000 --- a/python-squid/src/test/resources/metrics/lines.py +++ /dev/null @@ -1,5 +0,0 @@ -# -# Comment -# - -print("Hello world") diff --git a/python-squid/src/test/resources/metrics/lines_of_code.py b/python-squid/src/test/resources/metrics/lines_of_code.py deleted file mode 100644 index 8b390e40f9..0000000000 --- a/python-squid/src/test/resources/metrics/lines_of_code.py +++ /dev/null @@ -1,5 +0,0 @@ -# -# Comment -# - -print("Hello world") diff --git a/sonar-python-plugin/src/main/java/org/sonar/plugins/python/PythonSquidSensor.java b/sonar-python-plugin/src/main/java/org/sonar/plugins/python/PythonSquidSensor.java index b4dbed0d1e..c2468db08f 100644 --- a/sonar-python-plugin/src/main/java/org/sonar/plugins/python/PythonSquidSensor.java +++ b/sonar-python-plugin/src/main/java/org/sonar/plugins/python/PythonSquidSensor.java @@ -181,8 +181,6 @@ private void save(Collection squidSourceFiles) { } private void saveMeasures(InputFile inputFile, SourceFile squidFile) { - saveMetricOnFile(inputFile, CoreMetrics.FILES, squidFile.getInt(PythonMetric.FILES)); - saveMetricOnFile(inputFile, CoreMetrics.LINES, squidFile.getInt(PythonMetric.LINES)); saveMetricOnFile(inputFile, CoreMetrics.NCLOC, squidFile.getInt(PythonMetric.LINES_OF_CODE)); saveMetricOnFile(inputFile, CoreMetrics.STATEMENTS, squidFile.getInt(PythonMetric.STATEMENTS)); saveMetricOnFile(inputFile, CoreMetrics.FUNCTIONS, squidFile.getInt(PythonMetric.FUNCTIONS)); diff --git a/sonar-python-plugin/src/test/java/org/sonar/plugins/python/PythonSquidSensorTest.java b/sonar-python-plugin/src/test/java/org/sonar/plugins/python/PythonSquidSensorTest.java index 855190a1d7..725aba17fa 100644 --- a/sonar-python-plugin/src/test/java/org/sonar/plugins/python/PythonSquidSensorTest.java +++ b/sonar-python-plugin/src/test/java/org/sonar/plugins/python/PythonSquidSensorTest.java @@ -77,8 +77,6 @@ public void test_execute() { sensor().execute(context); String key = "moduleKey:file1.py"; - assertThat(context.measure(key, CoreMetrics.FILES).value()).isEqualTo(1); - assertThat(context.measure(key, CoreMetrics.LINES).value()).isEqualTo(25); assertThat(context.measure(key, CoreMetrics.NCLOC).value()).isEqualTo(22); assertThat(context.measure(key, CoreMetrics.STATEMENTS).value()).isEqualTo(20); assertThat(context.measure(key, CoreMetrics.FUNCTIONS).value()).isEqualTo(4);