Reintroduce the lint targets in the linter script (#12455)
This commit is contained in:
parent
6b3e0ea6bd
commit
535a689cfc
|
@ -0,0 +1 @@
|
||||||
|
Reintroduce the list of targets to the linter script, to avoid linting unwanted local-only directories during development.
|
|
@ -6,60 +6,36 @@ The Synapse codebase uses a number of code formatting tools in order to
|
||||||
quickly and automatically check for formatting (and sometimes logical)
|
quickly and automatically check for formatting (and sometimes logical)
|
||||||
errors in code.
|
errors in code.
|
||||||
|
|
||||||
The necessary tools are detailed below.
|
The necessary tools are:
|
||||||
|
|
||||||
First install them with:
|
- [black](https://black.readthedocs.io/en/stable/), a source code formatter;
|
||||||
|
- [isort](https://pycqa.github.io/isort/), which organises each file's imports;
|
||||||
|
- [flake8](https://flake8.pycqa.org/en/latest/), which can spot common errors; and
|
||||||
|
- [mypy](https://mypy.readthedocs.io/en/stable/), a type checker.
|
||||||
|
|
||||||
|
Install them with:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
pip install -e ".[lint,mypy]"
|
pip install -e ".[lint,mypy]"
|
||||||
```
|
```
|
||||||
|
|
||||||
- **black**
|
The easiest way to run the lints is to invoke the linter script as follows.
|
||||||
|
|
||||||
The Synapse codebase uses [black](https://pypi.org/project/black/)
|
```sh
|
||||||
as an opinionated code formatter, ensuring all comitted code is
|
scripts-dev/lint.sh
|
||||||
properly formatted.
|
```
|
||||||
|
|
||||||
Have `black` auto-format your code (it shouldn't change any
|
|
||||||
functionality) with:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
black .
|
|
||||||
```
|
|
||||||
|
|
||||||
- **flake8**
|
|
||||||
|
|
||||||
`flake8` is a code checking tool. We require code to pass `flake8`
|
|
||||||
before being merged into the codebase.
|
|
||||||
|
|
||||||
Check all application and test code with:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
flake8 .
|
|
||||||
```
|
|
||||||
|
|
||||||
- **isort**
|
|
||||||
|
|
||||||
`isort` ensures imports are nicely formatted, and can suggest and
|
|
||||||
auto-fix issues such as double-importing.
|
|
||||||
|
|
||||||
Auto-fix imports with:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
isort .
|
|
||||||
```
|
|
||||||
|
|
||||||
It's worth noting that modern IDEs and text editors can run these tools
|
It's worth noting that modern IDEs and text editors can run these tools
|
||||||
automatically on save. It may be worth looking into whether this
|
automatically on save. It may be worth looking into whether this
|
||||||
functionality is supported in your editor for a more convenient
|
functionality is supported in your editor for a more convenient
|
||||||
development workflow. It is not, however, recommended to run `flake8` on
|
development workflow. It is not, however, recommended to run `flake8` or `mypy`
|
||||||
save as it takes a while and is very resource intensive.
|
on save as they take a while and can be very resource intensive.
|
||||||
|
|
||||||
## General rules
|
## General rules
|
||||||
|
|
||||||
- **Naming**:
|
- **Naming**:
|
||||||
- Use camel case for class and type names
|
- Use `CamelCase` for class and type names
|
||||||
- Use underscores for functions and variables.
|
- Use underscores for `function_names` and `variable_names`.
|
||||||
- **Docstrings**: should follow the [google code
|
- **Docstrings**: should follow the [google code
|
||||||
style](https://google.github.io/styleguide/pyguide.html#38-comments-and-docstrings).
|
style](https://google.github.io/styleguide/pyguide.html#38-comments-and-docstrings).
|
||||||
See the
|
See the
|
||||||
|
|
|
@ -79,8 +79,20 @@ else
|
||||||
# If we were not asked to lint changed files, and no paths were found as a result,
|
# If we were not asked to lint changed files, and no paths were found as a result,
|
||||||
# then lint everything!
|
# then lint everything!
|
||||||
if [[ -z ${files+x} ]]; then
|
if [[ -z ${files+x} ]]; then
|
||||||
# Lint all source code files and directories
|
# CI runs each linter on the entire checkout, e.g. `black .`. So don't
|
||||||
files=( "." )
|
# rely on this list to *find* lint targets if that misses a file; instead;
|
||||||
|
# use it to exclude files from linters when this can't be done by config.
|
||||||
|
#
|
||||||
|
# To check which files the linters examine, use:
|
||||||
|
# black --verbose . 2>&1 | \grep -v ignored
|
||||||
|
# isort --show-files .
|
||||||
|
# flake8 --verbose . # This isn't a great option
|
||||||
|
# mypy has explicit config in mypy.ini; there is also mypy --verbose
|
||||||
|
files=(
|
||||||
|
"synapse" "docker" "tests"
|
||||||
|
"scripts-dev"
|
||||||
|
"contrib" "setup.py" "synmark" "stubs" ".ci"
|
||||||
|
)
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue