CatchParameterNameCheck.java

1
////////////////////////////////////////////////////////////////////////////////
2
// checkstyle: Checks Java source code for adherence to a set of rules.
3
// Copyright (C) 2001-2018 the original author or authors.
4
//
5
// This library is free software; you can redistribute it and/or
6
// modify it under the terms of the GNU Lesser General Public
7
// License as published by the Free Software Foundation; either
8
// version 2.1 of the License, or (at your option) any later version.
9
//
10
// This library is distributed in the hope that it will be useful,
11
// but WITHOUT ANY WARRANTY; without even the implied warranty of
12
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13
// Lesser General Public License for more details.
14
//
15
// You should have received a copy of the GNU Lesser General Public
16
// License along with this library; if not, write to the Free Software
17
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18
////////////////////////////////////////////////////////////////////////////////
19
20
package com.puppycrawl.tools.checkstyle.checks.naming;
21
22
import com.puppycrawl.tools.checkstyle.api.DetailAST;
23
import com.puppycrawl.tools.checkstyle.api.TokenTypes;
24
25
/**
26
 * <p>
27
 * Checks that {@code catch} parameter names conform to a format specified by the format property.
28
 * The format is a {@link java.util.regex.Pattern regular expression} and defaults to
29
 * <strong>^(e|t|ex|[a-z][a-z][a-zA-Z]+)$</strong>.
30
 * </p>
31
 * <p>
32
 * Default pattern has the following characteristic:
33
 * </p>
34
 * <ul>
35
 * <li>allows names beginning with two lowercase letters followed by at least one uppercase or
36
 * lowercase letter</li>
37
 * <li>allows {@code e} abbreviation (suitable for exceptions end errors)</li>
38
 * <li>allows {@code ex} abbreviation (suitable for exceptions)</li>
39
 * <li>allows {@code t} abbreviation (suitable for throwables)</li>
40
 * <li>prohibits numbered abbreviations like {@code e1} or {@code t2}</li>
41
 * <li>prohibits one letter prefixes like {@code pException}</li>
42
 * <li>prohibits two letter abbreviations like {@code ie} or {@code ee}</li>
43
 * <li>prohibits any other characters than letters</li>
44
 * </ul>
45
 * <p>
46
 * An example of how to configure the check is:
47
 * </p>
48
 * <pre>
49
 * &lt;module name="CatchParameterName"/&gt;
50
 * </pre>
51
 * <p>
52
 * An example of how to configure the check for names that begin with a lower case letter,
53
 * followed by any letters or digits is:
54
 * </p>
55
 * <pre>
56
 * &lt;module name="CatchParameterName"&gt;
57
 *    &lt;property name="format" value="^[a-z][a-zA-Z0-9]+$"/&gt;
58
 * &lt;/module&gt;
59
 * </pre>
60
 *
61
 * @author Michal Kordas
62
 */
63
public class CatchParameterNameCheck extends AbstractNameCheck {
64
65
    /**
66
     * Creates a new {@code CatchParameterNameCheck} instance.
67
     */
68
    public CatchParameterNameCheck() {
69
        super("^(e|t|ex|[a-z][a-z][a-zA-Z]+)$");
70
    }
71
72
    @Override
73
    public int[] getDefaultTokens() {
74 1 1. getDefaultTokens : mutated return of Object value for com/puppycrawl/tools/checkstyle/checks/naming/CatchParameterNameCheck::getDefaultTokens to ( if (x != null) null else throw new RuntimeException ) → KILLED
        return getRequiredTokens();
75
    }
76
77
    @Override
78
    public int[] getAcceptableTokens() {
79 1 1. getAcceptableTokens : mutated return of Object value for com/puppycrawl/tools/checkstyle/checks/naming/CatchParameterNameCheck::getAcceptableTokens to ( if (x != null) null else throw new RuntimeException ) → KILLED
        return getRequiredTokens();
80
    }
81
82
    @Override
83
    public int[] getRequiredTokens() {
84 1 1. getRequiredTokens : mutated return of Object value for com/puppycrawl/tools/checkstyle/checks/naming/CatchParameterNameCheck::getRequiredTokens to ( if (x != null) null else throw new RuntimeException ) → KILLED
        return new int[] {TokenTypes.PARAMETER_DEF};
85
    }
86
87
    @Override
88
    protected boolean mustCheckName(DetailAST ast) {
89 2 1. mustCheckName : negated conditional → KILLED
2. mustCheckName : replaced return of integer sized value with (x == 0 ? 1 : 0) → KILLED
        return ast.getParent().getType() == TokenTypes.LITERAL_CATCH;
90
    }
91
92
}

Mutations

74

1.1
Location : getDefaultTokens
Killed by : com.puppycrawl.tools.checkstyle.checks.naming.CatchParameterNameCheckTest.testCustomFormatWithNoAnchors(com.puppycrawl.tools.checkstyle.checks.naming.CatchParameterNameCheckTest)
mutated return of Object value for com/puppycrawl/tools/checkstyle/checks/naming/CatchParameterNameCheck::getDefaultTokens to ( if (x != null) null else throw new RuntimeException ) → KILLED

79

1.1
Location : getAcceptableTokens
Killed by : com.puppycrawl.tools.checkstyle.checks.naming.CatchParameterNameCheckTest.testTokens(com.puppycrawl.tools.checkstyle.checks.naming.CatchParameterNameCheckTest)
mutated return of Object value for com/puppycrawl/tools/checkstyle/checks/naming/CatchParameterNameCheck::getAcceptableTokens to ( if (x != null) null else throw new RuntimeException ) → KILLED

84

1.1
Location : getRequiredTokens
Killed by : com.puppycrawl.tools.checkstyle.checks.naming.CatchParameterNameCheckTest.testTokens(com.puppycrawl.tools.checkstyle.checks.naming.CatchParameterNameCheckTest)
mutated return of Object value for com/puppycrawl/tools/checkstyle/checks/naming/CatchParameterNameCheck::getRequiredTokens to ( if (x != null) null else throw new RuntimeException ) → KILLED

89

1.1
Location : mustCheckName
Killed by : com.puppycrawl.tools.checkstyle.checks.naming.CatchParameterNameCheckTest.testDefaultConfigurationOnFileWithViolations(com.puppycrawl.tools.checkstyle.checks.naming.CatchParameterNameCheckTest)
negated conditional → KILLED

2.2
Location : mustCheckName
Killed by : com.puppycrawl.tools.checkstyle.checks.naming.CatchParameterNameCheckTest.testDefaultConfigurationOnFileWithViolations(com.puppycrawl.tools.checkstyle.checks.naming.CatchParameterNameCheckTest)
replaced return of integer sized value with (x == 0 ? 1 : 0) → KILLED

Active mutators

Tests examined


Report generated by PIT 1.3.1