mirror of
https://github.com/astral-sh/ruff.git
synced 2025-11-30 00:01:50 +00:00
Previously the rule documentation referenced configuration options
via full https:// URLs, which was bad for several reasons:
* changing the website would mean you'd have to change all URLs
* the links didn't work when building mkdocs locally
* the URLs showed up in the `ruff rule` output
* broken references weren't detected by our CI
This commit solves all of these problems by post-processing the
Markdown, recognizing sections such as:
## Options
* `flake8-tidy-imports.ban-relative-imports`
`cargo dev generate-all` will automatically linkify such references
and panic if the referenced option doesn't exist.
Note that the option can also be linked in the other Markdown sections
via e.g. [`flake8-tidy-imports.ban-relative-imports`] since
the post-processing code generates a CommonMark link definition.
Resolves #2766.
989 B
989 B
complex-structure (C901)
Derived from the mccabe linter.
What it does
Checks for functions with a high McCabe complexity.
The McCabe complexity of a function is a measure of the complexity of the
control flow graph of the function. It is calculated by adding one to the
number of decision points in the function. A decision point is a place in
the code where the program has a choice of two or more paths to follow.
Why is this bad?
Functions with a high complexity are hard to understand and maintain.
Options
Example
def foo(a, b, c):
if a:
if b:
if c:
return 1
else:
return 2
else:
return 3
else:
return 4
Use instead:
def foo(a, b, c):
if not a:
return 4
if not b:
return 3
if not c:
return 2
return 1