Class MethodParamPadCheck

  • All Implemented Interfaces:
    Configurable, Contextualizable

    public class MethodParamPadCheck
    extends AbstractCheck

    Checks the padding between the identifier of a method definition, constructor definition, method call, or constructor invocation; and the left parenthesis of the parameter list. That is, if the identifier and left parenthesis are on the same line, checks whether a space is required immediately after the identifier or such a space is forbidden. If they are not on the same line, reports a violation, unless configured to allow line breaks. To allow linebreaks after the identifier, set property allowLineBreaks to true.

    • Property allowLineBreaks - Allow a line break between the identifier and left parenthesis. Type is boolean. Default value is false.
    • Property option - Specify policy on how to pad method parameter. Type is com.puppycrawl.tools.checkstyle.checks.whitespace.PadOption. Default value is nospace.
    • Property tokens - tokens to check Type is java.lang.String[]. Validation type is tokenSet. Default value is: CTOR_DEF, LITERAL_NEW, METHOD_CALL, METHOD_DEF, SUPER_CTOR_CALL, ENUM_CONSTANT_DEF, RECORD_DEF.

    To configure the check:

     <module name="MethodParamPad"/>
     
     public class Test {
      public Test() { // OK
         super(); // OK
       }
    
       public Test (int aParam) { // Violation - '(' is preceded with whitespace
         super (); // Violation - '(' is preceded with whitespace
       }
    
       public void method() {} // OK
    
       public void methodWithVeryLongName
         () {} // Violation - '(' is preceded with whitespace
    
     }
     

    To configure the check to require a space after the identifier of a method definition, except if the left parenthesis occurs on a new line:

     <module name="MethodParamPad">
       <property name="tokens" value="METHOD_DEF"/>
       <property name="option" value="space"/>
       <property name="allowLineBreaks" value="true"/>
     </module>
     
     public class Test {
       public Test() { // OK
         super(); // OK
       }
    
       public Test (int aParam) { // OK
         super (); // OK
       }
    
       public void method() {} // Violation - '(' is NOT preceded with whitespace
    
       public void methodWithVeryLongName
         () {} // OK, because allowLineBreaks is true
    
     }
     

    Parent is com.puppycrawl.tools.checkstyle.TreeWalker

    Violation Message Keys:

    • line.previous
    • ws.notPreceded
    • ws.preceded
    Since:
    3.4
    • Field Detail

      • MSG_WS_PRECEDED

        public static final java.lang.String MSG_WS_PRECEDED
        A key is pointing to the warning message text in "messages.properties" file.
        See Also:
        Constant Field Values
      • allowLineBreaks

        private boolean allowLineBreaks
        Allow a line break between the identifier and left parenthesis.
      • option

        private PadOption option
        Specify policy on how to pad method parameter.
    • Method Detail

      • getAcceptableTokens

        public int[] getAcceptableTokens()
        Description copied from class: AbstractCheck
        The configurable token set. Used to protect Checks against malicious users who specify an unacceptable token set in the configuration file. The default implementation returns the check's default tokens.
        Specified by:
        getAcceptableTokens in class AbstractCheck
        Returns:
        the token set this check is designed for.
        See Also:
        TokenTypes
      • setAllowLineBreaks

        public void setAllowLineBreaks​(boolean allowLineBreaks)
        Setter to allow a line break between the identifier and left parenthesis.
        Parameters:
        allowLineBreaks - whether whitespace should be flagged at line breaks.
      • setOption

        public void setOption​(java.lang.String optionStr)
        Setter to specify policy on how to pad method parameter.
        Parameters:
        optionStr - string to decode option from
        Throws:
        java.lang.IllegalArgumentException - if unable to decode