Variable 'variable' might not have been initialized compilation error suppressing by custom annotation Follow
Answered
Hi Dev Team!
I would like to make a little cheat on Java syntax.
There is a built-in compilation error like Variable 'variable' might not have been initialized
I am working on a framework and there is some recompilation process and works on background but intellij doesn't allow this.
For instance I want this code compile:
public void method() {
@Recall("random value") String variable;
System.out.println(variable);
}
Is this possible via custom IDEA plugin?
Looking forward to the answer!
Thank you!
Please sign in to leave a comment.
https://plugins.jetbrains.com/docs/intellij/controlling-highlighting.html can be used to suppress this, in fact de.plushnikov.intellij.plugin.extension.LombokHighlightErrorFilter.LombokHighlightFilter#VARIABLE_MIGHT_NOT_BEEN_INITIALIZED in Lombok plugin does that.
Yann Cebron That worked for me. Thank you!
Yann Cebron
going further a bit. Now how can I check if annotation present on local variable?
accept(...) method provides PsiFile and HighlighterInfo objects.
I supress now such compilation errors by a description. However this is a half way to my goal.
Main goal is to supress it by description AND if variable is marked by annotation.
But I wasn't able to figure out how I can retreive variable annotation to check the presense only given PsiFile and highlighter info?
You'll need to locate the related PsiElement reprenting the variable declaration using text offset from HighlightInfo. See https://plugins.jetbrains.com/docs/intellij/navigating-psi.html#bottom-up-navigation for some sample.
Then use com.intellij.codeInsight.AnnotationUtil from Java PSI API to inspect whether annotation is present for found PsiVariable etc.
Thank you!
Had to use some recursion instead using .getParent() and .getPrevSibling() method.
PsiTreeUtil.getParentOfType() should work