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.
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
.
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 {}
.
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
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
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
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
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
AutomaticBean.OutputStreamOptions
Modifier and Type | Field and Description |
---|---|
static String |
MSG_KEY
A key is pointing to the warning message text in "messages.properties"
file.
|
Constructor and Description |
---|
IllegalImportCheck()
Creates a new
IllegalImportCheck instance. |
Modifier and Type | Method and Description |
---|---|
int[] |
getAcceptableTokens()
The configurable token set.
|
int[] |
getDefaultTokens()
Returns the default token a check is interested in.
|
int[] |
getRequiredTokens()
The tokens that this check must be registered for.
|
void |
setIllegalClasses(String... from)
Setter to specify class names to reject, if regexp property is not
set, checks if import equals class name.
|
void |
setIllegalPkgs(String... from)
Setter to specify packages to reject, if regexp property is not set,
checks if import is the part of package.
|
void |
setRegexp(boolean regexp)
Setter to control whether the
illegalPkgs and illegalClasses
should be interpreted as regular expressions. |
void |
visitToken(DetailAST ast)
Called to process a token.
|
beginTree, clearMessages, destroy, finishTree, getFileContents, getLine, getLines, getMessages, getTabWidth, getTokenNames, init, isCommentNodesRequired, leaveToken, log, log, log, setFileContents, setTabWidth, setTokens
finishLocalSetup, getCustomMessages, getId, getMessageBundle, getSeverity, getSeverityLevel, setId, setSeverity
configure, contextualize, getConfiguration, setupChild
public static final String MSG_KEY
public IllegalImportCheck()
IllegalImportCheck
instance.public final void setIllegalPkgs(String... from)
from
- array of illegal packagespublic void setIllegalClasses(String... from)
from
- array of illegal classespublic void setRegexp(boolean regexp)
illegalPkgs
and illegalClasses
should be interpreted as regular expressions.regexp
- a Boolean
valuepublic int[] getDefaultTokens()
AbstractCheck
getDefaultTokens
in class AbstractCheck
TokenTypes
public int[] getAcceptableTokens()
AbstractCheck
getAcceptableTokens
in class AbstractCheck
TokenTypes
public int[] getRequiredTokens()
AbstractCheck
getRequiredTokens
in class AbstractCheck
TokenTypes
public void visitToken(DetailAST ast)
AbstractCheck
visitToken
in class AbstractCheck
ast
- the token to processCopyright © 2001–2020. All rights reserved.