Class NestedSwitchCheck

  • All Implemented Interfaces:
    com.puppycrawl.tools.checkstyle.api.Configurable, com.puppycrawl.tools.checkstyle.api.Contextualizable

    public class NestedSwitchCheck
    extends com.puppycrawl.tools.checkstyle.api.AbstractCheck

    This check ensures that there is no switch block inside other switch block. In such case nested block should be exposed into new method.

    Assuming following block:
          switch (color) {
          case GREEN:
              switch (type) {
              case MEDIUM:
              }
          case BLUE:
          }
     

    Nested switch block that checks type parameter should be converted into separate method.
    To enable this check use following configuration:

     <module name="NestedSwitchCheck"/>
     
    Since:
    1.13.0
    Author:
    Damian Szczepanik (damianszczepanik@github)
    • Nested Class Summary

      • Nested classes/interfaces inherited from class com.puppycrawl.tools.checkstyle.api.AutomaticBean

        com.puppycrawl.tools.checkstyle.api.AutomaticBean.OutputStreamOptions
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static String MSG_KEY
      A key is pointing to the warning message text in "messages.properties" file.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void beginTree​(com.puppycrawl.tools.checkstyle.api.DetailAST rootAST)  
      int[] getAcceptableTokens()  
      int[] getDefaultTokens()  
      int[] getRequiredTokens()  
      void leaveToken​(com.puppycrawl.tools.checkstyle.api.DetailAST aAST)  
      void setMax​(int max)
      Setter for maximum allowed nesting depth.
      void visitToken​(com.puppycrawl.tools.checkstyle.api.DetailAST aAST)  
      • Methods inherited from class com.puppycrawl.tools.checkstyle.api.AbstractCheck

        clearViolations, destroy, finishTree, getFileContents, getFilePath, getLine, getLineCodePoints, getLines, getTabWidth, getTokenNames, getViolations, init, isCommentNodesRequired, log, log, log, setFileContents, setTabWidth, setTokens
      • Methods inherited from class com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter

        finishLocalSetup, getCustomMessages, getId, getMessageBundle, getSeverity, getSeverityLevel, setId, setSeverity
      • Methods inherited from class com.puppycrawl.tools.checkstyle.api.AutomaticBean

        configure, contextualize, getConfiguration, setupChild
    • Field Detail

      • MSG_KEY

        public static final String MSG_KEY
        A key is pointing to the warning message text in "messages.properties" file.
        See Also:
        Constant Field Values
    • Constructor Detail

      • NestedSwitchCheck

        public NestedSwitchCheck()
    • Method Detail

      • setMax

        public final void setMax​(int max)
        Setter for maximum allowed nesting depth.
        Parameters:
        max - maximum allowed nesting depth.
      • getDefaultTokens

        public int[] getDefaultTokens()
        Specified by:
        getDefaultTokens in class com.puppycrawl.tools.checkstyle.api.AbstractCheck
      • getAcceptableTokens

        public int[] getAcceptableTokens()
        Specified by:
        getAcceptableTokens in class com.puppycrawl.tools.checkstyle.api.AbstractCheck
      • getRequiredTokens

        public final int[] getRequiredTokens()
        Specified by:
        getRequiredTokens in class com.puppycrawl.tools.checkstyle.api.AbstractCheck
      • beginTree

        public void beginTree​(com.puppycrawl.tools.checkstyle.api.DetailAST rootAST)
        Overrides:
        beginTree in class com.puppycrawl.tools.checkstyle.api.AbstractCheck
      • visitToken

        public void visitToken​(com.puppycrawl.tools.checkstyle.api.DetailAST aAST)
        Overrides:
        visitToken in class com.puppycrawl.tools.checkstyle.api.AbstractCheck
      • leaveToken

        public void leaveToken​(com.puppycrawl.tools.checkstyle.api.DetailAST aAST)
        Overrides:
        leaveToken in class com.puppycrawl.tools.checkstyle.api.AbstractCheck