Merge branch 'master' of git.labs.intellij.net:idea/community

This commit is contained in:
Kirill.Safonov
2010-04-05 20:04:35 +04:00
14 changed files with 82 additions and 61 deletions
@@ -63,7 +63,7 @@ public class RunConfigurationAction extends ComboBoxAction implements DumbAware
}
try {
if (project == null || project.isDisposed()) {
if (project == null || project.isDisposed() || !project.isInitialized()) {
//if (ProjectManager.getInstance().getOpenProjects().length > 0) {
// // do nothing if frame is not active
// return;
@@ -1,5 +1,5 @@
/*
* Copyright 2003-2007 Dave Griffith, Bas Leijdekkers
* Copyright 2003-2010 Dave Griffith, Bas Leijdekkers
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -15,34 +15,36 @@
*/
package com.siyeh.ig.j2me;
import com.intellij.codeInspection.ui.SingleCheckboxOptionsPanel;
import com.intellij.psi.*;
import com.siyeh.InspectionGadgetsBundle;
import com.siyeh.ig.BaseInspection;
import com.siyeh.ig.BaseInspectionVisitor;
import com.siyeh.ig.performance.VariableAccessVisitor;
import com.siyeh.ig.psiutils.ExpressionUtils;
import com.intellij.codeInspection.ui.SingleCheckboxOptionsPanel;
import org.jetbrains.annotations.NotNull;
import javax.swing.*;
import javax.swing.JComponent;
import java.util.Set;
public class FieldRepeatedlyAccessedInspection extends BaseInspection {
/** @noinspection PublicField*/
public boolean m_ignoreFinalFields = false;
@Override
@NotNull
public String getID(){
return "FieldRepeatedlyAccessedInMethod";
}
@Override
@NotNull
public String getDisplayName() {
return InspectionGadgetsBundle.message(
"field.repeatedly.accessed.in.method.display.name");
}
@Override
@NotNull
public String buildErrorString(Object... arg) {
final String fieldName = ((PsiNamedElement) arg[0]).getName();
@@ -51,12 +53,14 @@ public class FieldRepeatedlyAccessedInspection extends BaseInspection {
fieldName);
}
@Override
public JComponent createOptionsPanel() {
return new SingleCheckboxOptionsPanel(InspectionGadgetsBundle.message(
"field.repeatedly.accessed.in.method.ignore.option"),
this, "m_ignoreFinalFields");
}
@Override
public BaseInspectionVisitor buildVisitor() {
return new FieldRepeatedlyAccessedVisitor();
}
@@ -72,8 +76,11 @@ public class FieldRepeatedlyAccessedInspection extends BaseInspection {
method.accept(visitor);
final Set<PsiField> fields = visitor.getOveraccessedFields();
for(PsiField field : fields){
if(ExpressionUtils.isConstant(field) || m_ignoreFinalFields &&
field.hasModifierProperty(PsiModifier.FINAL)){
if(ExpressionUtils.isConstant(field)){
continue;
}
if(m_ignoreFinalFields &&
field.hasModifierProperty(PsiModifier.FINAL)){
continue;
}
registerError(nameIdentifier, field);
@@ -1,5 +1,5 @@
/*
* Copyright 2003-2005 Dave Griffith
* Copyright 2003-2010 Dave Griffith, Bas Leijdekkers
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.siyeh.ig.performance;
package com.siyeh.ig.j2me;
import com.intellij.psi.*;
import com.siyeh.ig.psiutils.ControlFlowUtils;
@@ -21,17 +21,17 @@ import org.jetbrains.annotations.NotNull;
import java.util.*;
public class VariableAccessVisitor extends JavaRecursiveElementVisitor {
class VariableAccessVisitor extends JavaRecursiveElementVisitor {
private final Map<PsiField,Integer> m_accessCounts =
new HashMap<PsiField, Integer>(2);
private final Set<PsiField> m_overAccessedFields =
new HashSet<PsiField>(2);
@Override public void visitReferenceExpression(@NotNull PsiReferenceExpression ref) {
@Override public void visitReferenceExpression(
@NotNull PsiReferenceExpression ref) {
super.visitReferenceExpression(ref);
final PsiExpression qualifier = ref.getQualifierExpression();
if (qualifier != null && !(qualifier instanceof PsiThisExpression)) {
return;
}
@@ -51,7 +51,7 @@ public class VariableAccessVisitor extends JavaRecursiveElementVisitor {
final Integer count = accessCounts.get(field);
if (count == null) {
accessCounts.put(field, 1);
} else if (count == 1) {
} else if (count.intValue() == 1) {
accessCounts.put(field, 2);
} else {
overAccessedFields.add(field);
@@ -1,5 +1,5 @@
/*
* Copyright 2003-2005 Dave Griffith
* Copyright 2003-2010 Dave Griffith, Bas Leijdekkers
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,7 +18,8 @@ package com.siyeh.ig.psiutils;
import com.intellij.psi.*;
import org.jetbrains.annotations.NotNull;
public class ArrayContentsAccessedVisitor extends JavaRecursiveElementVisitor{
class ArrayContentsAccessedVisitor extends JavaRecursiveElementVisitor{
private boolean accessed = false;
private final PsiVariable variable;
@@ -27,7 +28,8 @@ public class ArrayContentsAccessedVisitor extends JavaRecursiveElementVisitor{
this.variable = variable;
}
@Override public void visitForeachStatement(@NotNull PsiForeachStatement statement){
@Override public void visitForeachStatement(
@NotNull PsiForeachStatement statement){
if(accessed){
return;
}
@@ -36,7 +38,9 @@ public class ArrayContentsAccessedVisitor extends JavaRecursiveElementVisitor{
if(!(qualifier instanceof PsiReferenceExpression)){
return;
}
final PsiElement referent = ((PsiReference) qualifier).resolve();
final PsiReferenceExpression referenceExpression =
(PsiReferenceExpression)qualifier;
final PsiElement referent = referenceExpression.resolve();
if(referent == null){
return;
}
@@ -46,21 +50,29 @@ public class ArrayContentsAccessedVisitor extends JavaRecursiveElementVisitor{
accessed = true;
}
@Override public void visitArrayAccessExpression(PsiArrayAccessExpression arg){
@Override public void visitArrayAccessExpression(
PsiArrayAccessExpression arrayAccessExpression){
if(accessed){
return;
}
super.visitArrayAccessExpression(arg);
if(arg.getParent() instanceof PsiAssignmentExpression &&
((PsiAssignmentExpression) arg.getParent()).getLExpression()
.equals(arg)){
return;
super.visitArrayAccessExpression(arrayAccessExpression);
final PsiElement parent = arrayAccessExpression.getParent();
if(parent instanceof PsiAssignmentExpression) {
final PsiAssignmentExpression assignmentExpression =
(PsiAssignmentExpression)parent;
final PsiExpression lhs = assignmentExpression.getLExpression();
if(lhs.equals(arrayAccessExpression)){
return;
}
}
final PsiExpression arrayExpression = arg.getArrayExpression();
final PsiExpression arrayExpression =
arrayAccessExpression.getArrayExpression();
if(!(arrayExpression instanceof PsiReferenceExpression)){
return;
}
final PsiElement referent = ((PsiReference) arrayExpression).resolve();
final PsiReferenceExpression referenceExpression =
(PsiReferenceExpression)arrayExpression;
final PsiElement referent = referenceExpression.resolve();
if(referent == null){
return;
}
@@ -1,5 +1,5 @@
/*
* Copyright 2003-2009 Dave Griffith, Bas Leijdekkers
* Copyright 2003-2010 Dave Griffith, Bas Leijdekkers
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -20,7 +20,7 @@ import com.intellij.psi.tree.IElementType;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class ArrayContentsAssignedVisitor extends JavaRecursiveElementVisitor {
class ArrayContentsAssignedVisitor extends JavaRecursiveElementVisitor {
private boolean assigned = false;
private final PsiVariable variable;
@@ -40,7 +40,9 @@ public class ArrayContentsAssignedVisitor extends JavaRecursiveElementVisitor {
if(!(arrayExpression instanceof PsiReferenceExpression)){
return;
}
final PsiElement referent = ((PsiReference) arrayExpression).resolve();
final PsiReferenceExpression referenceExpression =
(PsiReferenceExpression)arrayExpression;
final PsiElement referent = referenceExpression.resolve();
if(referent == null){
return;
}
@@ -66,7 +68,9 @@ public class ArrayContentsAssignedVisitor extends JavaRecursiveElementVisitor {
if(!(arrayExpression instanceof PsiReferenceExpression)){
return;
}
final PsiElement referent = ((PsiReference) arrayExpression).resolve();
final PsiReferenceExpression referenceExpression =
(PsiReferenceExpression)arrayExpression;
final PsiElement referent = referenceExpression.resolve();
if(referent == null){
return;
}
@@ -91,7 +95,9 @@ public class ArrayContentsAssignedVisitor extends JavaRecursiveElementVisitor {
if(!(arrayExpression instanceof PsiReferenceExpression)){
return;
}
final PsiElement referent = ((PsiReference) arrayExpression).resolve();
final PsiReferenceExpression referenceExpression =
(PsiReferenceExpression)arrayExpression;
final PsiElement referent = referenceExpression.resolve();
if(referent == null){
return;
}
@@ -1,5 +1,5 @@
/*
* Copyright 2003-2006 Dave Griffith, Bas Leijdekkers
* Copyright 2003-2010 Dave Griffith, Bas Leijdekkers
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,7 +18,7 @@ package com.siyeh.ig.psiutils;
import com.intellij.psi.*;
import org.jetbrains.annotations.NotNull;
public class VariableAssignedFromVisitor extends JavaRecursiveElementVisitor{
class VariableAssignedFromVisitor extends JavaRecursiveElementVisitor{
private boolean assignedFrom = false;
@@ -1,5 +1,5 @@
/*
* Copyright 2003-2009 Dave Griffith, Bas Leijdekkers
* Copyright 2003-2010 Dave Griffith, Bas Leijdekkers
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -20,7 +20,7 @@ import com.intellij.psi.tree.IElementType;
import com.intellij.psi.util.TypeConversionUtil;
import org.jetbrains.annotations.NotNull;
public class VariableAssignedVisitor extends JavaRecursiveElementVisitor{
class VariableAssignedVisitor extends JavaRecursiveElementVisitor{
@NotNull private final PsiVariable variable;
private final boolean recurseIntoClasses;
@@ -1,5 +1,5 @@
/*
* Copyright 2003-2009 Dave Griffith, Bas Leijdekkers
* Copyright 2003-2010 Dave Griffith, Bas Leijdekkers
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -20,7 +20,7 @@ import org.jetbrains.annotations.NotNull;
import java.util.Set;
public class VariablePassedAsArgumentExcludedVisitor
class VariablePassedAsArgumentExcludedVisitor
extends JavaRecursiveElementVisitor{
@NotNull
@@ -1,5 +1,5 @@
/*
* Copyright 2003-2009 Dave Griffith, Bas Leijdekkers
* Copyright 2003-2010 Dave Griffith, Bas Leijdekkers
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,8 +18,7 @@ package com.siyeh.ig.psiutils;
import com.intellij.psi.*;
import org.jetbrains.annotations.NotNull;
public class VariablePassedAsArgumentVisitor
extends JavaRecursiveElementVisitor{
class VariablePassedAsArgumentVisitor extends JavaRecursiveElementVisitor{
@NotNull
private final PsiVariable variable;
@@ -1,5 +1,5 @@
/*
* Copyright 2003-2005 Dave Griffith
* Copyright 2003-2010 Dave Griffith, Bas Leijdekkers
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -21,7 +21,7 @@ import com.intellij.psi.PsiReturnStatement;
import com.intellij.psi.PsiVariable;
import org.jetbrains.annotations.NotNull;
public class VariableReturnedVisitor extends JavaRecursiveElementVisitor {
class VariableReturnedVisitor extends JavaRecursiveElementVisitor {
private boolean returned = false;
@NotNull private final PsiVariable variable;
@@ -1,5 +1,5 @@
/*
* Copyright 2003-2005 Dave Griffith
* Copyright 2003-2010 Dave Griffith, Bas Leijdekkers
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,8 +18,7 @@ package com.siyeh.ig.psiutils;
import com.intellij.psi.*;
import org.jetbrains.annotations.NotNull;
public class VariableUsedInArrayInitializerVisitor
extends JavaRecursiveElementVisitor{
class VariableUsedInArrayInitializerVisitor extends JavaRecursiveElementVisitor{
@NotNull
private final PsiVariable variable;
@@ -42,11 +41,9 @@ public class VariableUsedInArrayInitializerVisitor
return;
}
super.visitArrayInitializerExpression(expression);
final PsiExpression[] args = expression.getInitializers();
for(final PsiExpression arg : args){
if(VariableAccessUtils.mayEvaluateToVariable(arg, variable)){
final PsiExpression[] initializers = expression.getInitializers();
for(final PsiExpression initializer : initializers){
if(VariableAccessUtils.mayEvaluateToVariable(initializer, variable)){
passed = true;
}
}
@@ -1,5 +1,5 @@
/*
* Copyright 2003-2005 Dave Griffith
* Copyright 2003-2010 Dave Griffith, Bas Leijdekkers
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,7 +18,7 @@ package com.siyeh.ig.psiutils;
import com.intellij.psi.*;
import org.jetbrains.annotations.NotNull;
public class VariableUsedInInnerClassVisitor extends JavaRecursiveElementVisitor{
class VariableUsedInInnerClassVisitor extends JavaRecursiveElementVisitor{
@NotNull private final PsiVariable variable;
private boolean usedInInnerClass = false;
@@ -45,17 +45,17 @@ public class VariableUsedInInnerClassVisitor extends JavaRecursiveElementVisitor
inInnerClass = wasInInnerClass;
}
@Override public void visitReferenceExpression(@NotNull PsiReferenceExpression ref){
@Override public void visitReferenceExpression(
@NotNull PsiReferenceExpression referenceExpression){
if(usedInInnerClass){
return;
}
super.visitReferenceExpression(ref);
super.visitReferenceExpression(referenceExpression);
if(!inInnerClass){
return;
}
final PsiElement element = ref.resolve();
if(variable.equals(element)){
final PsiElement target = referenceExpression.resolve();
if(variable.equals(target)){
usedInInnerClass = true;
}
}
@@ -1,5 +1,5 @@
/*
* Copyright 2003-2008 Dave Griffith, Bas Leijdekkers
* Copyright 2003-2010 Dave Griffith, Bas Leijdekkers
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -21,7 +21,7 @@ import com.intellij.psi.PsiReferenceExpression;
import com.intellij.psi.PsiVariable;
import org.jetbrains.annotations.NotNull;
public class VariableUsedVisitor extends JavaRecursiveElementVisitor {
class VariableUsedVisitor extends JavaRecursiveElementVisitor {
private boolean used = false;
@NotNull private final PsiVariable variable;
@@ -1,5 +1,5 @@
/*
* Copyright 2008 Dave Griffith, Bas Leijdekkers
* Copyright 2008-2010 Dave Griffith, Bas Leijdekkers
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -19,7 +19,7 @@ import com.intellij.psi.*;
import com.intellij.psi.tree.IElementType;
import org.jetbrains.annotations.NotNull;
public class VariableValueUsedVisitor extends JavaRecursiveElementVisitor {
class VariableValueUsedVisitor extends JavaRecursiveElementVisitor {
@NotNull
private final PsiVariable variable;