]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-7512 Backport ability to use line/offset on Symbolizable API 958/head
authorJulien HENRY <julien.henry@sonarsource.com>
Thu, 12 May 2016 09:44:19 +0000 (11:44 +0200)
committerJulien HENRY <julien.henry@sonarsource.com>
Thu, 12 May 2016 13:19:59 +0000 (15:19 +0200)
sonar-plugin-api/src/main/java/org/sonar/api/source/Symbolizable.java
sonar-scanner-engine/src/main/java/org/sonar/batch/source/DefaultSymbolizable.java
sonar-scanner-engine/src/main/java/org/sonar/batch/source/DeprecatedDefaultSymbolTable.java

index 98177598ef1a9c366c007fa07592fed23bb320f2..507c1c7186ff898656d521e95cde1d344641525a 100644 (file)
@@ -41,6 +41,11 @@ public interface Symbolizable extends Perspective {
      */
     Symbol newSymbol(int fromOffset, int toOffset);
 
+    /**
+     * @since 5.6
+     */
+    Symbol newSymbol(int startLine, int startLineOffset, int endLine, int endLineOffset);
+
     /**
      * Creates a new reference for a symbol.
      * The length of the reference is assumed to be the same as the symbol's length.
@@ -55,6 +60,11 @@ public interface Symbolizable extends Perspective {
      */
     void newReference(Symbol symbol, int fromOffset, int toOffset);
 
+    /**
+     * @since 5.6
+     */
+    void newReference(Symbol symbol, int startLine, int startLineOffset, int endLine, int endLineOffset);
+
     /**
      * Creates a {@link SymbolTable} containing all symbols and references previously created in this file.
      */
index 04c7f560e9ed7ee771287d61164fc5f1d3d4ae4f..a2a380c71e6096c991801554f81c019940c8db6b 100644 (file)
@@ -40,6 +40,11 @@ public class DefaultSymbolizable implements Symbolizable {
       return NO_OP_SYMBOL;
     }
 
+    @Override
+    public Symbol newSymbol(int startLine, int startLineOffset, int endLine, int endLineOffset) {
+      return NO_OP_SYMBOL;
+    }
+
     @Override
     public void newReference(Symbol symbol, int fromOffset) {
       // Do nothing
@@ -50,6 +55,11 @@ public class DefaultSymbolizable implements Symbolizable {
       // Do nothing
     }
 
+    @Override
+    public void newReference(Symbol symbol, int startLine, int startLineOffset, int endLine, int endLineOffset) {
+      // Do nothing
+    }
+
     @Override
     public SymbolTable build() {
       return NO_OP_SYMBOL_TABLE;
index a902b017e8c7d756baa3fb62204f63cea993357c..78ab4ec11ff03cfbe29e51e714490c88d6ba5f19 100644 (file)
@@ -59,6 +59,13 @@ public class DeprecatedDefaultSymbolTable implements Symbolizable.SymbolTable {
       return new DeprecatedDefaultSymbol(symbolTable.newSymbol(fromOffset, toOffset), toOffset - fromOffset);
     }
 
+    @Override
+    public Symbol newSymbol(int startLine, int startLineOffset, int endLine, int endLineOffset) {
+      // This is wrong in case of multiline symbol bu I assume references will be added using start and end offsets so length is useless.
+      int length = endLineOffset - startLineOffset;
+      return new DeprecatedDefaultSymbol(symbolTable.newSymbol(startLine, startLineOffset, endLine, endLineOffset), length);
+    }
+
     @Override
     public void newReference(Symbol symbol, int fromOffset) {
       ((DeprecatedDefaultSymbol) symbol).getWrapped().newReference(fromOffset, fromOffset + ((DeprecatedDefaultSymbol) symbol).getLength());
@@ -69,6 +76,11 @@ public class DeprecatedDefaultSymbolTable implements Symbolizable.SymbolTable {
       ((DeprecatedDefaultSymbol) symbol).getWrapped().newReference(fromOffset, toOffset);
     }
 
+    @Override
+    public void newReference(Symbol symbol, int startLine, int startLineOffset, int endLine, int endLineOffset) {
+      ((DeprecatedDefaultSymbol) symbol).getWrapped().newReference(startLine, startLineOffset, endLine, endLineOffset);
+    }
+
     @Override
     public Symbolizable.SymbolTable build() {
       return new DeprecatedDefaultSymbolTable(symbolTable);