From 60651123dd8f94c09ea8911fe3d3e9eefaea8ea2 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Tue, 25 Mar 2014 15:07:06 +0100 Subject: [PATCH] IDEA-122796 Call to 'printStackTrace()' should warn about overridden calls as well --- .../ThrowablePrintStackTraceInspectionBase.java | 4 ++-- .../ThrowablePrintStackTraceInspectionTest.java | 10 ++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/maturity/ThrowablePrintStackTraceInspectionBase.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/maturity/ThrowablePrintStackTraceInspectionBase.java index 69c9e5642457..621015a685fe 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/maturity/ThrowablePrintStackTraceInspectionBase.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/maturity/ThrowablePrintStackTraceInspectionBase.java @@ -16,6 +16,7 @@ package com.siyeh.ig.maturity; import com.intellij.psi.*; +import com.intellij.psi.util.InheritanceUtil; import com.siyeh.HardcodedMethodConstants; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; @@ -69,8 +70,7 @@ public class ThrowablePrintStackTraceInspectionBase extends BaseInspection { if (containingClass == null) { return; } - final String name = containingClass.getQualifiedName(); - if (!CommonClassNames.JAVA_LANG_THROWABLE.equals(name)) { + if (!InheritanceUtil.isInheritor(containingClass, false, CommonClassNames.JAVA_LANG_THROWABLE)) { return; } registerMethodCallError(expression, expression); diff --git a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/maturity/ThrowablePrintStackTraceInspectionTest.java b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/maturity/ThrowablePrintStackTraceInspectionTest.java index 5928bb4cc53d..5e30afe17cd2 100644 --- a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/maturity/ThrowablePrintStackTraceInspectionTest.java +++ b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/maturity/ThrowablePrintStackTraceInspectionTest.java @@ -37,6 +37,16 @@ public class ThrowablePrintStackTraceInspectionTest extends LightInspectionTestC "}"); } + public void testPrintStacktraceOverridden() throws Exception { + addEnvironmentClass("public class FException extends Exception {\n" + + " @Override\n" + + " public void printStackTrace() {\n" + + " super.printStackTrace();\n" + + " }\n" + + "}\n"); + doStatementTest("new FException()./*Call to 'printStackTrace()' should probably be replaced with more robust logging*/printStackTrace/**/();"); + } + @Override protected InspectionProfileEntry getInspection() { return new ThrowablePrintStackTraceInspection();