From da49975386d2fd2a81fb4d214b5bfbeaefb365a3 Mon Sep 17 00:00:00 2001 From: Felipe Zorzo Date: Sun, 15 May 2022 20:31:30 -0300 Subject: [PATCH] Return a better description in some toString methods --- .../org/sonar/plsqlopen/symbols/ScopeImpl.kt | 2 +- .../plsqlopen/api/squid/SemanticAstNode.kt | 9 +++++++++ .../plugins/plsqlopen/api/symbols/Symbol.kt | 2 +- .../datatype/AssociativeArrayDatatype.kt | 2 +- .../api/symbols/datatype/BooleanDatatype.kt | 2 +- .../api/symbols/datatype/CharacterDatatype.kt | 2 +- .../api/symbols/datatype/DateDatatype.kt | 2 +- .../api/symbols/datatype/ExceptionDatatype.kt | 2 +- .../api/symbols/datatype/LobDatatype.kt | 2 +- .../api/symbols/datatype/NullDatatype.kt | 2 +- .../api/symbols/datatype/NumericDatatype.kt | 2 +- .../api/symbols/datatype/RecordDatatype.kt | 2 +- .../api/symbols/datatype/RowtypeDatatype.kt | 2 +- .../api/symbols/datatype/UnknownDatatype.kt | 2 +- .../flr/internal/toolkit/SourceCodeModel.kt | 19 +++++++++++-------- 15 files changed, 33 insertions(+), 21 deletions(-) diff --git a/zpa-core/src/main/kotlin/org/sonar/plsqlopen/symbols/ScopeImpl.kt b/zpa-core/src/main/kotlin/org/sonar/plsqlopen/symbols/ScopeImpl.kt index 9e11f8c23..309019d26 100644 --- a/zpa-core/src/main/kotlin/org/sonar/plsqlopen/symbols/ScopeImpl.kt +++ b/zpa-core/src/main/kotlin/org/sonar/plsqlopen/symbols/ScopeImpl.kt @@ -133,6 +133,6 @@ class ScopeImpl(override val outer: Scope? = null, return true } - override fun toString() = "Scope{identifier='$identifier', type=$type, path=$path}" + override fun toString() = "${identifier ?: ""} type=$type path=$path" } diff --git a/zpa-core/src/main/kotlin/org/sonar/plugins/plsqlopen/api/squid/SemanticAstNode.kt b/zpa-core/src/main/kotlin/org/sonar/plugins/plsqlopen/api/squid/SemanticAstNode.kt index 19e55fed3..9f398b944 100644 --- a/zpa-core/src/main/kotlin/org/sonar/plugins/plsqlopen/api/squid/SemanticAstNode.kt +++ b/zpa-core/src/main/kotlin/org/sonar/plugins/plsqlopen/api/squid/SemanticAstNode.kt @@ -27,6 +27,7 @@ import org.sonar.plsqlopen.sslr.TreeImpl import org.sonar.plugins.plsqlopen.api.symbols.PlSqlType import org.sonar.plugins.plsqlopen.api.symbols.Symbol import org.sonar.plugins.plsqlopen.api.symbols.datatype.PlSqlDatatype +import org.sonar.plugins.plsqlopen.api.symbols.datatype.UnknownDatatype class SemanticAstNode(private val astNode: AstNode) : AstNode(astNode.type, astNode.name, astNode.token) { @@ -62,6 +63,14 @@ class SemanticAstNode(private val astNode: AstNode) : AstNode(astNode.type, astN tokens.joinToString(" ") { it.originalValue } } + override fun toString(): String { + return super.toString() + if (plSqlDatatype != null && plSqlDatatype !is UnknownDatatype) { + " datatype=$plSqlDatatype" + } else { + "" + } + } + init { super.fromIndex = astNode.fromIndex super.toIndex = astNode.toIndex diff --git a/zpa-core/src/main/kotlin/org/sonar/plugins/plsqlopen/api/symbols/Symbol.kt b/zpa-core/src/main/kotlin/org/sonar/plugins/plsqlopen/api/symbols/Symbol.kt index a5547e766..1ecb3f48c 100644 --- a/zpa-core/src/main/kotlin/org/sonar/plugins/plsqlopen/api/symbols/Symbol.kt +++ b/zpa-core/src/main/kotlin/org/sonar/plugins/plsqlopen/api/symbols/Symbol.kt @@ -85,5 +85,5 @@ open class Symbol(val node: AstNode?, fun called(name: String) = name.equals(this.name, ignoreCase = true) - override fun toString() = "Symbol{name='$name', kind=$kind, scope=$scope}" + override fun toString() = "$name kind=$kind datatype=$datatype" } diff --git a/zpa-core/src/main/kotlin/org/sonar/plugins/plsqlopen/api/symbols/datatype/AssociativeArrayDatatype.kt b/zpa-core/src/main/kotlin/org/sonar/plugins/plsqlopen/api/symbols/datatype/AssociativeArrayDatatype.kt index d3030f3ac..8eddacfae 100644 --- a/zpa-core/src/main/kotlin/org/sonar/plugins/plsqlopen/api/symbols/datatype/AssociativeArrayDatatype.kt +++ b/zpa-core/src/main/kotlin/org/sonar/plugins/plsqlopen/api/symbols/datatype/AssociativeArrayDatatype.kt @@ -30,6 +30,6 @@ class AssociativeArrayDatatype(node: AstNode? = null) : PlSqlDatatype { ?: throw IllegalStateException("Associative array must have a nested type") override fun toString(): String { - return "AssociativeArrayDatatype{nestedType=$nestedType}" + return "AssociativeArray{nestedType=$nestedType}" } } diff --git a/zpa-core/src/main/kotlin/org/sonar/plugins/plsqlopen/api/symbols/datatype/BooleanDatatype.kt b/zpa-core/src/main/kotlin/org/sonar/plugins/plsqlopen/api/symbols/datatype/BooleanDatatype.kt index 62cef8b9e..969339f3a 100644 --- a/zpa-core/src/main/kotlin/org/sonar/plugins/plsqlopen/api/symbols/datatype/BooleanDatatype.kt +++ b/zpa-core/src/main/kotlin/org/sonar/plugins/plsqlopen/api/symbols/datatype/BooleanDatatype.kt @@ -25,6 +25,6 @@ class BooleanDatatype : PlSqlDatatype { override val type = PlSqlType.BOOLEAN override fun toString(): String { - return "BooleanDatatype" + return "Boolean" } } diff --git a/zpa-core/src/main/kotlin/org/sonar/plugins/plsqlopen/api/symbols/datatype/CharacterDatatype.kt b/zpa-core/src/main/kotlin/org/sonar/plugins/plsqlopen/api/symbols/datatype/CharacterDatatype.kt index 789b6dbe1..45638f647 100644 --- a/zpa-core/src/main/kotlin/org/sonar/plugins/plsqlopen/api/symbols/datatype/CharacterDatatype.kt +++ b/zpa-core/src/main/kotlin/org/sonar/plugins/plsqlopen/api/symbols/datatype/CharacterDatatype.kt @@ -45,7 +45,7 @@ class CharacterDatatype : PlSqlDatatype { } override fun toString(): String { - return "CharacterDatatype{length=$length}" + return "Character{length=$length}" } } diff --git a/zpa-core/src/main/kotlin/org/sonar/plugins/plsqlopen/api/symbols/datatype/DateDatatype.kt b/zpa-core/src/main/kotlin/org/sonar/plugins/plsqlopen/api/symbols/datatype/DateDatatype.kt index 578adbb0d..67eff96a6 100644 --- a/zpa-core/src/main/kotlin/org/sonar/plugins/plsqlopen/api/symbols/datatype/DateDatatype.kt +++ b/zpa-core/src/main/kotlin/org/sonar/plugins/plsqlopen/api/symbols/datatype/DateDatatype.kt @@ -25,6 +25,6 @@ class DateDatatype : PlSqlDatatype { override val type = PlSqlType.DATE override fun toString(): String { - return "DateDatatype" + return "Date" } } diff --git a/zpa-core/src/main/kotlin/org/sonar/plugins/plsqlopen/api/symbols/datatype/ExceptionDatatype.kt b/zpa-core/src/main/kotlin/org/sonar/plugins/plsqlopen/api/symbols/datatype/ExceptionDatatype.kt index f440e75ef..430a523e3 100644 --- a/zpa-core/src/main/kotlin/org/sonar/plugins/plsqlopen/api/symbols/datatype/ExceptionDatatype.kt +++ b/zpa-core/src/main/kotlin/org/sonar/plugins/plsqlopen/api/symbols/datatype/ExceptionDatatype.kt @@ -25,6 +25,6 @@ class ExceptionDatatype : PlSqlDatatype { override val type = PlSqlType.EXCEPTION override fun toString(): String { - return "ExceptionDatatype" + return "Exception" } } diff --git a/zpa-core/src/main/kotlin/org/sonar/plugins/plsqlopen/api/symbols/datatype/LobDatatype.kt b/zpa-core/src/main/kotlin/org/sonar/plugins/plsqlopen/api/symbols/datatype/LobDatatype.kt index 7ac663913..4e0163f2f 100644 --- a/zpa-core/src/main/kotlin/org/sonar/plugins/plsqlopen/api/symbols/datatype/LobDatatype.kt +++ b/zpa-core/src/main/kotlin/org/sonar/plugins/plsqlopen/api/symbols/datatype/LobDatatype.kt @@ -25,6 +25,6 @@ class LobDatatype : PlSqlDatatype { override val type = PlSqlType.LOB override fun toString(): String { - return "LobDatatype" + return "Lob" } } diff --git a/zpa-core/src/main/kotlin/org/sonar/plugins/plsqlopen/api/symbols/datatype/NullDatatype.kt b/zpa-core/src/main/kotlin/org/sonar/plugins/plsqlopen/api/symbols/datatype/NullDatatype.kt index 4f4e08e02..545b16cf0 100644 --- a/zpa-core/src/main/kotlin/org/sonar/plugins/plsqlopen/api/symbols/datatype/NullDatatype.kt +++ b/zpa-core/src/main/kotlin/org/sonar/plugins/plsqlopen/api/symbols/datatype/NullDatatype.kt @@ -25,6 +25,6 @@ class NullDatatype : PlSqlDatatype { override val type = PlSqlType.NULL override fun toString(): String { - return "NullDatatype" + return "Null" } } diff --git a/zpa-core/src/main/kotlin/org/sonar/plugins/plsqlopen/api/symbols/datatype/NumericDatatype.kt b/zpa-core/src/main/kotlin/org/sonar/plugins/plsqlopen/api/symbols/datatype/NumericDatatype.kt index 84aa22587..e4e68d385 100644 --- a/zpa-core/src/main/kotlin/org/sonar/plugins/plsqlopen/api/symbols/datatype/NumericDatatype.kt +++ b/zpa-core/src/main/kotlin/org/sonar/plugins/plsqlopen/api/symbols/datatype/NumericDatatype.kt @@ -51,7 +51,7 @@ class NumericDatatype : PlSqlDatatype { } override fun toString(): String { - return "NumericDatatype{length=$length, precision=$precision}" + return "Numeric{length=$length, precision=$precision}" } } diff --git a/zpa-core/src/main/kotlin/org/sonar/plugins/plsqlopen/api/symbols/datatype/RecordDatatype.kt b/zpa-core/src/main/kotlin/org/sonar/plugins/plsqlopen/api/symbols/datatype/RecordDatatype.kt index 659aea900..8e4cc3f80 100644 --- a/zpa-core/src/main/kotlin/org/sonar/plugins/plsqlopen/api/symbols/datatype/RecordDatatype.kt +++ b/zpa-core/src/main/kotlin/org/sonar/plugins/plsqlopen/api/symbols/datatype/RecordDatatype.kt @@ -25,6 +25,6 @@ class RecordDatatype : PlSqlDatatype { override val type = PlSqlType.RECORD override fun toString(): String { - return "RecordDatatype" + return "Record" } } diff --git a/zpa-core/src/main/kotlin/org/sonar/plugins/plsqlopen/api/symbols/datatype/RowtypeDatatype.kt b/zpa-core/src/main/kotlin/org/sonar/plugins/plsqlopen/api/symbols/datatype/RowtypeDatatype.kt index b2dc99253..d9e909a24 100644 --- a/zpa-core/src/main/kotlin/org/sonar/plugins/plsqlopen/api/symbols/datatype/RowtypeDatatype.kt +++ b/zpa-core/src/main/kotlin/org/sonar/plugins/plsqlopen/api/symbols/datatype/RowtypeDatatype.kt @@ -25,6 +25,6 @@ class RowtypeDatatype : PlSqlDatatype { override val type = PlSqlType.ROWTYPE override fun toString(): String { - return "RowtypeDatatype" + return "Rowtype" } } diff --git a/zpa-core/src/main/kotlin/org/sonar/plugins/plsqlopen/api/symbols/datatype/UnknownDatatype.kt b/zpa-core/src/main/kotlin/org/sonar/plugins/plsqlopen/api/symbols/datatype/UnknownDatatype.kt index 9eb747791..3d2829684 100644 --- a/zpa-core/src/main/kotlin/org/sonar/plugins/plsqlopen/api/symbols/datatype/UnknownDatatype.kt +++ b/zpa-core/src/main/kotlin/org/sonar/plugins/plsqlopen/api/symbols/datatype/UnknownDatatype.kt @@ -25,6 +25,6 @@ class UnknownDatatype : PlSqlDatatype { override val type = PlSqlType.UNKNOWN override fun toString(): String { - return "UnknownDatatype" + return "Unknown" } } diff --git a/zpa-toolkit/src/main/kotlin/com/felipebz/flr/internal/toolkit/SourceCodeModel.kt b/zpa-toolkit/src/main/kotlin/com/felipebz/flr/internal/toolkit/SourceCodeModel.kt index 74d2f0eae..355462d48 100644 --- a/zpa-toolkit/src/main/kotlin/com/felipebz/flr/internal/toolkit/SourceCodeModel.kt +++ b/zpa-toolkit/src/main/kotlin/com/felipebz/flr/internal/toolkit/SourceCodeModel.kt @@ -39,6 +39,8 @@ internal class SourceCodeModel(private val configurationModel: ConfigurationMode private set lateinit var astNode: AstNode private set + lateinit var symbolTable: SymbolTable + private set fun setSourceCode(source: File, charset: Charset) { astNode = getSemanticNode(configurationModel.parser.parse(source)) @@ -47,22 +49,23 @@ internal class SourceCodeModel(private val configurationModel: ConfigurationMode } catch (e: IOException) { throw RuntimeException(e) } + loadSymbolTable() } fun setSourceCode(sourceCode: String) { astNode = getSemanticNode(configurationModel.parser.parse(sourceCode)) this.sourceCode = sourceCode + loadSymbolTable() } val xml: String get() = AstXmlPrinter.print(astNode) - val symbolTable: SymbolTable - get() { - val symbolVisitor = SymbolVisitor(DefaultTypeSolver()) - symbolVisitor.context = PlSqlVisitorContext(astNode, null, null) - symbolVisitor.init() - symbolVisitor.visitFile(astNode) - return symbolVisitor.symbolTable - } + private fun loadSymbolTable() { + val symbolVisitor = SymbolVisitor(DefaultTypeSolver()) + symbolVisitor.context = PlSqlVisitorContext(astNode, null, null) + symbolVisitor.init() + symbolVisitor.visitFile(astNode) + symbolTable = symbolVisitor.symbolTable + } }