Policeman's Forbidden API Checker (1.7)

Allows to parse Java byte code to find invocations of method/class/field signatures and fail build (Apache Ant, Apache Maven, or CLI)

Full name: de.thetaphi:forbiddenapis:1.7

Apache Ant

Task Documentation

Apache Maven: Mojo Goals

Command Line Interface

The JAR file can be called as command line tool using java -jar. This is the documentation of the CLI executable as printed by itsself:

$ java -jar forbiddenapis-1.7.jar --help
usage: java -jar forbiddenapis-1.7.jar [options]
Scans a set of class files for forbidden API usage.
    --allowmissingclasses           don't fail if a referenced class is
                                    missing on classpath
    --allowunresolvablesignatures   don't fail if a signature is not
                                    resolving
 -b,--bundledsignatures <name>      name of a bundled signatures
                                    definition (separated by commas or
                                    option can be given multiple times)
 -c,--classpath <path>              class search path of directories and
                                    zip/jar files
 -d,--dir <directory>               directory with class files to check
                                    for forbidden api usage; this
                                    directory is also added to classpath
 -e,--excludes <pattern>            ANT-style pattern to exclude some
                                    files from checks (separated by commas
                                    or option can be given multiple times)
 -f,--signaturesfile <file>         path to a file containing signatures
                                    (option can be given multiple times)
 -h,--help                          print this help
 -i,--includes <pattern>            ANT-style pattern to select class
                                    files (separated by commas or option
                                    can be given multiple times, defaults
                                    to '**/*.class')
    --internalruntimeforbidden      forbids calls to classes from the
                                    internal java runtime (like
                                    sun.misc.Unsafe)
 -V,--version                       print product version and exit
Exit codes: 0 = SUCCESS, 1 = forbidden API detected, 2 = invalid command
line, 3 = unsupported JDK version, 4 = other error (I/O,...)