Skip to content

Commit a5106a4

Browse files
authored
Merge pull request #128 from domaframework/fix/static-field-reference-log
Added a condition to output logs only when references are resolved
2 parents 6f93338 + 032f9d5 commit a5106a4

File tree

4 files changed

+69
-46
lines changed

4 files changed

+69
-46
lines changed

src/main/kotlin/org/domaframework/doma/intellij/reference/SqlElClassExprReference.kt

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,15 @@ class SqlElClassExprReference(
2929
): PsiElement? {
3030
val variableName = element.text
3131
val psiStaticElement = PsiStaticElement(variableName, file)
32-
PluginLoggerUtil.countLogging(
33-
this::class.java.simpleName,
34-
"ReferenceStaticClass",
35-
"Reference",
36-
startTime,
37-
)
38-
return psiStaticElement.getRefClazz()
32+
val reference = psiStaticElement.getRefClazz()
33+
if (reference == null) {
34+
PluginLoggerUtil.countLogging(
35+
this::class.java.simpleName,
36+
"ReferenceStaticClass",
37+
"Reference",
38+
startTime,
39+
)
40+
}
41+
return reference
3942
}
4043
}

src/main/kotlin/org/domaframework/doma/intellij/reference/SqlElForDirectiveIdExprReference.kt

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,14 @@ class SqlElForDirectiveIdExprReference(
3131
file: PsiFile,
3232
): PsiElement? {
3333
val declarationItem = getDeclarationItem()
34-
PluginLoggerUtil.countLogging(
35-
this::class.java.simpleName,
36-
"ReferenceForDirectiveItem",
37-
"Reference",
38-
startTime,
39-
)
34+
if (declarationItem != null) {
35+
PluginLoggerUtil.countLogging(
36+
this::class.java.simpleName,
37+
"ReferenceForDirectiveItem",
38+
"Reference",
39+
startTime,
40+
)
41+
}
4042
return declarationItem
4143
}
4244

src/main/kotlin/org/domaframework/doma/intellij/reference/SqlElIdExprReference.kt

Lines changed: 38 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ import org.domaframework.doma.intellij.common.sql.validator.result.ValidationCom
2828
import org.domaframework.doma.intellij.extension.psi.findParameter
2929
import org.domaframework.doma.intellij.extension.psi.getDomaAnnotationType
3030
import org.domaframework.doma.intellij.extension.psi.getIterableClazz
31-
import org.domaframework.doma.intellij.extension.psi.methodParameters
3231
import org.domaframework.doma.intellij.inspection.ForDirectiveInspection
3332
import org.domaframework.doma.intellij.psi.SqlElFieldAccessExpr
3433
import org.domaframework.doma.intellij.psi.SqlTypes
@@ -73,12 +72,14 @@ class SqlElIdExprReference(
7372
val targetParent = targetReferenceClass.parentClass
7473
val reference =
7574
targetParent.findField(searchText) ?: targetParent.findMethod(searchText)
76-
PluginLoggerUtil.countLogging(
77-
this::class.java.simpleName,
78-
"ReferenceEntityProperty",
79-
"Reference",
80-
startTime,
81-
)
75+
if (reference != null) {
76+
PluginLoggerUtil.countLogging(
77+
this::class.java.simpleName,
78+
"ReferenceEntityProperty",
79+
"Reference",
80+
startTime,
81+
)
82+
}
8283
return reference
8384
}
8485
}
@@ -106,31 +107,36 @@ class SqlElIdExprReference(
106107
bindElement: PsiElement,
107108
startTime: Long,
108109
): PsiElement? {
109-
daoMethod
110-
.let { method ->
111-
method.methodParameters.firstOrNull { param ->
112-
param.name == bindElement.text
113-
}
114-
}?.let { originalElm ->
115-
PluginLoggerUtil.countLogging(
116-
this::class.java.simpleName,
117-
"ReferenceDaoMethodParameter",
118-
"Reference",
119-
startTime,
120-
)
121-
psiClassType = originalElm.type
122-
return originalElm.originalElement
123-
} ?: return null
110+
daoMethod.findParameter(bindElement.text)?.let { originalElm ->
111+
PluginLoggerUtil.countLogging(
112+
this::class.java.simpleName,
113+
"ReferenceDaoMethodParameter",
114+
"Reference",
115+
startTime,
116+
)
117+
psiClassType = originalElm.type
118+
return originalElm.originalElement
119+
} ?: return null
124120
}
125121

126122
private fun getReferenceEntity(
127123
topParentClass: PsiParentClass,
128124
targetElement: List<PsiElement>,
129125
startTime: Long,
130126
): PsiElement? {
127+
val searchText = cleanString(targetElement.lastOrNull()?.text ?: "")
131128
if (targetElement.size <= 2) {
132-
val searchText = targetElement.lastOrNull()?.text ?: ""
133-
return topParentClass.findField(searchText) ?: topParentClass.findMethod(searchText)
129+
val reference =
130+
topParentClass.findField(searchText) ?: topParentClass.findMethod(searchText)
131+
if (reference != null) {
132+
PluginLoggerUtil.countLogging(
133+
this::class.java.simpleName,
134+
"ReferenceEntityProperty",
135+
"Reference",
136+
startTime,
137+
)
138+
}
139+
return reference
134140
}
135141

136142
val validator =
@@ -141,14 +147,15 @@ class SqlElIdExprReference(
141147
val validateResult = validator.validateChildren()
142148
if (validateResult != null) {
143149
val targetClass = validateResult.parentClass ?: return null
144-
val searchText = targetElement.lastOrNull()?.text ?: ""
145150
val reference = targetClass.findField(searchText) ?: targetClass.findMethod(searchText)
146-
PluginLoggerUtil.countLogging(
147-
this::class.java.simpleName,
148-
"ReferenceEntityProperty",
149-
"Reference",
150-
startTime,
151-
)
151+
if (reference != null) {
152+
PluginLoggerUtil.countLogging(
153+
this::class.java.simpleName,
154+
"ReferenceEntityProperty",
155+
"Reference",
156+
startTime,
157+
)
158+
}
152159
return reference
153160
}
154161
return null

src/main/kotlin/org/domaframework/doma/intellij/reference/SqlElStaticFieldReference.kt

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ package org.domaframework.doma.intellij.reference
1818
import com.intellij.psi.PsiElement
1919
import com.intellij.psi.PsiFile
2020
import com.intellij.psi.util.PsiTreeUtil
21+
import org.domaframework.doma.intellij.common.PluginLoggerUtil
2122
import org.domaframework.doma.intellij.common.sql.validator.SqlElStaticFieldAccessorChildElementValidator
2223
import org.domaframework.doma.intellij.common.sql.validator.result.ValidationCompleteResult
2324
import org.domaframework.doma.intellij.psi.SqlElStaticFieldAccessExpr
@@ -33,7 +34,8 @@ class SqlElStaticFieldReference(
3334
PsiTreeUtil.getParentOfType(element, SqlElStaticFieldAccessExpr::class.java)
3435
if (staticAccessParent == null) return null
3536

36-
val targetElements = getBlockCommentElements(element, SqlElStaticFieldAccessExpr::class.java)
37+
val targetElements =
38+
getBlockCommentElements(element, SqlElStaticFieldAccessExpr::class.java)
3739
val validator =
3840
SqlElStaticFieldAccessorChildElementValidator(
3941
targetElements,
@@ -53,7 +55,16 @@ class SqlElStaticFieldReference(
5355
if (fieldAccessLastParentResult is ValidationCompleteResult) {
5456
val searchText = element.text ?: ""
5557
val parent = fieldAccessLastParentResult.parentClass
56-
return parent.findField(searchText) ?: parent.findMethod(searchText)
58+
val reference = parent.findField(searchText) ?: parent.findMethod(searchText)
59+
if (reference != null) {
60+
PluginLoggerUtil.countLogging(
61+
this::class.java.simpleName,
62+
"ReferenceStaticProperty",
63+
"Reference",
64+
startTime,
65+
)
66+
}
67+
return reference
5768
}
5869

5970
return null

0 commit comments

Comments
 (0)