diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/security/CloneableClassInSecureContextInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/security/CloneableClassInSecureContextInspection.java index 59c12a66bd0a..cf90641e5d5e 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/security/CloneableClassInSecureContextInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/security/CloneableClassInSecureContextInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2017 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2018 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. @@ -53,7 +53,7 @@ public class CloneableClassInSecureContextInspection extends BaseInspection { @Override protected boolean buildQuickFixesOnlyForOnTheFlyErrors() { - // the quickfixes below probably require some thought and shouldn't be applied blindly on many classes at once + // the quick fixes below probably require some thought and shouldn't be applied blindly on many classes at once return true; } @@ -125,7 +125,18 @@ public class CloneableClassInSecureContextInspection extends BaseInspection { JavaCodeStyleSettings.getInstance(aClass.getContainingFile()).INSERT_OVERRIDE_ANNOTATION) { methodText.append("@java.lang.Override "); } - methodText.append("protected ").append(aClass.getName()); + methodText.append("protected "); + final String name = aClass.getName(); + if (name != null) { + methodText.append(name); + } + else if (aClass instanceof PsiAnonymousClass) { + final PsiClassType baseClassType = ((PsiAnonymousClass)aClass).getBaseClassType(); + methodText.append(baseClassType.getCanonicalText()); + } + else { + methodText.append(CommonClassNames.JAVA_LANG_OBJECT); + } final PsiTypeParameterList typeParameterList = aClass.getTypeParameterList(); if (typeParameterList != null) { methodText.append(typeParameterList.getText()); diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/security/create_exception_clone_method/Anonymous.after.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/security/create_exception_clone_method/Anonymous.after.java new file mode 100644 index 000000000000..8b429b03f419 --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/security/create_exception_clone_method/Anonymous.after.java @@ -0,0 +1,14 @@ +class C { + + { + new CsvParserSettings() { + @Override + protected CsvParserSettings clone() throws CloneNotSupportedException { + throw new CloneNotSupportedException(); + } + }; + } + +} + +class CsvParserSettings implements Cloneable { } \ No newline at end of file diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/security/create_exception_clone_method/Anonymous.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/security/create_exception_clone_method/Anonymous.java new file mode 100644 index 000000000000..05bbfbb816b3 --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/security/create_exception_clone_method/Anonymous.java @@ -0,0 +1,10 @@ +class C { + + { + new CsvParserSettings() { + }; + } + +} + +class CsvParserSettings implements Cloneable { } \ No newline at end of file diff --git a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/fixes/security/CreateExceptionCloneMethodFixTest.java b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/fixes/security/CreateExceptionCloneMethodFixTest.java index 7c98b3fe9f2b..34bd4a8a92a7 100644 --- a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/fixes/security/CreateExceptionCloneMethodFixTest.java +++ b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/fixes/security/CreateExceptionCloneMethodFixTest.java @@ -1,4 +1,4 @@ -// Copyright 2000-2017 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. +// Copyright 2000-2018 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.fixes.security; import com.siyeh.InspectionGadgetsBundle; @@ -21,5 +21,6 @@ public class CreateExceptionCloneMethodFixTest extends IGQuickFixesTestCase { public void testSimple() { doTest(); } public void testPublicNoThrows() { doTest(); } public void testGeneric() { doTest(); } + public void testAnonymous() { doTest(); } }