Skip to content

Commit

Permalink
Issue checkstyle#12331: Test cases add to kill mutation for ModifedCo…
Browse files Browse the repository at this point in the history
…ntrolVariableCheck
  • Loading branch information
Kevin222004 committed Jan 11, 2023
1 parent 811983e commit 23e1a25
Show file tree
Hide file tree
Showing 3 changed files with 118 additions and 198 deletions.
198 changes: 0 additions & 198 deletions config/pitest-suppressions/pitest-coding-2-suppressions.xml
Expand Up @@ -153,204 +153,6 @@
<lineContent>this.query = query;</lineContent>
</mutation>

<mutation unstable="false">
<sourceFile>ModifiedControlVariableCheck.java</sourceFile>
<mutatedClass>com.puppycrawl.tools.checkstyle.checks.coding.ModifiedControlVariableCheck</mutatedClass>
<mutatedMethod>leaveToken</mutatedMethod>
<mutator>org.pitest.mutationtest.engine.gregor.mutators.experimental.RemoveSwitchMutator_10</mutator>
<description>RemoveSwitch 10 (case value 102)</description>
<lineContent>switch (ast.getType()) {</lineContent>
</mutation>

<mutation unstable="false">
<sourceFile>ModifiedControlVariableCheck.java</sourceFile>
<mutatedClass>com.puppycrawl.tools.checkstyle.checks.coding.ModifiedControlVariableCheck</mutatedClass>
<mutatedMethod>leaveToken</mutatedMethod>
<mutator>org.pitest.mutationtest.engine.gregor.mutators.experimental.RemoveSwitchMutator_11</mutator>
<description>RemoveSwitch 11 (case value 103)</description>
<lineContent>switch (ast.getType()) {</lineContent>
</mutation>

<mutation unstable="false">
<sourceFile>ModifiedControlVariableCheck.java</sourceFile>
<mutatedClass>com.puppycrawl.tools.checkstyle.checks.coding.ModifiedControlVariableCheck</mutatedClass>
<mutatedMethod>leaveToken</mutatedMethod>
<mutator>org.pitest.mutationtest.engine.gregor.mutators.experimental.RemoveSwitchMutator_12</mutator>
<description>RemoveSwitch 12 (case value 104)</description>
<lineContent>switch (ast.getType()) {</lineContent>
</mutation>

<mutation unstable="false">
<sourceFile>ModifiedControlVariableCheck.java</sourceFile>
<mutatedClass>com.puppycrawl.tools.checkstyle.checks.coding.ModifiedControlVariableCheck</mutatedClass>
<mutatedMethod>leaveToken</mutatedMethod>
<mutator>org.pitest.mutationtest.engine.gregor.mutators.experimental.RemoveSwitchMutator_13</mutator>
<description>RemoveSwitch 13 (case value 105)</description>
<lineContent>switch (ast.getType()) {</lineContent>
</mutation>

<mutation unstable="false">
<sourceFile>ModifiedControlVariableCheck.java</sourceFile>
<mutatedClass>com.puppycrawl.tools.checkstyle.checks.coding.ModifiedControlVariableCheck</mutatedClass>
<mutatedMethod>leaveToken</mutatedMethod>
<mutator>org.pitest.mutationtest.engine.gregor.mutators.experimental.RemoveSwitchMutator_14</mutator>
<description>RemoveSwitch 14 (case value 106)</description>
<lineContent>switch (ast.getType()) {</lineContent>
</mutation>

<mutation unstable="false">
<sourceFile>ModifiedControlVariableCheck.java</sourceFile>
<mutatedClass>com.puppycrawl.tools.checkstyle.checks.coding.ModifiedControlVariableCheck</mutatedClass>
<mutatedMethod>leaveToken</mutatedMethod>
<mutator>org.pitest.mutationtest.engine.gregor.mutators.experimental.RemoveSwitchMutator_15</mutator>
<description>RemoveSwitch 15 (case value 107)</description>
<lineContent>switch (ast.getType()) {</lineContent>
</mutation>

<mutation unstable="false">
<sourceFile>ModifiedControlVariableCheck.java</sourceFile>
<mutatedClass>com.puppycrawl.tools.checkstyle.checks.coding.ModifiedControlVariableCheck</mutatedClass>
<mutatedMethod>leaveToken</mutatedMethod>
<mutator>org.pitest.mutationtest.engine.gregor.mutators.experimental.RemoveSwitchMutator_16</mutator>
<description>RemoveSwitch 16 (case value 108)</description>
<lineContent>switch (ast.getType()) {</lineContent>
</mutation>

<mutation unstable="false">
<sourceFile>ModifiedControlVariableCheck.java</sourceFile>
<mutatedClass>com.puppycrawl.tools.checkstyle.checks.coding.ModifiedControlVariableCheck</mutatedClass>
<mutatedMethod>leaveToken</mutatedMethod>
<mutator>org.pitest.mutationtest.engine.gregor.mutators.experimental.RemoveSwitchMutator_2</mutator>
<description>RemoveSwitch 2 (case value 26)</description>
<lineContent>switch (ast.getType()) {</lineContent>
</mutation>

<mutation unstable="false">
<sourceFile>ModifiedControlVariableCheck.java</sourceFile>
<mutatedClass>com.puppycrawl.tools.checkstyle.checks.coding.ModifiedControlVariableCheck</mutatedClass>
<mutatedMethod>leaveToken</mutatedMethod>
<mutator>org.pitest.mutationtest.engine.gregor.mutators.experimental.RemoveSwitchMutator_7</mutator>
<description>RemoveSwitch 7 (case value 99)</description>
<lineContent>switch (ast.getType()) {</lineContent>
</mutation>

<mutation unstable="false">
<sourceFile>ModifiedControlVariableCheck.java</sourceFile>
<mutatedClass>com.puppycrawl.tools.checkstyle.checks.coding.ModifiedControlVariableCheck</mutatedClass>
<mutatedMethod>leaveToken</mutatedMethod>
<mutator>org.pitest.mutationtest.engine.gregor.mutators.experimental.RemoveSwitchMutator_8</mutator>
<description>RemoveSwitch 8 (case value 100)</description>
<lineContent>switch (ast.getType()) {</lineContent>
</mutation>

<mutation unstable="false">
<sourceFile>ModifiedControlVariableCheck.java</sourceFile>
<mutatedClass>com.puppycrawl.tools.checkstyle.checks.coding.ModifiedControlVariableCheck</mutatedClass>
<mutatedMethod>leaveToken</mutatedMethod>
<mutator>org.pitest.mutationtest.engine.gregor.mutators.experimental.RemoveSwitchMutator_9</mutator>
<description>RemoveSwitch 9 (case value 101)</description>
<lineContent>switch (ast.getType()) {</lineContent>
</mutation>

<mutation unstable="false">
<sourceFile>ModifiedControlVariableCheck.java</sourceFile>
<mutatedClass>com.puppycrawl.tools.checkstyle.checks.coding.ModifiedControlVariableCheck</mutatedClass>
<mutatedMethod>visitToken</mutatedMethod>
<mutator>org.pitest.mutationtest.engine.gregor.mutators.experimental.RemoveSwitchMutator_10</mutator>
<description>RemoveSwitch 10 (case value 102)</description>
<lineContent>switch (ast.getType()) {</lineContent>
</mutation>

<mutation unstable="false">
<sourceFile>ModifiedControlVariableCheck.java</sourceFile>
<mutatedClass>com.puppycrawl.tools.checkstyle.checks.coding.ModifiedControlVariableCheck</mutatedClass>
<mutatedMethod>visitToken</mutatedMethod>
<mutator>org.pitest.mutationtest.engine.gregor.mutators.experimental.RemoveSwitchMutator_11</mutator>
<description>RemoveSwitch 11 (case value 103)</description>
<lineContent>switch (ast.getType()) {</lineContent>
</mutation>

<mutation unstable="false">
<sourceFile>ModifiedControlVariableCheck.java</sourceFile>
<mutatedClass>com.puppycrawl.tools.checkstyle.checks.coding.ModifiedControlVariableCheck</mutatedClass>
<mutatedMethod>visitToken</mutatedMethod>
<mutator>org.pitest.mutationtest.engine.gregor.mutators.experimental.RemoveSwitchMutator_12</mutator>
<description>RemoveSwitch 12 (case value 104)</description>
<lineContent>switch (ast.getType()) {</lineContent>
</mutation>

<mutation unstable="false">
<sourceFile>ModifiedControlVariableCheck.java</sourceFile>
<mutatedClass>com.puppycrawl.tools.checkstyle.checks.coding.ModifiedControlVariableCheck</mutatedClass>
<mutatedMethod>visitToken</mutatedMethod>
<mutator>org.pitest.mutationtest.engine.gregor.mutators.experimental.RemoveSwitchMutator_13</mutator>
<description>RemoveSwitch 13 (case value 105)</description>
<lineContent>switch (ast.getType()) {</lineContent>
</mutation>

<mutation unstable="false">
<sourceFile>ModifiedControlVariableCheck.java</sourceFile>
<mutatedClass>com.puppycrawl.tools.checkstyle.checks.coding.ModifiedControlVariableCheck</mutatedClass>
<mutatedMethod>visitToken</mutatedMethod>
<mutator>org.pitest.mutationtest.engine.gregor.mutators.experimental.RemoveSwitchMutator_14</mutator>
<description>RemoveSwitch 14 (case value 106)</description>
<lineContent>switch (ast.getType()) {</lineContent>
</mutation>

<mutation unstable="false">
<sourceFile>ModifiedControlVariableCheck.java</sourceFile>
<mutatedClass>com.puppycrawl.tools.checkstyle.checks.coding.ModifiedControlVariableCheck</mutatedClass>
<mutatedMethod>visitToken</mutatedMethod>
<mutator>org.pitest.mutationtest.engine.gregor.mutators.experimental.RemoveSwitchMutator_15</mutator>
<description>RemoveSwitch 15 (case value 107)</description>
<lineContent>switch (ast.getType()) {</lineContent>
</mutation>

<mutation unstable="false">
<sourceFile>ModifiedControlVariableCheck.java</sourceFile>
<mutatedClass>com.puppycrawl.tools.checkstyle.checks.coding.ModifiedControlVariableCheck</mutatedClass>
<mutatedMethod>visitToken</mutatedMethod>
<mutator>org.pitest.mutationtest.engine.gregor.mutators.experimental.RemoveSwitchMutator_16</mutator>
<description>RemoveSwitch 16 (case value 108)</description>
<lineContent>switch (ast.getType()) {</lineContent>
</mutation>

<mutation unstable="false">
<sourceFile>ModifiedControlVariableCheck.java</sourceFile>
<mutatedClass>com.puppycrawl.tools.checkstyle.checks.coding.ModifiedControlVariableCheck</mutatedClass>
<mutatedMethod>visitToken</mutatedMethod>
<mutator>org.pitest.mutationtest.engine.gregor.mutators.experimental.RemoveSwitchMutator_2</mutator>
<description>RemoveSwitch 2 (case value 26)</description>
<lineContent>switch (ast.getType()) {</lineContent>
</mutation>

<mutation unstable="false">
<sourceFile>ModifiedControlVariableCheck.java</sourceFile>
<mutatedClass>com.puppycrawl.tools.checkstyle.checks.coding.ModifiedControlVariableCheck</mutatedClass>
<mutatedMethod>visitToken</mutatedMethod>
<mutator>org.pitest.mutationtest.engine.gregor.mutators.experimental.RemoveSwitchMutator_7</mutator>
<description>RemoveSwitch 7 (case value 99)</description>
<lineContent>switch (ast.getType()) {</lineContent>
</mutation>

<mutation unstable="false">
<sourceFile>ModifiedControlVariableCheck.java</sourceFile>
<mutatedClass>com.puppycrawl.tools.checkstyle.checks.coding.ModifiedControlVariableCheck</mutatedClass>
<mutatedMethod>visitToken</mutatedMethod>
<mutator>org.pitest.mutationtest.engine.gregor.mutators.experimental.RemoveSwitchMutator_8</mutator>
<description>RemoveSwitch 8 (case value 100)</description>
<lineContent>switch (ast.getType()) {</lineContent>
</mutation>

<mutation unstable="false">
<sourceFile>ModifiedControlVariableCheck.java</sourceFile>
<mutatedClass>com.puppycrawl.tools.checkstyle.checks.coding.ModifiedControlVariableCheck</mutatedClass>
<mutatedMethod>visitToken</mutatedMethod>
<mutator>org.pitest.mutationtest.engine.gregor.mutators.experimental.RemoveSwitchMutator_9</mutator>
<description>RemoveSwitch 9 (case value 101)</description>
<lineContent>switch (ast.getType()) {</lineContent>
</mutation>

<mutation unstable="false">
<sourceFile>MultipleStringLiteralsCheck.java</sourceFile>
<mutatedClass>com.puppycrawl.tools.checkstyle.checks.coding.MultipleStringLiteralsCheck</mutatedClass>
Expand Down
Expand Up @@ -131,6 +131,37 @@ public void testImproperToken() {
}
}

@Test
public void testVariousAssignments() throws Exception {
final String[] expected = {
"14:15: " + getCheckMessage(MSG_KEY, "i"),
"15:15: " + getCheckMessage(MSG_KEY, "k"),
"21:15: " + getCheckMessage(MSG_KEY, "i"),
"22:15: " + getCheckMessage(MSG_KEY, "k"),
"28:15: " + getCheckMessage(MSG_KEY, "i"),
"29:15: " + getCheckMessage(MSG_KEY, "k"),
"35:15: " + getCheckMessage(MSG_KEY, "i"),
"36:15: " + getCheckMessage(MSG_KEY, "k"),
"42:15: " + getCheckMessage(MSG_KEY, "i"),
"43:15: " + getCheckMessage(MSG_KEY, "k"),
"48:15: " + getCheckMessage(MSG_KEY, "i"),
"49:15: " + getCheckMessage(MSG_KEY, "k"),
"55:15: " + getCheckMessage(MSG_KEY, "i"),
"56:15: " + getCheckMessage(MSG_KEY, "k"),
"62:15: " + getCheckMessage(MSG_KEY, "i"),
"63:15: " + getCheckMessage(MSG_KEY, "k"),
"69:15: " + getCheckMessage(MSG_KEY, "i"),
"70:15: " + getCheckMessage(MSG_KEY, "k"),
"76:15: " + getCheckMessage(MSG_KEY, "i"),
"77:15: " + getCheckMessage(MSG_KEY, "k"),
"83:14: " + getCheckMessage(MSG_KEY, "i"),
"84:14: " + getCheckMessage(MSG_KEY, "k"),
};
verifyWithInlineConfigParser(
getPath("InputModifiedControlVariableTestVariousAssignments.java"),
expected);
}

/**
* We cannot reproduce situation when visitToken is called and leaveToken is not.
* So, we have to use reflection to be sure that even in such situation
Expand Down
@@ -0,0 +1,87 @@
/*
ModifiedControlVariable
skipEnhancedForLoopVariable = (default)false
*/

package com.puppycrawl.tools.checkstyle.checks.coding.modifiedcontrolvariable;

public class InputModifiedControlVariableTestVariousAssignments {

void method() {
for (int i=0,k=0; i<10 && k < 10; ++i,++k) {
i -= 3; // violation 'Control variable 'i' is modified'
k -= 4; // violation 'Control variable 'k' is modified'
}
}

void method1() {
for (int i=0,k=0; i<10 && k < 10; ++i,++k) {
i *= 3; // violation 'Control variable 'i' is modified'
k *= 4; // violation 'Control variable 'k' is modified'
}
}

void method2() {
for (int i=0,k=0; i<10 && k < 10; ++i,++k) {
i /= 3; // violation 'Control variable 'i' is modified'
k /= 4; // violation 'Control variable 'k' is modified'
}
}

void method3() {
for (int i=0,k=0; i<10 && k < 10; ++i,++k) {
i %= 3; // violation 'Control variable 'i' is modified'
k %= 4; // violation 'Control variable 'k' is modified'
}
}

void method4() {
for (int i=0,k=0; i<10 && k < 10; ++i,++k) {
i >>= 3; // violation 'Control variable 'i' is modified'
k >>= 4; // violation 'Control variable 'k' is modified'
}
}
void method5() {
for (int i=0,k=0; i<10 && k < 10; ++i,++k) {
i >>>= 3; // violation 'Control variable 'i' is modified'
k >>>= 4; // violation 'Control variable 'k' is modified'
}
}

void method6() {
for (int i=0,k=0; i<10 && k < 10; ++i,++k) {
i <<= 3; // violation 'Control variable 'i' is modified'
k <<= 4; // violation 'Control variable 'k' is modified'
}
}

void method7() {
for (int i=0,k=0; i<10 && k < 10; ++i,++k) {
i &= 3; // violation 'Control variable 'i' is modified'
k &= 4; // violation 'Control variable 'k' is modified'
}
}

void method8() {
for (int i=0,k=0; i<10 && k < 10; ++i,++k) {
i ^= 3; // violation 'Control variable 'i' is modified'
k ^= 4; // violation 'Control variable 'k' is modified'
}
}

void method9() {
for (int i=0,k=0; i<10 && k < 10; ++i,++k) {
i |= 3; // violation 'Control variable 'i' is modified'
k |= 4; // violation 'Control variable 'k' is modified'
}
}

void method10() {
for (int i=0,k=0; i<10 && k < 10; ++i,++k) {
i--; // violation 'Control variable 'i' is modified'
k--; // violation 'Control variable 'k' is modified'
}
}
}

0 comments on commit 23e1a25

Please sign in to comment.