summary refs log tree commit diff
diff options
context:
space:
mode:
authorAndrew Morgan <1342360+anoadragon453@users.noreply.github.com>2023-01-12 16:20:34 +0000
committerGitHub <noreply@github.com>2023-01-12 16:20:34 +0000
commitf5ea9f2b1d9e3e3def783b7b61760f2d859ba978 (patch)
tree67c4ce69c022f6285dae2eea3c9c248856396ab6
parentRe-enable some linting (#14821) (diff)
downloadsynapse-f5ea9f2b1d9e3e3def783b7b61760f2d859ba978.tar.xz
Add rust linting commands to `scripts-dev/lint.sh` (#14822)
-rw-r--r--changelog.d/14822.misc1
-rwxr-xr-xscripts-dev/lint.sh33
2 files changed, 34 insertions, 0 deletions
diff --git a/changelog.d/14822.misc b/changelog.d/14822.misc
new file mode 100644
index 0000000000..5e02cc8488
--- /dev/null
+++ b/changelog.d/14822.misc
@@ -0,0 +1 @@
+Add `cargo fmt` and `cargo clippy` to the lint script.
\ No newline at end of file
diff --git a/scripts-dev/lint.sh b/scripts-dev/lint.sh
index 2bf58ac5d4..392c509a8a 100755
--- a/scripts-dev/lint.sh
+++ b/scripts-dev/lint.sh
@@ -101,10 +101,43 @@ echo
 # Print out the commands being run
 set -x
 
+# Ensure the sort order of imports.
 isort "${files[@]}"
+
+# Ensure Python code conforms to an opinionated style.
 python3 -m black "${files[@]}"
+
+# Ensure the sample configuration file conforms to style checks.
 ./scripts-dev/config-lint.sh
+
+# Catch any common programming mistakes in Python code.
 # --quiet suppresses the update check.
 ruff --quiet "${files[@]}"
+
+# Catch any common programming mistakes in Rust code.
+#
+# --bins, --examples, --lib, --tests combined explicitly disable checking
+# the benchmarks, which can fail due to `#![feature]` macros not being
+# allowed on the stable rust toolchain (rustc error E0554).
+#
+# --allow-staged and --allow-dirty suppress clippy raising errors
+# for uncommitted files. Only needed when using --fix.
+#
+# -D warnings disables the "warnings" lint.
+#
+# Using --fix has a tendency to cause subsequent runs of clippy to recompile
+# rust code, which can slow down this script. Thus we run clippy without --fix
+# first which is quick, and then re-run it with --fix if an error was found.
+if ! cargo-clippy --bins --examples --lib --tests -- -D warnings > /dev/null 2>&1; then
+  cargo-clippy \
+    --bins --examples --lib --tests --allow-staged --allow-dirty --fix -- -D warnings
+fi
+
+# Ensure the formatting of Rust code.
+cargo-fmt
+
+# Ensure all Pydantic models use strict types.
 ./scripts-dev/check_pydantic_models.py lint
+
+# Ensure type hints are correct.
 mypy