Docs: Commands: lint

Usage: skeema lint [<options>] [<environment>]

Checks for problems in filesystem representation of database objects. A set of linter rules are run against all objects. Each rule may be configured to generate an error, a warning, or be ignored entirely. Statements that contain invalid SQL, or otherwise return an error from the database, are always flagged as linter errors.

By default, this command also reformats statements to their canonical form, just like skeema format.

This command relies on accessing database instances to test the SQL DDL in a temporary location. See the workspace option for more information.

You may optionally pass an environment name as a CLI arg. This will affect which section of .skeema config files is used for linter configuration and workspace selection. For example, running skeema lint staging will apply config directives from the [staging] section of config files, as well as any sectionless directives at the top of the file. If no environment name is supplied, the default is “production”.

An exit code of 0 will be returned if no errors or warnings were emitted and all files were already formatted properly; 1 if any warnings were emitted and/or some files were reformatted; or 2+ if any errors were emitted for any reason.

Lint Options

formatReformat SQL statements to match canonical SHOW CREATE (enabled by default; disable with skip-format)
update-viewsReformat views in canonical single-line form when using format

Linter Rule Options

allow-auto-incList of allowed auto_increment column data types for lint-auto-inc
allow-charsetList of allowed character sets for lint-charset
allow-compressionList of allowed compression settings for lint-compression
allow-definerList of allowed routine definers for lint-definer
allow-engineList of allowed storage engines for lint-engine
lint-auto-incOnly allow auto_increment column data types listed in allow-auto-inc
lint-charsetOnly allow character sets listed in allow-charset
lint-compressionOnly allow compression settings listed in allow-compression
lint-definerOnly allow routine definers listed in allow-definer
lint-display-widthOnly allow default display width for int types
lint-dupe-indexFlag redundant secondary indexes
lint-engineOnly allow storage engines listed in allow-engine
lint-has-enumFlag columns using ENUM or SET data types
lint-has-fkFlag any use of foreign keys; intended for environments that restrict their presence
lint-has-floatFlag columns using FLOAT or DOUBLE data types
lint-has-routineFlag any use of stored procs or funcs; intended for environments that restrict their presence
lint-has-timeFlag columns using TIMESTAMP, DATETIME, or TIME data types
lint-has-triggerFlag any use of triggers; intended for environments that restrict their presence
lint-has-viewFlag any use of views; intended for environments that restrict their presence
lint-pkFlag tables that lack a primary key
lint-zero-dateFlag DATE, DATETIME, and TIMESTAMP columns that have zero-date default values

Workspace Options

docker-cleanupWith workspace=docker, specifies how to clean up containers
temp-schemaName of temporary schema for intermediate operations, created and dropped each run
temp-schema-binlogControls whether temp schema DDL operations are replicated
temp-schema-threadsMax number of concurrent CREATE/DROP with workspace=temp-schema
workspaceSpecifies where to run intermediate operations

Global Options

connect-optionsComma-separated session options to set upon connecting to each database instance
debugEnable debug logging
helpDisplay usage information for the specified command
host-wrapperExternal bin to shell out to for host lookup; see manual for template vars
ignore-schemaIgnore schemas that match regex
ignore-tableIgnore tables that match regex
ignore-triggerIgnore triggers that match regex
my-cnfParse ~/.my.cnf for configuration (enabled by default; disable with skip-my-cnf)
passwordPassword for database user; omit value to prompt from TTY (default no password)
userUsername to connect to database host
versionDisplay program version