# Docgen
Documentation for the rules folder is not manually written, documentation is written as rust doc comments in source files (in the lint declaration). And a docgen script (opens new window) is used to generate the user facing docs. The docgen script allows us to make rustdoc documentation, as well as user facing documentation automatically.
Docgen goes through a few steps to collect docs:
- The script crawls the groups directory (opens new window), for every group it will:
- Collect the group name by looking at the
group!
invocation inmod.rs
- For each rule file it will then:
- Collect the
declare_lint!
invocation, from this it grabs the main documentation, replacing allignore
code blocks withjs
. it will also collect any public config fields and their corresponding documentation. - Collect the possible
rule_tests!
invocation, for each err and ok test, if it is not marked with/// ignore
then it
will be used inMore invalid examples
andMore valid examples
sections. - Append the rule name to the top of the file.
- Append the main documentation.
- Build a table of config fields (if any).
- Append any
More invalid examples
andMore valid examples
sections built from tests. - Append a hyperlink to the source code
- Generate a README for the group, with a table of all the rules, including the first sentence of each rule’s doc as a description.
it also links each rule’s markdown file as a hyperlink.
* The script collects all groups which have been collected and generates this top level document with a table of the groups which you might have seen right above ^^
- Collect the group name by looking at the
You can run the docgen with either cargo docgen
or cargo xtask codegen
.