From 2a06f7719b0d8968510f0c17543548d838d4dcb7 Mon Sep 17 00:00:00 2001 From: Vyom-Yadav Date: Tue, 28 Jun 2022 17:05:29 +0530 Subject: [PATCH] Issue #11720: Kill surviving mutation in RequireThisCheck related to anonymous inner class --- ...coding-require-this-check-suppressions.xml | 9 ---- .ci/pitest-survival-check-html.sh | 1 - .../checks/coding/RequireThisCheckTest.java | 8 ++++ .../InputRequireThisAnonymousInnerClass.java | 46 +++++++++++++++++++ 4 files changed, 54 insertions(+), 10 deletions(-) create mode 100644 src/test/resources/com/puppycrawl/tools/checkstyle/checks/coding/requirethis/InputRequireThisAnonymousInnerClass.java diff --git a/.ci/pitest-suppressions/pitest-coding-require-this-check-suppressions.xml b/.ci/pitest-suppressions/pitest-coding-require-this-check-suppressions.xml index 3bf57197635..37717ef2b0b 100644 --- a/.ci/pitest-suppressions/pitest-coding-require-this-check-suppressions.xml +++ b/.ci/pitest-suppressions/pitest-coding-require-this-check-suppressions.xml @@ -36,15 +36,6 @@ && ast.getParent().getType() != TokenTypes.LITERAL_CATCH) { - - RequireThisCheck.java - com.puppycrawl.tools.checkstyle.checks.coding.RequireThisCheck - endCollectingDeclarations - org.pitest.mutationtest.engine.gregor.mutators.RemoveConditionalMutator_EQUAL_ELSE - removed conditional - replaced equality check with false - if (isAnonymousClassDef(ast)) { - - RequireThisCheck.java com.puppycrawl.tools.checkstyle.checks.coding.RequireThisCheck diff --git a/.ci/pitest-survival-check-html.sh b/.ci/pitest-survival-check-html.sh index 26078f26936..b783c639836 100755 --- a/.ci/pitest-survival-check-html.sh +++ b/.ci/pitest-survival-check-html.sh @@ -199,7 +199,6 @@ pitest-coding-2) pitest-coding-require-this-check) declare -a ignoredItems=( "RequireThisCheck.java.html:
                        && ast.getParent().getType() != TokenTypes.LITERAL_CATCH) {
" - "RequireThisCheck.java.html:
                if (isAnonymousClassDef(ast)) {
" "RequireThisCheck.java.html:
                if (toVisit == null) {
" "RequireThisCheck.java.html:
               && parent.getType() != TokenTypes.CTOR_DEF
" "RequireThisCheck.java.html:
            && lastChild.getType() == TokenTypes.OBJBLOCK;
" diff --git a/src/test/java/com/puppycrawl/tools/checkstyle/checks/coding/RequireThisCheckTest.java b/src/test/java/com/puppycrawl/tools/checkstyle/checks/coding/RequireThisCheckTest.java index 43379a9deb5..519185510cd 100644 --- a/src/test/java/com/puppycrawl/tools/checkstyle/checks/coding/RequireThisCheckTest.java +++ b/src/test/java/com/puppycrawl/tools/checkstyle/checks/coding/RequireThisCheckTest.java @@ -443,6 +443,14 @@ public void testRecordsDefault() throws Exception { expected); } + @Test + public void testAnonymousInnerClass() throws Exception { + final String[] expected = CommonUtil.EMPTY_STRING_ARRAY; + + verifyWithInlineConfigParser( + getPath("InputRequireThisAnonymousInnerClass.java"), expected); + } + @Test public void testUnusedMethod() throws Exception { final DetailAstImpl ident = new DetailAstImpl(); diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/checks/coding/requirethis/InputRequireThisAnonymousInnerClass.java b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/coding/requirethis/InputRequireThisAnonymousInnerClass.java new file mode 100644 index 00000000000..91033a8084b --- /dev/null +++ b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/coding/requirethis/InputRequireThisAnonymousInnerClass.java @@ -0,0 +1,46 @@ +/* +RequireThis +checkFields = (default)true +checkMethods = (default)true +validateOnlyOverlapping = (default)true + + +*/ + +package com.puppycrawl.tools.checkstyle.checks.coding.requirethis; + +public class InputRequireThisAnonymousInnerClass { + int a = 12; + + void method() { + int a = 1; + InputRequireThisAnonymousInnerClass obj = + new InputRequireThisAnonymousInnerClass() { + void method() { + a += 1; + } + }; + } + + void anotherMethod() { + int var1 = 12; + int var2 = 13; + Foo obj = new Foo() { + void method() { + var2 += var1; + } + }; + obj.getClass(); + } +} + +class SharkFoo { + int var1 = 12; +} + +class Foo { + int var2 = 13; + + class SharkFoo { + } +}