diff options
author | Duarte Meneses <duarte.meneses@sonarsource.com> | 2015-11-13 16:24:18 +0100 |
---|---|---|
committer | Duarte Meneses <duarte.meneses@sonarsource.com> | 2015-11-17 09:36:04 +0100 |
commit | d986919813676f22b0d0f34f4e1cb8a65e7a0481 (patch) | |
tree | ab43781547ce73275a4516130d34ee96846050b5 /plugins/sonar-xoo-plugin | |
parent | aef7ab9d126129f9e6382c1f06eb46cfb5565d8f (diff) | |
download | sonarqube-d986919813676f22b0d0f34f4e1cb8a65e7a0481.tar.gz sonarqube-d986919813676f22b0d0f34f4e1cb8a65e7a0481.zip |
SONAR-5894 Support symbol references with different length
Diffstat (limited to 'plugins/sonar-xoo-plugin')
-rw-r--r-- | plugins/sonar-xoo-plugin/src/main/java/org/sonar/xoo/lang/SymbolReferencesSensor.java | 27 | ||||
-rw-r--r-- | plugins/sonar-xoo-plugin/src/test/java/org/sonar/xoo/lang/SymbolReferencesSensorTest.java | 4 |
2 files changed, 25 insertions, 6 deletions
diff --git a/plugins/sonar-xoo-plugin/src/main/java/org/sonar/xoo/lang/SymbolReferencesSensor.java b/plugins/sonar-xoo-plugin/src/main/java/org/sonar/xoo/lang/SymbolReferencesSensor.java index 66573470ddb..62927ccda7e 100644 --- a/plugins/sonar-xoo-plugin/src/main/java/org/sonar/xoo/lang/SymbolReferencesSensor.java +++ b/plugins/sonar-xoo-plugin/src/main/java/org/sonar/xoo/lang/SymbolReferencesSensor.java @@ -81,17 +81,36 @@ public class SymbolReferencesSensor implements Sensor { private static void processLine(File symbolFile, int lineNumber, Symbolizable.SymbolTableBuilder symbolTableBuilder, String line) { try { Iterator<String> split = Splitter.on(",").split(line).iterator(); - int startOffset = Integer.parseInt(split.next()); - int endOffset = Integer.parseInt(split.next()); - Symbol s = symbolTableBuilder.newSymbol(startOffset, endOffset); + + Symbol s = addSymbol(symbolTableBuilder, split.next()); while (split.hasNext()) { - symbolTableBuilder.newReference(s, Integer.parseInt(split.next())); + addReference(symbolTableBuilder, s, split.next()); } } catch (Exception e) { throw new IllegalStateException("Error processing line " + lineNumber + " of file " + symbolFile.getAbsolutePath(), e); } } + private static void addReference(Symbolizable.SymbolTableBuilder symbolTableBuilder, Symbol s, String str) { + if (str.contains(":")) { + Iterator<String> split = Splitter.on(":").split(str).iterator(); + int startOffset = Integer.parseInt(split.next()); + int toOffset = Integer.parseInt(split.next()); + symbolTableBuilder.newReference(s, startOffset, toOffset); + } else { + symbolTableBuilder.newReference(s, Integer.parseInt(str)); + } + } + + private static Symbol addSymbol(Symbolizable.SymbolTableBuilder symbolTableBuilder, String str) { + Iterator<String> split = Splitter.on(":").split(str).iterator(); + + int startOffset = Integer.parseInt(split.next()); + int endOffset = Integer.parseInt(split.next()); + + return symbolTableBuilder.newSymbol(startOffset, endOffset); + } + @Override public void describe(SensorDescriptor descriptor) { descriptor diff --git a/plugins/sonar-xoo-plugin/src/test/java/org/sonar/xoo/lang/SymbolReferencesSensorTest.java b/plugins/sonar-xoo-plugin/src/test/java/org/sonar/xoo/lang/SymbolReferencesSensorTest.java index 332629c8469..d42ab2e5a79 100644 --- a/plugins/sonar-xoo-plugin/src/test/java/org/sonar/xoo/lang/SymbolReferencesSensorTest.java +++ b/plugins/sonar-xoo-plugin/src/test/java/org/sonar/xoo/lang/SymbolReferencesSensorTest.java @@ -74,7 +74,7 @@ public class SymbolReferencesSensorTest { @Test public void testExecution() throws IOException { File symbol = new File(baseDir, "src/foo.xoo.symbol"); - FileUtils.write(symbol, "1,4,7\n12,15,23\n\n#comment"); + FileUtils.write(symbol, "1:4,7\n12:15,23:33\n\n#comment"); DefaultInputFile inputFile = new DefaultInputFile("foo", "src/foo.xoo").setLanguage("xoo"); fileSystem.add(inputFile); Symbolizable symbolizable = mock(Symbolizable.class); @@ -92,7 +92,7 @@ public class SymbolReferencesSensorTest { verify(symbolTableBuilder).newSymbol(1, 4); verify(symbolTableBuilder).newReference(symbol1, 7); verify(symbolTableBuilder).newSymbol(12, 15); - verify(symbolTableBuilder).newReference(symbol2, 23); + verify(symbolTableBuilder).newReference(symbol2, 23, 33); } } |