mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
(no message)
This commit is contained in:
+66
-67
@@ -5,6 +5,8 @@ import com.intellij.codeInspection.ProblemDescriptor;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.javadoc.PsiDocComment;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.psi.codeStyle.CodeStyleManager;
|
||||
import com.intellij.psi.codeStyle.CodeStyleSettings;
|
||||
import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
|
||||
@@ -15,136 +17,133 @@ import com.siyeh.ig.ClassInspection;
|
||||
import com.siyeh.ig.InspectionGadgetsFix;
|
||||
import com.siyeh.ig.psiutils.ClassUtils;
|
||||
import com.siyeh.ig.psiutils.ImportUtils;
|
||||
import com.siyeh.ig.ui.SingleCheckboxOptionsPanel;
|
||||
|
||||
public class UnnecessaryFullyQualifiedNameInspection extends ClassInspection {
|
||||
import javax.swing.*;
|
||||
|
||||
private final UnnecessaryFullyQualifiedNameFix fix = new UnnecessaryFullyQualifiedNameFix();
|
||||
public class UnnecessaryFullyQualifiedNameInspection extends ClassInspection{
|
||||
public boolean m_ignoreJavadoc = false;
|
||||
|
||||
public String getDisplayName() {
|
||||
private final UnnecessaryFullyQualifiedNameFix fix =
|
||||
new UnnecessaryFullyQualifiedNameFix();
|
||||
|
||||
public String getDisplayName(){
|
||||
return "Unnecessary fully qualified name";
|
||||
}
|
||||
|
||||
public String getGroupDisplayName() {
|
||||
public String getGroupDisplayName(){
|
||||
return com.siyeh.ig.GroupNames.VERBOSE_GROUP_NAME;
|
||||
}
|
||||
|
||||
public String buildErrorString(PsiElement location) {
|
||||
public JComponent createOptionsPanel(){
|
||||
return new SingleCheckboxOptionsPanel("Ignore fully qualified names in javadoc",
|
||||
this,
|
||||
"m_ignoreJavadoc");
|
||||
}
|
||||
|
||||
public String buildErrorString(PsiElement location){
|
||||
return "Fully qualified name #ref is unnecessary, and can be replaced with an import #loc";
|
||||
}
|
||||
|
||||
|
||||
public BaseInspectionVisitor createVisitor(InspectionManager inspectionManager, boolean onTheFly) {
|
||||
return new UnnecessaryFullyQualifiedNameVisitor(this, inspectionManager, onTheFly);
|
||||
public BaseInspectionVisitor createVisitor(InspectionManager inspectionManager,
|
||||
boolean onTheFly){
|
||||
return new UnnecessaryFullyQualifiedNameVisitor(this, inspectionManager,
|
||||
onTheFly);
|
||||
}
|
||||
|
||||
public InspectionGadgetsFix buildFix(PsiElement location) {
|
||||
public InspectionGadgetsFix buildFix(PsiElement location){
|
||||
return fix;
|
||||
}
|
||||
|
||||
private static class UnnecessaryFullyQualifiedNameFix extends InspectionGadgetsFix {
|
||||
public String getName() {
|
||||
private static class UnnecessaryFullyQualifiedNameFix
|
||||
extends InspectionGadgetsFix{
|
||||
public String getName(){
|
||||
return "Replace with import";
|
||||
}
|
||||
|
||||
public void applyFix(Project project, ProblemDescriptor descriptor) {
|
||||
final CodeStyleSettingsManager settingsManager = CodeStyleSettingsManager.getInstance(project);
|
||||
final CodeStyleSettings settings = settingsManager.getCurrentSettings();
|
||||
final boolean oldUseFQNamesInJavadoc = settings.USE_FQ_CLASS_NAMES_IN_JAVADOC;
|
||||
public void applyFix(Project project, ProblemDescriptor descriptor){
|
||||
final CodeStyleSettingsManager settingsManager =
|
||||
CodeStyleSettingsManager.getInstance(project);
|
||||
final CodeStyleSettings settings =
|
||||
settingsManager.getCurrentSettings();
|
||||
final boolean oldUseFQNamesInJavadoc =
|
||||
settings.USE_FQ_CLASS_NAMES_IN_JAVADOC;
|
||||
final boolean oldUseFQNames = settings.USE_FQ_CLASS_NAMES;
|
||||
try {
|
||||
try{
|
||||
settings.USE_FQ_CLASS_NAMES_IN_JAVADOC = false;
|
||||
settings.USE_FQ_CLASS_NAMES = false;
|
||||
final PsiJavaCodeReferenceElement reference = (PsiJavaCodeReferenceElement) descriptor.getPsiElement();
|
||||
final PsiJavaCodeReferenceElement reference =
|
||||
(PsiJavaCodeReferenceElement) descriptor.getPsiElement();
|
||||
final PsiManager psiManager = reference.getManager();
|
||||
final CodeStyleManager styleManager = psiManager.getCodeStyleManager();
|
||||
final CodeStyleManager styleManager =
|
||||
psiManager.getCodeStyleManager();
|
||||
styleManager.shortenClassReferences(reference);
|
||||
} catch (IncorrectOperationException e) {
|
||||
} catch(IncorrectOperationException e){
|
||||
final Class thisClass = getClass();
|
||||
final String className = thisClass.getName();
|
||||
final Logger logger = Logger.getInstance(className);
|
||||
logger.error(e);
|
||||
} finally {
|
||||
} finally{
|
||||
settings.USE_FQ_CLASS_NAMES_IN_JAVADOC = oldUseFQNamesInJavadoc;
|
||||
settings.USE_FQ_CLASS_NAMES = oldUseFQNames;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private class UnnecessaryFullyQualifiedNameVisitor extends BaseInspectionVisitor {
|
||||
private class UnnecessaryFullyQualifiedNameVisitor
|
||||
extends BaseInspectionVisitor{
|
||||
private boolean m_inClass = false;
|
||||
|
||||
private UnnecessaryFullyQualifiedNameVisitor(BaseInspection inspection, InspectionManager inspectionManager, boolean isOnTheFly) {
|
||||
private UnnecessaryFullyQualifiedNameVisitor(BaseInspection inspection,
|
||||
InspectionManager inspectionManager,
|
||||
boolean isOnTheFly){
|
||||
super(inspection, inspectionManager, isOnTheFly);
|
||||
}
|
||||
|
||||
public void visitClass(PsiClass aClass) {
|
||||
public void visitClass(PsiClass aClass){
|
||||
final boolean wasInClass = m_inClass;
|
||||
if (!m_inClass) {
|
||||
if(!m_inClass){
|
||||
|
||||
m_inClass = true;
|
||||
super.visitClass(aClass);
|
||||
}
|
||||
m_inClass = wasInClass;
|
||||
}
|
||||
|
||||
/*
|
||||
public void visitReferenceExpression(PsiReferenceExpression expression) {
|
||||
final PsiExpression qualifier = expression.getQualifierExpression();
|
||||
final String expressionText = expression.getText();
|
||||
if (expressionText.indexOf((int) '.') < 0) {
|
||||
return;
|
||||
}
|
||||
final PsiElement psiElement = expression.resolve();
|
||||
if (!(psiElement instanceof PsiClass)) {
|
||||
if (qualifier != null) {
|
||||
qualifier.accept(this);
|
||||
}
|
||||
return;
|
||||
}
|
||||
final PsiReferenceParameterList typeParameters = expression.getParameterList();
|
||||
if (typeParameters != null) {
|
||||
typeParameters.accept(this);
|
||||
}
|
||||
final PsiClass aClass = (PsiClass) psiElement;
|
||||
final PsiClass outerClass = ClassUtils.getOutermostContainingClass(aClass);
|
||||
final String fqName = outerClass.getQualifiedName();
|
||||
if (!expressionText.startsWith(fqName)) {
|
||||
return;
|
||||
}
|
||||
final PsiJavaFile file = (PsiJavaFile) expression.getContainingFile();
|
||||
|
||||
if (!ImportUtils.nameCanBeImported(expressionText, file)) {
|
||||
return;
|
||||
}
|
||||
registerError(expression);
|
||||
}
|
||||
*/
|
||||
public void visitReferenceElement(PsiJavaCodeReferenceElement element) {
|
||||
public void visitReferenceElement(PsiJavaCodeReferenceElement element){
|
||||
if(m_ignoreJavadoc)
|
||||
{
|
||||
final PsiElement containingComment =
|
||||
PsiTreeUtil.getParentOfType(element, PsiDocComment.class);
|
||||
if(containingComment!=null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
final String text = element.getText();
|
||||
if (text.indexOf((int) '.') < 0) {
|
||||
if(text.indexOf((int) '.') < 0){
|
||||
return;
|
||||
}
|
||||
final PsiElement psiElement = element.resolve();
|
||||
if (!(psiElement instanceof PsiClass)) {
|
||||
if(!(psiElement instanceof PsiClass)){
|
||||
return;
|
||||
}
|
||||
final PsiReferenceParameterList typeParameters = element.getParameterList();
|
||||
if (typeParameters != null) {
|
||||
final PsiReferenceParameterList typeParameters =
|
||||
element.getParameterList();
|
||||
if(typeParameters != null){
|
||||
typeParameters.accept(this);
|
||||
}
|
||||
final PsiClass aClass = (PsiClass) psiElement;
|
||||
final PsiClass outerClass = ClassUtils.getOutermostContainingClass(aClass);
|
||||
final PsiClass outerClass =
|
||||
ClassUtils.getOutermostContainingClass(aClass);
|
||||
final String fqName = outerClass.getQualifiedName();
|
||||
if (!element.getText().startsWith(fqName)) {
|
||||
if(!text.startsWith(fqName)){
|
||||
return;
|
||||
}
|
||||
final PsiJavaFile file = (PsiJavaFile) element.getContainingFile();
|
||||
if (!ImportUtils.nameCanBeImported(text, file)) {
|
||||
if(!ImportUtils.nameCanBeImported(text, file)){
|
||||
return;
|
||||
}
|
||||
registerError(element);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user