Class IllegalImportCheck

  • All Implemented Interfaces:
    Configurable, Contextualizable

    public class IllegalImportCheck
    extends AbstractCheck

    Checks for imports from a set of illegal packages. By default, the check rejects all sun.* packages since programs that contain direct calls to the sun.* packages are not 100% Pure Java.

    To reject other packages, set property illegalPkgs to a comma-separated list of the illegal packages.

    An example of how to configure the check is:

     <module name="IllegalImport"/>
     

    An example of how to configure the check so that it rejects packages java.io.* and java.sql.* is

     <module name="IllegalImport">
        <property name="illegalPkgs" value="java.io, java.sql"/>
     </module>
    
     Compatible with Java 1.5 source.
    
     
    • 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
      • illegalPkgsRegexps

        private final java.util.List<java.util.regex.Pattern> illegalPkgsRegexps
        The compiled regular expressions for packages.
      • illegalClassesRegexps

        private final java.util.List<java.util.regex.Pattern> illegalClassesRegexps
        The compiled regular expressions for classes.
      • illegalPkgs

        private java.lang.String[] illegalPkgs
        List of illegal packages.
      • illegalClasses

        private java.lang.String[] illegalClasses
        List of illegal classes.
      • regexp

        private boolean regexp
        Whether the packages or class names should be interpreted as regular expressions.
    • Constructor Detail

      • IllegalImportCheck

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

      • setIllegalPkgs

        public final void setIllegalPkgs​(java.lang.String... from)
        Set the list of illegal packages.
        Parameters:
        from - array of illegal packages
      • setIllegalClasses

        public void setIllegalClasses​(java.lang.String... from)
        Set the list of illegal classes.
        Parameters:
        from - array of illegal classes
      • setRegexp

        public void setRegexp​(boolean regexp)
        Controls whether the packages or class names 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
      • isIllegalImportByRegularExpressions

        private boolean isIllegalImportByRegularExpressions​(java.lang.String importText)
        Checks if an import matches one of the regular expressions for illegal packages or illegal class names.
        Parameters:
        importText - the argument of the import keyword
        Returns:
        if importText matches one of the regular expressions for illegal packages or illegal class names
      • isIllegalImportByPackagesAndClassNames

        private boolean isIllegalImportByPackagesAndClassNames​(java.lang.String importText)
        Checks if an import is from a package or class name that must not be used.
        Parameters:
        importText - the argument of the import keyword
        Returns:
        if importText contains an illegal package prefix or equals illegal class name
      • isIllegalImport

        private boolean isIllegalImport​(java.lang.String importText)
        Checks if an import is from a package or class name that must not be used.
        Parameters:
        importText - the argument of the import keyword
        Returns:
        if importText is illegal import