Provide XML-specified inspection properties to tool instances

This commit is contained in:
Roman Shevchenko
2012-11-10 21:36:44 +01:00
parent 39d9fd7235
commit 1eef8f0897
5 changed files with 72 additions and 16 deletions
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2009 JetBrains s.r.o.
* Copyright 2000-2012 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -120,6 +120,7 @@ public abstract class BaseJavaLocalInspectionTool extends LocalInspectionTool i
}
public boolean isSuppressedFor(final PsiElement element) {
return SuppressManager.getInstance().isSuppressedFor(element, getID()) || SuppressManager.getInstance().isSuppressedFor(element, getAlternativeID());
final SuppressManager manager = SuppressManager.getInstance();
return manager.isSuppressedFor(element, getID()) || manager.isSuppressedFor(element, getAlternativeID());
}
}
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2011 JetBrains s.r.o.
* Copyright 2000-2012 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -33,10 +33,10 @@ import java.util.ResourceBundle;
/**
* @author Dmitry Avdeev
* Date: 9/27/11
* @since 27.09.2011
* @see LocalInspectionEP
*/
public class InspectionEP extends LanguageExtensionPoint {
public class InspectionEP extends LanguageExtensionPoint implements InspectionProfileEntry.DefaultNameProvider {
/** @see GlobalInspectionTool */
public final static ExtensionPointName<InspectionEP> GLOBAL_INSPECTION = ExtensionPointName.create("com.intellij.globalInspection");
@@ -138,7 +138,9 @@ public class InspectionEP extends LanguageExtensionPoint {
public InspectionProfileEntry instantiateTool() {
try {
return instantiate(implementationClass, ApplicationManager.getApplication().getPicoContainer());
final InspectionProfileEntry entry = instantiate(implementationClass, ApplicationManager.getApplication().getPicoContainer());
entry.myNameProvider = this;
return entry;
}
catch (ClassNotFoundException e) {
throw new RuntimeException(e);
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2011 JetBrains s.r.o.
* Copyright 2000-2012 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -40,7 +40,7 @@ import java.util.Set;
/**
* @author anna
* Date: 28-Nov-2005
* @since 28-Nov-2005
*/
public abstract class InspectionProfileEntry {
public static final String GENERAL_GROUP_NAME = InspectionsBundle.message("inspection.general.tools.group.name");
@@ -52,6 +52,14 @@ public abstract class InspectionProfileEntry {
private static final Object BLACK_LIST_LOCK = new Object();
private Boolean myUseNewSerializer = null;
interface DefaultNameProvider {
@Nullable String getShortName();
@Nullable String getDisplayName();
@Nullable String getGroupDisplayName();
}
protected volatile DefaultNameProvider myNameProvider = null;
/**
* @see InspectionEP#groupDisplayName
* @see InspectionEP#groupKey
@@ -59,6 +67,12 @@ public abstract class InspectionProfileEntry {
*/
@Nls @NotNull
public String getGroupDisplayName() {
if (myNameProvider != null) {
final String name = myNameProvider.getGroupDisplayName();
if (name != null) {
return name;
}
}
LOG.error(getClass() + ": group display name should be overridden or configured via XML " + getClass());
return "";
}
@@ -82,6 +96,12 @@ public abstract class InspectionProfileEntry {
*/
@Nls @NotNull
public String getDisplayName() {
if (myNameProvider != null) {
final String name = myNameProvider.getDisplayName();
if (name != null) {
return name;
}
}
LOG.error(getClass() + ": display name should be overridden or configured via XML " + getClass());
return "";
}
@@ -93,6 +113,12 @@ public abstract class InspectionProfileEntry {
*/
@NonNls @NotNull
public String getShortName() {
if (myNameProvider != null) {
final String name = myNameProvider.getShortName();
if (name != null) {
return name;
}
}
return getShortName(getClass().getSimpleName());
}
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2011 JetBrains s.r.o.
* Copyright 2000-2012 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -17,12 +17,13 @@ package com.intellij.codeInspection;
import com.intellij.openapi.extensions.ExtensionPointName;
import com.intellij.util.xmlb.annotations.Attribute;
import org.jetbrains.annotations.Nullable;
/**
* @author Dmitry Avdeev
* Date: 9/28/11
* @since 28.09.2011
*/
public class LocalInspectionEP extends InspectionEP {
public class LocalInspectionEP extends InspectionEP implements LocalInspectionTool.LocalDefaultNameProvider {
public final static ExtensionPointName<LocalInspectionEP> LOCAL_INSPECTION = ExtensionPointName.create("com.intellij.localInspection");
@@ -37,4 +38,16 @@ public class LocalInspectionEP extends InspectionEP {
@Attribute("unfair")
public boolean unfair;
@Nullable
@Override
public String getID() {
return id;
}
@Nullable
@Override
public String getAlternativeID() {
return alternativeId;
}
}
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2009 JetBrains s.r.o.
* Copyright 2000-2012 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,10 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/*
* @author max
*/
package com.intellij.codeInspection;
import com.intellij.openapi.diagnostic.Logger;
@@ -31,10 +27,19 @@ import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
/**
* @author max
*/
public abstract class LocalInspectionTool extends InspectionProfileEntry {
public static final LocalInspectionTool[] EMPTY_ARRAY = new LocalInspectionTool[0];
private static final Logger LOG = Logger.getInstance("#" + LocalInspectionTool.class.getName());
interface LocalDefaultNameProvider extends DefaultNameProvider {
@Nullable String getID();
@Nullable String getAlternativeID();
}
/**
* Pattern used for inspection ID validation.
*/
@@ -56,12 +61,21 @@ public abstract class LocalInspectionTool extends InspectionProfileEntry {
@NonNls
@NotNull
public String getID() {
if (myNameProvider instanceof LocalDefaultNameProvider) {
final String id = ((LocalDefaultNameProvider)myNameProvider).getID();
if (id != null) {
return id;
}
}
return getShortName();
}
@NonNls
@Nullable
public String getAlternativeID() {
if (myNameProvider instanceof LocalDefaultNameProvider) {
return ((LocalDefaultNameProvider)myNameProvider).getAlternativeID();
}
return null;
}