Search in sources :

Example 16 with RefClass

use of com.intellij.codeInspection.reference.RefClass in project intellij-community by JetBrains.

the class ModuleWithTooManyClassesInspection method checkElement.

@Override
@Nullable
public CommonProblemDescriptor[] checkElement(@NotNull RefEntity refEntity, @NotNull AnalysisScope analysisScope, @NotNull InspectionManager inspectionManager, @NotNull GlobalInspectionContext globalInspectionContext) {
    if (!(refEntity instanceof RefModule)) {
        return null;
    }
    final List<RefEntity> children = refEntity.getChildren();
    int numClasses = 0;
    for (RefEntity child : children) {
        if (child instanceof RefClass) {
            numClasses++;
        }
    }
    if (numClasses <= limit) {
        return null;
    }
    final String errorString = InspectionGadgetsBundle.message("module.with.too.many.classes.problem.descriptor", refEntity.getName(), Integer.valueOf(numClasses), Integer.valueOf(limit));
    return new CommonProblemDescriptor[] { inspectionManager.createProblemDescriptor(errorString) };
}
Also used : RefModule(com.intellij.codeInspection.reference.RefModule) RefClass(com.intellij.codeInspection.reference.RefClass) CommonProblemDescriptor(com.intellij.codeInspection.CommonProblemDescriptor) RefEntity(com.intellij.codeInspection.reference.RefEntity) Nullable(org.jetbrains.annotations.Nullable)

Example 17 with RefClass

use of com.intellij.codeInspection.reference.RefClass in project intellij-community by JetBrains.

the class MissingPackageInfoInspectionBase method checkElement.

@Nullable
@Override
public CommonProblemDescriptor[] checkElement(@NotNull RefEntity refEntity, @NotNull AnalysisScope scope, @NotNull InspectionManager manager, @NotNull GlobalInspectionContext globalContext) {
    if (!(refEntity instanceof RefPackage)) {
        return null;
    }
    final RefPackage refPackage = (RefPackage) refEntity;
    final String packageName = refPackage.getQualifiedName();
    final Project project = globalContext.getProject();
    final PsiPackage aPackage = JavaPsiFacade.getInstance(project).findPackage(packageName);
    if (hasPackageInfoFile(aPackage)) {
        return null;
    }
    final List<RefEntity> children = refPackage.getChildren();
    boolean hasClasses = false;
    for (RefEntity child : children) {
        if (child instanceof RefClass) {
            hasClasses = true;
            break;
        }
    }
    if (!hasClasses) {
        return null;
    }
    if (PsiUtil.isLanguageLevel5OrHigher(aPackage)) {
        return new CommonProblemDescriptor[] { manager.createProblemDescriptor(InspectionGadgetsBundle.message("missing.package.info.problem.descriptor", packageName)) };
    } else {
        return new CommonProblemDescriptor[] { manager.createProblemDescriptor(InspectionGadgetsBundle.message("missing.package.html.problem.descriptor", packageName)) };
    }
}
Also used : Project(com.intellij.openapi.project.Project) RefClass(com.intellij.codeInspection.reference.RefClass) CommonProblemDescriptor(com.intellij.codeInspection.CommonProblemDescriptor) RefEntity(com.intellij.codeInspection.reference.RefEntity) RefPackage(com.intellij.codeInspection.reference.RefPackage) Nullable(org.jetbrains.annotations.Nullable)

Example 18 with RefClass

use of com.intellij.codeInspection.reference.RefClass in project intellij-community by JetBrains.

the class ClassWithTooManyDependenciesInspection method runInspection.

@Override
public void runInspection(@NotNull AnalysisScope scope, @NotNull final InspectionManager inspectionManager, @NotNull GlobalInspectionContext globalInspectionContext, @NotNull final ProblemDescriptionsProcessor problemDescriptionsProcessor) {
    final RefManager refManager = globalInspectionContext.getRefManager();
    refManager.iterate(new RefJavaVisitor() {

        @Override
        public void visitClass(@NotNull RefClass refClass) {
            super.visitClass(refClass);
            if (refClass.getOwner() instanceof RefClass) {
                return;
            }
            final Set<RefClass> dependencies = DependencyUtils.calculateDependenciesForClass(refClass);
            final int numDependencies = dependencies.size();
            if (numDependencies <= limit) {
                return;
            }
            final String errorString = InspectionGadgetsBundle.message("class.with.too.many.dependencies.problem.descriptor", refClass.getName(), numDependencies, limit);
            final CommonProblemDescriptor[] descriptors = { inspectionManager.createProblemDescriptor(errorString) };
            problemDescriptionsProcessor.addProblemElement(refClass, descriptors);
        }
    });
}
Also used : RefJavaVisitor(com.intellij.codeInspection.reference.RefJavaVisitor) RefClass(com.intellij.codeInspection.reference.RefClass) Set(java.util.Set) RefManager(com.intellij.codeInspection.reference.RefManager)

Example 19 with RefClass

use of com.intellij.codeInspection.reference.RefClass in project intellij-community by JetBrains.

the class ClassWithTooManyDependentsInspection method checkElement.

@Override
@Nullable
public CommonProblemDescriptor[] checkElement(@NotNull RefEntity refEntity, @NotNull AnalysisScope analysisScope, @NotNull InspectionManager inspectionManager, @NotNull GlobalInspectionContext globalInspectionContext) {
    if (!(refEntity instanceof RefClass)) {
        return null;
    }
    final RefClass refClass = (RefClass) refEntity;
    final PsiClass aClass = refClass.getElement();
    if (ClassUtils.isInnerClass(aClass)) {
        return null;
    }
    final Set<RefClass> dependents = DependencyUtils.calculateDependentsForClass(refClass);
    final int numDependents = dependents.size();
    if (numDependents <= limit) {
        return null;
    }
    final String errorString = InspectionGadgetsBundle.message("class.with.too.many.dependents.problem.descriptor", refEntity.getName(), numDependents, limit);
    return new CommonProblemDescriptor[] { inspectionManager.createProblemDescriptor(errorString) };
}
Also used : RefClass(com.intellij.codeInspection.reference.RefClass) CommonProblemDescriptor(com.intellij.codeInspection.CommonProblemDescriptor) PsiClass(com.intellij.psi.PsiClass) Nullable(org.jetbrains.annotations.Nullable)

Example 20 with RefClass

use of com.intellij.codeInspection.reference.RefClass in project intellij-community by JetBrains.

the class InitializationDependencyUtils method tabulateInitializationDependencyClasses.

@SuppressWarnings({ "MethodWithMultipleLoops" })
static void tabulateInitializationDependencyClasses(RefElement element, Set<RefClass> dependencies) {
    final Collection<RefElement> references = element.getOutReferences();
    final RefJavaUtil refUtil = RefJavaUtil.getInstance();
    for (RefElement reference : references) {
        final RefClass refClass = refUtil.getTopLevelClass(reference);
        if (refClass != null) {
            dependencies.add(refClass);
        }
    }
    final List<RefEntity> children = element.getChildren();
    for (RefEntity child : children) {
        if (child instanceof RefElement) {
            tabulateInitializationDependencyClasses((RefElement) child, dependencies);
        }
    }
}
Also used : RefElement(com.intellij.codeInspection.reference.RefElement) RefClass(com.intellij.codeInspection.reference.RefClass) RefEntity(com.intellij.codeInspection.reference.RefEntity) RefJavaUtil(com.intellij.codeInspection.reference.RefJavaUtil)

Aggregations

RefClass (com.intellij.codeInspection.reference.RefClass)21 Nullable (org.jetbrains.annotations.Nullable)14 CommonProblemDescriptor (com.intellij.codeInspection.CommonProblemDescriptor)13 RefEntity (com.intellij.codeInspection.reference.RefEntity)11 PsiClass (com.intellij.psi.PsiClass)8 RefPackage (com.intellij.codeInspection.reference.RefPackage)7 HashSet (java.util.HashSet)6 RefModule (com.intellij.codeInspection.reference.RefModule)4 Set (java.util.Set)3 RefElement (com.intellij.codeInspection.reference.RefElement)2 RefJavaUtil (com.intellij.codeInspection.reference.RefJavaUtil)2 Project (com.intellij.openapi.project.Project)2 PsiIdentifier (com.intellij.psi.PsiIdentifier)2 RefJavaVisitor (com.intellij.codeInspection.reference.RefJavaVisitor)1 RefManager (com.intellij.codeInspection.reference.RefManager)1 Module (com.intellij.openapi.module.Module)1 PsiElement (com.intellij.psi.PsiElement)1 ArrayList (java.util.ArrayList)1