From fb921c564f7a8e6593854cfbb91ba86fa9562a41 Mon Sep 17 00:00:00 2001 From: Vyom-Yadav Date: Wed, 29 Jun 2022 14:14:45 +0530 Subject: [PATCH] Issue #11720: Kill surviving mutation in RequireThisCheck related to static blocks --- ...coding-require-this-check-suppressions.xml | 9 ----- .ci/pitest-survival-check-html.sh | 3 +- .../checks/coding/RequireThisCheck.java | 37 +++++++------------ 3 files changed, 14 insertions(+), 35 deletions(-) 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 5b40a38c023..bacba539837 100644 --- a/.ci/pitest-suppressions/pitest-coding-require-this-check-suppressions.xml +++ b/.ci/pitest-suppressions/pitest-coding-require-this-check-suppressions.xml @@ -1,14 +1,5 @@ - - RequireThisCheck.java - com.puppycrawl.tools.checkstyle.checks.coding.RequireThisCheck - canBeReferencedFromStaticContext - org.pitest.mutationtest.engine.gregor.mutators.RemoveConditionalMutator_EQUAL_ELSE - removed conditional - replaced equality check with false - if (definitionToken.getType() == TokenTypes.STATIC_INIT) { - - 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 a5ea3cc088d..c8a508931a9 100755 --- a/.ci/pitest-survival-check-html.sh +++ b/.ci/pitest-survival-check-html.sh @@ -202,8 +202,7 @@ pitest-coding-require-this-check) "RequireThisCheck.java.html:
                if (isAnonymousClassDef(ast)) {
" "RequireThisCheck.java.html:
               && parent.getType() != TokenTypes.CTOR_DEF
" "RequireThisCheck.java.html:
            && lastChild.getType() == TokenTypes.OBJBLOCK;
" - "RequireThisCheck.java.html:
            if (definitionToken.getType() == TokenTypes.STATIC_INIT) {
" - "RequireThisCheck.java.html:
            if (variableDeclarationFrame.getType() == FrameType.CLASS_FRAME) {
" + "RequireThisCheck.java.html:
        if (variableDeclarationFrame.getType() == FrameType.CLASS_FRAME) {
" "RequireThisCheck.java.html:
        if (fieldUsageFrame.getType() == FrameType.BLOCK_FRAME) {
" "RequireThisCheck.java.html:
        return left.getType() == right.getType() && left.getText().equals(right.getText());
" ); diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/RequireThisCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/RequireThisCheck.java index 6310099c464..64cc7cce114 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/RequireThisCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/RequireThisCheck.java @@ -850,37 +850,26 @@ private static boolean isAstInside(DetailAST tree, DetailAST ast) { */ private boolean canBeReferencedFromStaticContext(DetailAST ident) { AbstractFrame variableDeclarationFrame = findFrame(ident, false); - boolean staticInitializationBlock = false; while (variableDeclarationFrame.getType() == FrameType.BLOCK_FRAME - || variableDeclarationFrame.getType() == FrameType.FOR_FRAME) { - final DetailAST blockFrameNameIdent = variableDeclarationFrame.getFrameNameIdent(); - final DetailAST definitionToken = blockFrameNameIdent.getParent(); - if (definitionToken.getType() == TokenTypes.STATIC_INIT) { - staticInitializationBlock = true; - break; - } + || variableDeclarationFrame.getType() == FrameType.FOR_FRAME) { variableDeclarationFrame = variableDeclarationFrame.getParent(); } boolean staticContext = false; - if (staticInitializationBlock) { - staticContext = true; + + if (variableDeclarationFrame.getType() == FrameType.CLASS_FRAME) { + final DetailAST codeBlockDefinition = getCodeBlockDefinitionToken(ident); + if (codeBlockDefinition != null) { + final DetailAST modifiers = codeBlockDefinition.getFirstChild(); + staticContext = codeBlockDefinition.getType() == TokenTypes.STATIC_INIT + || modifiers.findFirstToken(TokenTypes.LITERAL_STATIC) != null; + } } else { - if (variableDeclarationFrame.getType() == FrameType.CLASS_FRAME) { - final DetailAST codeBlockDefinition = getCodeBlockDefinitionToken(ident); - if (codeBlockDefinition != null) { - final DetailAST modifiers = codeBlockDefinition.getFirstChild(); - staticContext = codeBlockDefinition.getType() == TokenTypes.STATIC_INIT - || modifiers.findFirstToken(TokenTypes.LITERAL_STATIC) != null; - } - } - else { - final DetailAST frameNameIdent = variableDeclarationFrame.getFrameNameIdent(); - final DetailAST definitionToken = frameNameIdent.getParent(); - staticContext = definitionToken.findFirstToken(TokenTypes.MODIFIERS) - .findFirstToken(TokenTypes.LITERAL_STATIC) != null; - } + final DetailAST frameNameIdent = variableDeclarationFrame.getFrameNameIdent(); + final DetailAST definitionToken = frameNameIdent.getParent(); + staticContext = definitionToken.findFirstToken(TokenTypes.MODIFIERS) + .findFirstToken(TokenTypes.LITERAL_STATIC) != null; } return !staticContext; }