From 623da663f51c274753632bfe3476ac308a1514c9 Mon Sep 17 00:00:00 2001 From: xterao Date: Fri, 16 May 2025 11:21:37 +0900 Subject: [PATCH] Refactor Sql inspection visitors to eliminate unnecessary file variable and improve readability --- .../sql/visitor/SqlInspectionVisitor.kt | 22 +++++++------------ .../SqlTestDataAfterBlockCommentVisitor.kt | 10 ++++----- .../inspection/sql/visitor/SqlVisitorBase.kt | 10 --------- .../dao/inspection/TestDataCheckDao.java | 2 +- 4 files changed, 13 insertions(+), 31 deletions(-) diff --git a/src/main/kotlin/org/domaframework/doma/intellij/inspection/sql/visitor/SqlInspectionVisitor.kt b/src/main/kotlin/org/domaframework/doma/intellij/inspection/sql/visitor/SqlInspectionVisitor.kt index 9b8c0e7c..6ae7b38d 100644 --- a/src/main/kotlin/org/domaframework/doma/intellij/inspection/sql/visitor/SqlInspectionVisitor.kt +++ b/src/main/kotlin/org/domaframework/doma/intellij/inspection/sql/visitor/SqlInspectionVisitor.kt @@ -17,7 +17,6 @@ package org.domaframework.doma.intellij.inspection.sql.visitor import com.intellij.codeInspection.ProblemsHolder import com.intellij.psi.PsiElement -import com.intellij.psi.PsiFile import com.intellij.psi.PsiLiteralExpression import com.intellij.psi.util.elementType import org.domaframework.doma.intellij.common.isInjectionSqlFile @@ -38,14 +37,13 @@ class SqlInspectionVisitor( private val shortName: String, ) : SqlVisitorBase() { override fun visitElement(element: PsiElement) { - if (setFile(element)) return - val visitFile: PsiFile = file ?: return - if (isJavaOrKotlinFileType(visitFile) && element is PsiLiteralExpression) { - val injectionFile = initInjectionElement(visitFile, element.project, element) ?: return + val file = element.containingFile ?: return + if (isJavaOrKotlinFileType(file) && element is PsiLiteralExpression) { + val injectionFile = initInjectionElement(file, element.project, element) ?: return injectionFile.accept(this) super.visitElement(element) } - if (isInjectionSqlFile(visitFile)) { + if (isInjectionSqlFile(file)) { element.acceptChildren(this) } } @@ -58,11 +56,9 @@ class SqlInspectionVisitor( override fun visitElFieldAccessExpr(element: SqlElFieldAccessExpr) { super.visitElFieldAccessExpr(element) - if (setFile(element)) return - val visitFile: PsiFile = file ?: return - + val file = element.containingFile ?: return val processor = InspectionFieldAccessVisitorProcessor(shortName, element) - processor.check(holder, visitFile) + processor.check(holder, file) } override fun visitElForDirective(element: SqlElForDirective) { @@ -72,12 +68,10 @@ class SqlInspectionVisitor( } override fun visitElPrimaryExpr(element: SqlElPrimaryExpr) { - super.visitElPrimaryExpr(element) + val file = element.containingFile ?: return if (!element.isFirstElement() || element.prevSibling?.elementType == SqlTypes.AT_SIGN) return - if (setFile(element)) return - val visitFile: PsiFile = file ?: return val processor = InspectionPrimaryVisitorProcessor(this.shortName, element) - processor.check(holder, visitFile) + processor.check(holder, file) } } diff --git a/src/main/kotlin/org/domaframework/doma/intellij/inspection/sql/visitor/SqlTestDataAfterBlockCommentVisitor.kt b/src/main/kotlin/org/domaframework/doma/intellij/inspection/sql/visitor/SqlTestDataAfterBlockCommentVisitor.kt index b579e698..61229835 100644 --- a/src/main/kotlin/org/domaframework/doma/intellij/inspection/sql/visitor/SqlTestDataAfterBlockCommentVisitor.kt +++ b/src/main/kotlin/org/domaframework/doma/intellij/inspection/sql/visitor/SqlTestDataAfterBlockCommentVisitor.kt @@ -18,7 +18,6 @@ package org.domaframework.doma.intellij.inspection.sql.visitor import com.intellij.codeInspection.ProblemsHolder import com.intellij.psi.PsiComment import com.intellij.psi.PsiElement -import com.intellij.psi.PsiFile import com.intellij.psi.PsiLiteralExpression import com.intellij.psi.util.PsiTreeUtil import com.intellij.psi.util.nextLeafs @@ -37,14 +36,13 @@ class SqlTestDataAfterBlockCommentVisitor( private val shortName: String, ) : SqlVisitorBase() { override fun visitElement(element: PsiElement) { - if (setFile(element)) return - val visitFile: PsiFile = file ?: return - if (isJavaOrKotlinFileType(visitFile) && element is PsiLiteralExpression) { - val injectionFile = initInjectionElement(visitFile, element.project, element) ?: return + val file = element.containingFile ?: return + if (isJavaOrKotlinFileType(file) && element is PsiLiteralExpression) { + val injectionFile = initInjectionElement(file, element.project, element) ?: return injectionFile.accept(this) super.visitElement(element) } - if (isInjectionSqlFile(visitFile)) { + if (isInjectionSqlFile(file)) { element.acceptChildren(this) } } diff --git a/src/main/kotlin/org/domaframework/doma/intellij/inspection/sql/visitor/SqlVisitorBase.kt b/src/main/kotlin/org/domaframework/doma/intellij/inspection/sql/visitor/SqlVisitorBase.kt index d228201b..016676ca 100644 --- a/src/main/kotlin/org/domaframework/doma/intellij/inspection/sql/visitor/SqlVisitorBase.kt +++ b/src/main/kotlin/org/domaframework/doma/intellij/inspection/sql/visitor/SqlVisitorBase.kt @@ -17,22 +17,12 @@ package org.domaframework.doma.intellij.inspection.sql.visitor import com.intellij.lang.injection.InjectedLanguageManager import com.intellij.openapi.project.Project -import com.intellij.psi.PsiElement import com.intellij.psi.PsiFile import com.intellij.psi.PsiLiteralExpression import org.domaframework.doma.intellij.common.isJavaOrKotlinFileType import org.domaframework.doma.intellij.psi.SqlVisitor open class SqlVisitorBase : SqlVisitor() { - var file: PsiFile? = null - - protected fun setFile(element: PsiElement): Boolean { - if (file == null) { - file = element.containingFile - } - return false - } - /** * For processing inside Sql annotations, get it as an injected custom language */ diff --git a/src/test/testData/src/main/java/doma/example/dao/inspection/TestDataCheckDao.java b/src/test/testData/src/main/java/doma/example/dao/inspection/TestDataCheckDao.java index 78f31c31..d3ace64b 100644 --- a/src/test/testData/src/main/java/doma/example/dao/inspection/TestDataCheckDao.java +++ b/src/test/testData/src/main/java/doma/example/dao/inspection/TestDataCheckDao.java @@ -1,6 +1,6 @@ package doma.example.dao.inspection; -import doma.example.entity.*: +import doma.example.entity.*; import org.seasar.doma.*; import org.seasar.doma.jdbc.Config; import org.seasar.doma.jdbc.PreparedSql;