Class NeedBracesCheck

  • All Implemented Interfaces:
    Configurable, Contextualizable

    public class NeedBracesCheck
    extends AbstractCheck

    Checks for braces around code blocks.

    By default the check will check the following blocks: LITERAL_DO, LITERAL_ELSE, LITERAL_FOR, LITERAL_IF, LITERAL_WHILE.

    An example of how to configure the check is:

     <module name="NeedBraces"/>
     

    An example of how to configure the check for if and else blocks is:

     <module name="NeedBraces">
         <property name="tokens" value="LITERAL_IF, LITERAL_ELSE"/>
     </module>
     
    Check has the following options:

    allowSingleLineStatement which allows single-line statements without braces, e.g.:

    if (obj.isValid()) return true;

    while (obj.isValid()) return true;

    do this.notify(); while (o != null);

    for (int i = 0; ; ) this.notify();

    allowEmptyLoopBody which allows loops with empty bodies, e.g.:

    while (value.incrementValue() < 5);

    for(int i = 0; i < 10; value.incrementValue());

    Default value for allowEmptyLoopBody option is false.

    To configure the Check to allow case, default single-line statements without braces:

     <module name="NeedBraces">
         <property name="tokens" value="LITERAL_CASE, LITERAL_DEFAULT"/>
         <property name="allowSingleLineStatement" value="true"/>
     </module>
     

    Such statements would be allowed:

     
     switch (num) {
         case 1: counter++; break; // OK
         case 6: counter += 10; break; // OK
         default: counter = 100; break; // OK
     }
     
     

    To configure the Check to allow while, for loops with empty bodies:

     <module name="NeedBraces">
         <property name="allowEmptyLoopBody" value="true"/>
     </module>
     

    Such statements would be allowed:

     
     while (value.incrementValue() &lt; 5); // OK
     for(int i = 0; i &lt; 10; value.incrementValue()); // OK
     
     
    Author:
    Rick Giles, Aleksey Nesterenko, Andrei Selkin
    • Method Detail

      • setAllowSingleLineStatement

        public void setAllowSingleLineStatement​(boolean allowSingleLineStatement)
        Setter.
        Parameters:
        allowSingleLineStatement - Check's option for skipping single-line statements
      • setAllowEmptyLoopBody

        public void setAllowEmptyLoopBody​(boolean allowEmptyLoopBody)
        Sets whether to allow empty loop body.
        Parameters:
        allowEmptyLoopBody - Check's option for allowing loops with empty body.
      • 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