NatLint CLI
NatLint ships with a CLI interface to run it within a Natural project for in a CI pipeline.
To use the jar, simply run java -jar natlint.jar within your Natural project root directory.
The Natural plugin will autmatically be pulled from the backend.
To run via docker, use docker run --rm -u $(id -u):$(id -g) -v $PWD:/work ghcr.io/markusamshove/natlint:latest.
Given no arguments, the program will analyze all Natural sources that can be found in the Natural project of the working directory. The project is identified by either a .natural or _naturalBuild file.
The following flags can be used to narrow the scope down to a single or multiple files/libraries:
$ java -jar natls.jar --help
Usage: analyze [-hV] [--ci] [--fs] [-xlint] [-s=<minimumSeverity>]
[--sink=<sinkType>] [-w=<workingDirectory>]
[-d=<diagnosticIds>]... [-f=<qualifiedNames>]... [-g=<globs>]...
[-l=<libraries>]... [-r=<relativePaths>]... [COMMAND]
Analyze the Natural project in the current working directory
--ci Analyzer will return exit code 0, even when
diagnostics are found. Will also use the CSV sink
-d, --diagnostic=<diagnosticIds>
Filter out every diagnostic that does not match the
given id. Example: --diagnostic NLP011
-f, --file=<qualifiedNames>
Only analyze modules matching any of the qualified
module name in the form of LIBRARY.MODULENAME (e.g.
LIB1.SUBPROG)
--fs Analyzer will create a csv with file statuses
-g, --glob=<globs> Only analyze modules that match the given glob
pattern.
-h, --help Show this help message and exit.
-l, --library=<libraries>
Only analyze modules that reside in any of the given
libraries.
-r, --relative=<relativePaths>
Only analyze modules matching any of the relative
paths. Path should be relative to project root.
-s, --severity=<minimumSeverity>
Filter out diagnostics that are below the given
severity. Valid values: INFO, WARNING, ERROR
--sink=<sinkType> Sets the output sink where the diagnostics are
printed to. Defaults to STDOUT. Valid values:
STDOUT, NONE, CSV, CI_CSV
-V, --version Print version information and exit.
-w, --workdir=<workingDirectory>
Sets the working directory to a different path than
the current one
-xlint, --disable-linting
Skips analyzing with natlint
Commands:
git-status Analyze files from `git status --porcelain`Analyze changed files
It is possible to pipe the output from git status to natlint to automatically apply filters so that all files that have changes according to Git are linted:
git status --porcelain | java -jar natlint.jar git-status
Note: The flag --porcelain is mandatory.
git-status is a sub command of the default analyze command. This means that flags like -xlint have to be passed before git-status:
git status --porcelain | java -jar natlint.jar -xlint git-status