Expand description
Lint rules for Workflow Description Language (WDL) documents.
§Rules
This table documents all implemented wdl
lint rules implemented on the main
branch of the stjude-rust-labs/wdl
repository. Note that the information may
be out of sync with released packages.
§Lint Rules
Name | Tags | Description |
---|---|---|
BlankLinesBetweenElements | Spacing | Ensures proper blank space between elements |
CallInputSpacing | Style, Clarity, Spacing | Ensures proper spacing for call inputs |
CommandSectionMixedIndentation | Clarity, Correctness, Spacing | Ensures that lines within a command do not mix spaces and tabs. |
CommentWhitespace | Spacing | Ensures that comments are properly spaced. |
ContainerValue | Clarity, Portability | Ensures that the value for container keys in runtime /requirements sections are well-formed. |
DeprecatedObject | Deprecated | Ensures that the deprecated Object construct is not used. |
DeprecatedPlaceholderOption | Deprecated | Ensures that the deprecated placeholder options construct is not used. |
DescriptionMissing | Completeness | Ensures that each meta section has a description key. |
DisallowedInputName | Naming | Ensures that input names are meaningful. |
DisallowedOutputName | Naming | Ensures that output names are meaningful. |
DoubleQuotes | Clarity, Style | Ensures that strings are defined using double quotes. |
EndingNewline | Spacing, Style | Ensures that documents end with a single newline character. |
ExpressionSpacing | Spacing | Ensures that expressions are properly spaced. |
ImportPlacement | Clarity, Sorting | Ensures that imports are placed between the version statement and any document items. |
ImportSort | Clarity, Style | Ensures that imports are sorted lexicographically. |
ImportWhitespace | Clarity, Style, Spacing | Ensures that there is no extraneous whitespace between or within imports. |
InconsistentNewlines | Clarity, Style | Ensures that newlines are used consistently within the file. |
InputSorting | Style | Ensures that input declarations are sorted |
KeyValuePairs | Style | Ensures that metadata objects and arrays are properly spaced. |
LineWidth | Clarity, Spacing, Style | Ensures that lines do not exceed a certain width. |
MalformedLintDirective | Clarity, Correctness | Ensures there are no malformed lint directives. |
MatchingParameterMeta | Completeness | Ensures that inputs have a matching entry in a parameter_meta section. |
MisplacedLintDirective | Clarity, Correctness | Ensures there are no misplaced lint directives. |
MissingMetas | Completeness, Clarity | Ensures that tasks have both a meta and a parameter_meta section. |
MissingOutput | Completeness, Portability | Ensures that tasks have an output section. |
MissingRequirements | Completeness, Portability | Ensures that >=v1.2 tasks have a requirements section. |
MissingRuntime | Completeness, Portability | Ensures that tasks have a runtime section. |
NonmatchingOutput | Completeness | Ensures that each output field is documented in the meta section under meta.outputs . |
NoCurlyCommands | Clarity | Ensures that tasks use heredoc syntax in command sections. |
PascalCase | Clarity, Naming, Style | Ensures that structs are defined with PascalCase names. |
PreambleCommentAfterVersion | Clarity | Ensures that documents have correct comments in the preamble. |
PreambleFormatting | Spacing, Style, Clarity | Ensures that documents have correct whitespace in the preamble. |
RuntimeSectionKeys | Completeness, Deprecated | Ensures that runtime sections have the appropriate keys. |
RedundantInputAssignment | Style | Ensures that redundant input assignments are shortened |
SectionOrdering | Sorting, Style | Ensures that sections within tasks and workflows are sorted. |
ShellCheck | Correctness, Portability | (BETA) Ensures that command sections are free of shellcheck diagnostics. |
SnakeCase | Clarity, Naming, Style | Ensures that tasks, workflows, and variables are defined with snake_case names. |
Todo | Completeness | Ensures that TODO statements are flagged for followup. |
TrailingComma | Style | Ensures that lists and objects in meta have a trailing comma. |
UnknownRule | Clarity | Ensures there are no unknown rules present in lint directives. |
VersionFormatting | Style | Ensures correct formatting of the version statement |
Whitespace | Spacing, Style | Ensures that a document does not contain undesired whitespace. |
§Examples
An example of parsing a WDL document and linting it:
use wdl_lint::LintVisitor;
use wdl_lint::ast::Document;
use wdl_lint::ast::Validator;
let (document, diagnostics) = Document::parse(source);
if !diagnostics.is_empty() {
// Handle the failure to parse
}
let mut validator = Validator::default();
validator.add_visitor(LintVisitor::default());
if let Err(diagnostics) = validator.validate(&document) {
// Handle the failure to validate
}
Re-exports§
pub use wdl_ast as ast;
Modules§
- Module for the lint rules.
Structs§
- A visitor that runs linting rules.
- A set of lint tags.
Enums§
- A lint rule tag.
Constants§
- The reserved rule identifiers that are used by analysis.
Traits§
- A trait implemented by lint rules.
Functions§
- Gets the optional rule set.
- Gets the default rule set.