Class IllegalImportCheck

  • All Implemented Interfaces:
    Configurable, Contextualizable

    public class IllegalImportCheck
    extends AbstractCheck

    Checks for imports from a set of illegal packages.

    Note: By default, the check rejects all sun.* packages since programs that contain direct calls to the sun.* packages are "not guaranteed to work on all Java-compatible platforms". To reject other packages, set property illegalPkgs to a list of the illegal packages.

    • Property illegalPkgs - Specify packages to reject, if regexp property is not set, checks if import is the part of package. If regexp property is set, then list of packages will be interpreted as regular expressions. Note, all properties for match will be used. Type is java.lang.String[]. Default value is sun.
    • Property illegalClasses - Specify class names to reject, if regexp property is not set, checks if import equals class name. If regexp property is set, then list of class names will be interpreted as regular expressions. Note, all properties for match will be used. Type is java.lang.String[]. Default value is "".
    • Property regexp - Control whether the illegalPkgs and illegalClasses should be interpreted as regular expressions. Type is boolean. Default value is false.

    To configure the check:

     <module name="IllegalImport"/>
     

    To configure the check so that it rejects packages java.io.* and java.sql.*:

     <module name="IllegalImport">
       <property name="illegalPkgs" value="java.io, java.sql"/>
     </module>
     

    The following example shows class with no illegal imports

     import java.lang.ArithmeticException;
     import java.util.List;
     import java.util.Enumeration;
     import java.util.Arrays;
     import sun.applet.*;
    
     public class InputIllegalImport { }
     

    The following example shows class with two illegal imports

    • java.io.*, illegalPkgs property contains this package
    • java.sql.Connection is inside java.sql package
     import java.io.*;           // violation
     import java.lang.ArithmeticException;
     import java.sql.Connection; // violation
     import java.util.List;
     import java.util.Enumeration;
     import java.util.Arrays;
     import sun.applet.*;
    
     public class InputIllegalImport { }
     

    To configure the check so that it rejects classes java.util.Date and java.sql.Connection:

     <module name="IllegalImport">
       <property name="illegalClasses"
         value="java.util.Date, java.sql.Connection"/>
     </module>
     

    The following example shows class with no illegal imports

     import java.io.*;
     import java.lang.ArithmeticException;
     import java.util.List;
     import java.util.Enumeration;
     import java.util.Arrays;
     import sun.applet.*;
    
     public class InputIllegalImport { }
     

    The following example shows class with two illegal imports

    • java.sql.Connection, illegalClasses property contains this class
    • java.util.Date, illegalClasses property contains this class
     import java.io.*;
     import java.lang.ArithmeticException;
     import java.sql.Connection; // violation
     import java.util.List;
     import java.util.Enumeration;
     import java.util.Arrays;
     import java.util.Date;      // violation
     import sun.applet.*;
    
     public class InputIllegalImport { }
     

    To configure the check so that it rejects packages not satisfying to regular expression java\.util:

     <module name="IllegalImport">
       <property name="regexp" value="true"/>
       <property name="illegalPkgs" value="java\.util"/>
     </module>
     

    The following example shows class with no illegal imports

     import java.io.*;
     import java.lang.ArithmeticException;
     import java.sql.Connection;
     import sun.applet.*;
    
     public class InputIllegalImport { }
     

    The following example shows class with four illegal imports

    • java.util.List
    • java.util.Enumeration
    • java.util.Arrays
    • java.util.Date

    All four imports match "java\.util" regular expression

     import java.io.*;
     import java.lang.ArithmeticException;
     import java.sql.Connection;
     import java.util.List;          // violation
     import java.util.Enumeration;   // violation
     import java.util.Arrays;        // violation
     import java.util.Date;          // violation
     import sun.applet.*;
    
     public class InputIllegalImport { }
     

    To configure the check so that it rejects class names not satisfying to regular expression ^java\.util\.(List|Arrays) and ^java\.sql\.Connection:

     <module name="IllegalImport">
       <property name="regexp" value="true"/>
       <property name="illegalClasses"
         value="^java\.util\.(List|Arrays), ^java\.sql\.Connection"/>
     </module>
     

    The following example shows class with no illegal imports

     import java.io.*;
     import java.lang.ArithmeticException;
     import java.util.Enumeration;
     import java.util.Date;
     import sun.applet.*;
    
     public class InputIllegalImport { }
     

    The following example shows class with three illegal imports

    • java.sql.Connection matches "^java\.sql\.Connection" regular expression
    • java.util.List matches "^java\.util\.(List|Arrays)" regular expression
    • java.util.Arrays matches "^java\.util\.(List|Arrays)" regular expression
     import java.io.*;
     import java.lang.ArithmeticException;
     import java.sql.Connection;     // violation
     import java.util.List;          // violation
     import java.util.Enumeration;
     import java.util.Arrays;        // violation
     import java.util.Date;
     import sun.applet.*;
    
     public class InputIllegalImport { }
     

    Parent is com.puppycrawl.tools.checkstyle.TreeWalker

    Violation Message Keys:

    • import.illegal
    Since:
    3.0
    • Field Detail

      • MSG_KEY

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

      • IllegalImportCheck

        public IllegalImportCheck()
        Creates a new IllegalImportCheck instance.
    • Method Detail

      • setIllegalPkgs

        public final void setIllegalPkgs​(java.lang.String... from)
        Setter to specify packages to reject, if regexp property is not set, checks if import is the part of package. If regexp property is set, then list of packages will be interpreted as regular expressions. Note, all properties for match will be used.
        Parameters:
        from - array of illegal packages
      • setIllegalClasses

        public void setIllegalClasses​(java.lang.String... from)
        Setter to specify class names to reject, if regexp property is not set, checks if import equals class name. If regexp property is set, then list of class names will be interpreted as regular expressions. Note, all properties for match will be used.
        Parameters:
        from - array of illegal classes
      • setRegexp

        public void setRegexp​(boolean regexp)
        Setter to control whether the illegalPkgs and illegalClasses should be interpreted as regular expressions.
        Parameters:
        regexp - a Boolean value
      • getDefaultTokens

        public int[] getDefaultTokens()
        Description copied from class: AbstractCheck
        Returns the default token a check is interested in. Only used if the configuration for a check does not define the tokens.
        Specified by:
        getDefaultTokens in class AbstractCheck
        Returns:
        the default tokens
        See Also:
        TokenTypes
      • 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
      • getRequiredTokens

        public int[] getRequiredTokens()
        Description copied from class: AbstractCheck
        The tokens that this check must be registered for.
        Specified by:
        getRequiredTokens in class AbstractCheck
        Returns:
        the token set this must be registered for.
        See Also:
        TokenTypes