diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/LoggingUtils.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/LoggingUtils.java new file mode 100644 index 000000000000..fc64d2aaf982 --- /dev/null +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/LoggingUtils.java @@ -0,0 +1,21 @@ +// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +package com.siyeh.ig.psiutils; + +import java.util.Arrays; +import java.util.List; + +/** + * @author Bas Leijdekkers + */ +public class LoggingUtils { + + public static final String JAVA_LOGGING = "java.util.logging.Logger"; + public static final String SLF4J = "org.slf4j.Logger"; + public static final String COMMONS_LOGGING = "org.apache.commons.logging.Log"; + public static final String LOG4J = "org.apache.log4j.Logger"; + public static final String LOG4J2 = "org.apache.logging.log4j.Logger"; + + public static final List DEFAULT_LOGGERS = Arrays.asList(JAVA_LOGGING, SLF4J, COMMONS_LOGGING, LOG4J, LOG4J2); + + private LoggingUtils() {} +} diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/logging/ClassWithMultipleLoggersInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/logging/ClassWithMultipleLoggersInspection.java index da771bd41cc1..6cd27bb69466 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/logging/ClassWithMultipleLoggersInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/logging/ClassWithMultipleLoggersInspection.java @@ -17,10 +17,12 @@ package com.siyeh.ig.logging; import com.intellij.openapi.util.InvalidDataException; import com.intellij.openapi.util.WriteExternalException; +import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.*; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; +import com.siyeh.ig.psiutils.LoggingUtils; import com.siyeh.ig.ui.UiUtils; import org.jdom.Element; import org.jetbrains.annotations.NonNls; @@ -37,11 +39,7 @@ public class ClassWithMultipleLoggersInspection extends BaseInspection { * @noinspection PublicField */ @NonNls - public String loggerNamesString = "java.util.logging.Logger" + ',' + - "org.slf4j.Logger" + ',' + - "org.apache.commons.logging.Log" + ',' + - "org.apache.log4j.Logger" + ',' + - "org.apache.logging.log4j.Logger"; + public String loggerNamesString = StringUtil.join(LoggingUtils.DEFAULT_LOGGERS, ","); public ClassWithMultipleLoggersInspection() { parseString(loggerNamesString, loggerNames); @@ -88,9 +86,7 @@ public class ClassWithMultipleLoggersInspection extends BaseInspection { @Override public void visitClass(@NotNull PsiClass aClass) { - //no recursion to avoid drilldown - if (aClass.isInterface() || aClass.isEnum() || - aClass.isAnnotationType()) { + if (aClass.isInterface() || aClass.isEnum() || aClass.isAnnotationType()) { return; } if (aClass instanceof PsiTypeParameter) { @@ -100,8 +96,7 @@ public class ClassWithMultipleLoggersInspection extends BaseInspection { return; } int numLoggers = 0; - final PsiField[] fields = aClass.getFields(); - for (PsiField field : fields) { + for (PsiField field : aClass.getFields()) { if (isLogger(field)) { numLoggers++; } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/logging/ClassWithoutLoggerInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/logging/ClassWithoutLoggerInspection.java index 877560ebf394..c2ec3eca7db4 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/logging/ClassWithoutLoggerInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/logging/ClassWithoutLoggerInspection.java @@ -19,6 +19,7 @@ import com.intellij.codeInsight.AnnotationUtil; import com.intellij.codeInspection.util.SpecialAnnotationsUtil; import com.intellij.openapi.util.InvalidDataException; import com.intellij.openapi.util.WriteExternalException; +import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.*; import com.intellij.psi.util.InheritanceUtil; import com.intellij.psi.util.PsiUtil; @@ -28,6 +29,7 @@ import com.intellij.util.ui.CheckBox; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; +import com.siyeh.ig.psiutils.LoggingUtils; import com.siyeh.ig.ui.ExternalizableStringSet; import com.siyeh.ig.ui.UiUtils; import org.jdom.Element; @@ -47,11 +49,7 @@ public class ClassWithoutLoggerInspection extends BaseInspection { * @noinspection PublicField */ @NonNls - public String loggerNamesString = "java.util.logging.Logger" + ',' + - "org.slf4j.Logger" + ',' + - "org.apache.commons.logging.Log" + ',' + - "org.apache.log4j.Logger" + ',' + - "org.apache.logging.log4j.Logger"; + public String loggerNamesString = StringUtil.join(LoggingUtils.DEFAULT_LOGGERS, ","); /** * @noinspection PublicField */ diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/logging/LogStatementGuardedByLogConditionInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/logging/LogStatementGuardedByLogConditionInspection.java index 4d60698b672e..2c6556947593 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/logging/LogStatementGuardedByLogConditionInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/logging/LogStatementGuardedByLogConditionInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2008-2017 Bas Leijdekkers + * Copyright 2008-2019 Bas Leijdekkers * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -31,6 +31,7 @@ import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; import com.siyeh.ig.InspectionGadgetsFix; +import com.siyeh.ig.psiutils.LoggingUtils; import com.siyeh.ig.psiutils.ParenthesesUtils; import com.siyeh.ig.psiutils.TypeUtils; import com.siyeh.ig.ui.TextField; @@ -50,7 +51,7 @@ public class LogStatementGuardedByLogConditionInspection extends BaseInspection final List logMethodNameList = new ArrayList<>(); final List logConditionMethodNameList = new ArrayList<>(); @SuppressWarnings({"PublicField"}) - public String loggerClassName = "java.util.logging.Logger"; + public String loggerClassName = LoggingUtils.JAVA_LOGGING; @NonNls @SuppressWarnings({"PublicField"}) public String loggerMethodAndconditionMethodNames = @@ -61,7 +62,7 @@ public class LogStatementGuardedByLogConditionInspection extends BaseInspection public boolean flagAllUnguarded = false; public LogStatementGuardedByLogConditionInspection() { - parseString(this.loggerMethodAndconditionMethodNames, this.logMethodNameList, this.logConditionMethodNameList); + parseString(loggerMethodAndconditionMethodNames, logMethodNameList, logConditionMethodNameList); } @Override @@ -137,12 +138,12 @@ public class LogStatementGuardedByLogConditionInspection extends BaseInspection return; } PsiStatement previousStatement = PsiTreeUtil.getPrevSiblingOfType(statement, PsiStatement.class); - while (previousStatement != null && isSameLogMethodCall(previousStatement, referenceName)) { + while (isSameLogMethodCall(previousStatement, referenceName)) { logStatements.add(0, previousStatement); previousStatement = PsiTreeUtil.getPrevSiblingOfType(previousStatement, PsiStatement.class); } PsiStatement nextStatement = PsiTreeUtil.getNextSiblingOfType(statement, PsiStatement.class); - while (nextStatement != null && isSameLogMethodCall(nextStatement, referenceName)) { + while (isSameLogMethodCall(nextStatement, referenceName)) { logStatements.add(nextStatement); nextStatement = PsiTreeUtil.getNextSiblingOfType(nextStatement, PsiStatement.class); } @@ -199,7 +200,7 @@ public class LogStatementGuardedByLogConditionInspection extends BaseInspection return false; } final PsiExpression qualifier = methodExpression.getQualifierExpression(); - return qualifier != null && TypeUtils.expressionHasTypeOrSubtype(qualifier, loggerClassName); + return TypeUtils.expressionHasTypeOrSubtype(qualifier, loggerClassName); } } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/logging/NonStaticFinalLoggerInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/logging/NonStaticFinalLoggerInspection.java index 9b6e137143cb..72d565d2e47b 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/logging/NonStaticFinalLoggerInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/logging/NonStaticFinalLoggerInspection.java @@ -17,12 +17,14 @@ package com.siyeh.ig.logging; import com.intellij.openapi.util.InvalidDataException; import com.intellij.openapi.util.WriteExternalException; +import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.*; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; import com.siyeh.ig.InspectionGadgetsFix; import com.siyeh.ig.fixes.MakeFieldStaticFinalFix; +import com.siyeh.ig.psiutils.LoggingUtils; import com.siyeh.ig.ui.UiUtils; import org.jdom.Element; import org.jetbrains.annotations.NotNull; @@ -35,11 +37,7 @@ public class NonStaticFinalLoggerInspection extends BaseInspection { protected final List loggerClassNames = new ArrayList<>(); @SuppressWarnings("PublicField") - public String loggerClassName = "java.util.logging.Logger" + ',' + - "org.slf4j.Logger" + ',' + - "org.apache.commons.logging.Log" + ',' + - "org.apache.log4j.Logger" + ',' + - "org.apache.logging.log4j.Logger"; + public String loggerClassName = StringUtil.join(LoggingUtils.DEFAULT_LOGGERS, ","); public NonStaticFinalLoggerInspection() { parseString(loggerClassName, loggerClassNames); diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/logging/PublicMethodWithoutLoggingInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/logging/PublicMethodWithoutLoggingInspection.java index d3d050a97941..6c272a93b207 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/logging/PublicMethodWithoutLoggingInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/logging/PublicMethodWithoutLoggingInspection.java @@ -17,11 +17,13 @@ package com.siyeh.ig.logging; import com.intellij.openapi.util.InvalidDataException; import com.intellij.openapi.util.WriteExternalException; +import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.*; import com.intellij.psi.util.PropertyUtil; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; +import com.siyeh.ig.psiutils.LoggingUtils; import com.siyeh.ig.ui.UiUtils; import org.jdom.Element; import org.jetbrains.annotations.NotNull; @@ -34,11 +36,7 @@ public class PublicMethodWithoutLoggingInspection extends BaseInspection { final List loggerClassNames = new ArrayList<>(); @SuppressWarnings("PublicField") - public String loggerClassName = "java.util.logging.Logger" + ',' + - "org.slf4j.Logger" + ',' + - "org.apache.commons.logging.Log" + ',' + - "org.apache.log4j.Logger" + ',' + - "org.apache.logging.log4j.Logger"; + public String loggerClassName = StringUtil.join(LoggingUtils.DEFAULT_LOGGERS, ","); public PublicMethodWithoutLoggingInspection() { parseString(loggerClassName, loggerClassNames); @@ -108,7 +106,7 @@ public class PublicMethodWithoutLoggingInspection extends BaseInspection { } private boolean containsLoggingCall(PsiCodeBlock block) { - ContainsLoggingCallVisitor visitor = new ContainsLoggingCallVisitor(); + final ContainsLoggingCallVisitor visitor = new ContainsLoggingCallVisitor(); block.accept(visitor); return visitor.containsLoggingCall(); } @@ -148,7 +146,7 @@ public class PublicMethodWithoutLoggingInspection extends BaseInspection { } } - private boolean containsLoggingCall() { + boolean containsLoggingCall() { return containsLoggingCall; } }