Adds an GitHub Action to check all local (non http://, https:// ) links in all Markdown files of the repository for liveness. Fails if a file is not found. # Goal This should help maintaining the quality of the documentation. # Impact Takes ~24 seconds currently and found 3 dead links (pull requests already created). # Dependent PRs * #2064 * #2065 * #2066 # Info See [markdown-link-check](https://github.com/marketplace/actions/markdown-link-check). # Example output ``` FILE: ./docs/profiling.md 1 links checked. FILE: ./docs/plugins_guidelines.md 37 links checked. FILE: ./docs/linters.md [✖] ../.github/linters/markdown-lint.yml → Status: 400 [Error: ENOENT: no such file or directory, access '/github/workspace/.github/linters/markdown-lint.yml'] { errno: -2, code: 'ENOENT', syscall: 'access', path: '/github/workspace/.github/linters/markdown-lint.yml' } ``` # Improvements * Can also be used to check external links, but fails because of: * Too many requests (429) responses: ``` FILE: ./CHANGELOG.md [✖] https://github.com/bevyengine/bevy/pull/1762 → Status: 429 ``` * crates.io links respond 404 ``` FILE: ./README.md [✖] https://crates.io/crates/bevy → Status: 404 ```
2.1 KiB
Linters in this Repository
Code Format Linting with rustfmt
Can be automatically validated with cargo run -p ci
(which also runs other checks). Running this command will actually format the code:
cargo fmt --all
Code Linting with Clippy
Can be automatically run with cargo run -p ci
(which also runs other checks) or manually with this command:
cargo clippy --workspace --all-targets --all-features -- -D warnings -A clippy::type_complexity -A clippy::manual-strip
Explanation:
-D warnings
: No warnings are allowed in the codebase.-A clippy::type_complexity
: type complexity must be ignored because we use huge templates for queries.
super-linter
super-linter
provides easy access to many different Linters.
markdownlint
markdownlint
is provided by super-linter
and is responsible for .md
files.
Its configuration is saved in the .markdown-lint.yml file.
The provided rules are documented here and information about setting the config can be seen here.
Using VS Code markdownlint
If you want to use the VS Code Extension with the rules defined in .markdown-lint.yml, then you need to create a local config file in the root of the project with the configuration below.
Currently, this is not needed as the extension already disables the rule MD013
by default.
{
"extends": ".github/linters/.markdown-lint.yml"
}
Other Linters provided by super-linter
All other linters not mentioned in the this file are not activated and can be seen here.