diff --git a/crates/squawk_linter/README.md b/crates/squawk_linter/README.md index da13a12f..840d92a3 100644 --- a/crates/squawk_linter/README.md +++ b/crates/squawk_linter/README.md @@ -1,31 +1,38 @@ # linter -## rules - -| name | done? | -| -------------------------------------------- | ----- | -| adding_field_with_default | y | -| adding_foreign_key_constraint | y | -| adding_not_null_field | y | -| adding_primary_key_constraint | y | -| adding_required_field | y | -| ban_char_field | y | -| ban_concurrent_index_creation_in_transaction | y | -| ban_drop_column | y | -| ban_drop_database | y | -| ban_drop_not_null | y | -| ban_drop_table | y | -| changing_column_type | y | -| constraint_missing_not_valid | y | -| disallow_unique_constraint | y | -| prefer_big_int | y | -| prefer_bigint_over_int | y | -| prefer_bigint_over_smallint | y | -| prefer_identity | y | -| prefer_robust_stmts | y | -| prefer_text_field | y | -| prefer_timestamptz | y | -| renaming_column | y | -| renaming_table | y | -| require_concurrent_index_creation | y | -| require_concurrent_index_deletion | y | +## Error message style guide + +### Lock messages + +Each lock name should be: + +- accompanied by an explanation of its meaning in simple terms +- tables that are affected + +Instead of: + +``` +Changing the size of a `varchar` field requires an `ACCESS EXCLUSIVE` lock. +``` + +include a lock description & table name: + +``` +Changing the size of a `varchar` field requires an `ACCESS EXCLUSIVE` lock, which prevents reads and writes to `users`. +``` + +### Help + +A help message should be short an actionable. + +Instead of: + +``` +You can remove the `CASCADE` keyword and then specify exactly which tables you want to truncate directly. +``` + +tell the user what to change (add, update, remove): + +``` +Remove the `CASCADE` and specify exactly which tables you want to truncate. +``` diff --git a/crates/squawk_linter/src/rules/snapshots/squawk_linter__rules__prefer_big_int__test__alter_table_add_column_err.snap b/crates/squawk_linter/src/rules/snapshots/squawk_linter__rules__prefer_big_int__test__alter_table_add_column_err.snap deleted file mode 100644 index 3ccfc537..00000000 --- a/crates/squawk_linter/src/rules/snapshots/squawk_linter__rules__prefer_big_int__test__alter_table_add_column_err.snap +++ /dev/null @@ -1,14 +0,0 @@ ---- -source: crates/squawk_linter/src/rules/prefer_big_int.rs -expression: errors ---- -[ - Violation { - code: PreferBigInt, - message: "Using 32-bit integer fields can result in hitting the max `int` limit.", - text_range: 28..35, - help: Some( - "Use 64-bit integer values instead to prevent hitting this limit.", - ), - }, -] diff --git a/crates/squawk_linter/src/rules/snapshots/squawk_linter__rules__prefer_big_int__test__alter_table_alter_column_type_err.snap b/crates/squawk_linter/src/rules/snapshots/squawk_linter__rules__prefer_big_int__test__alter_table_alter_column_type_err.snap deleted file mode 100644 index 627bf246..00000000 --- a/crates/squawk_linter/src/rules/snapshots/squawk_linter__rules__prefer_big_int__test__alter_table_alter_column_type_err.snap +++ /dev/null @@ -1,14 +0,0 @@ ---- -source: crates/squawk_linter/src/rules/prefer_big_int.rs -expression: errors ---- -[ - Violation { - code: PreferBigInt, - message: "Using 32-bit integer fields can result in hitting the max `int` limit.", - text_range: 35..42, - help: Some( - "Use 64-bit integer values instead to prevent hitting this limit.", - ), - }, -] diff --git a/crates/squawk_linter/src/rules/snapshots/squawk_linter__rules__prefer_big_int__test__alter_table_alter_column_type_with_quotes_err.snap b/crates/squawk_linter/src/rules/snapshots/squawk_linter__rules__prefer_big_int__test__alter_table_alter_column_type_with_quotes_err.snap deleted file mode 100644 index 37439978..00000000 --- a/crates/squawk_linter/src/rules/snapshots/squawk_linter__rules__prefer_big_int__test__alter_table_alter_column_type_with_quotes_err.snap +++ /dev/null @@ -1,14 +0,0 @@ ---- -source: crates/squawk_linter/src/rules/prefer_big_int.rs -expression: errors ---- -[ - Violation { - code: PreferBigInt, - message: "Using 32-bit integer fields can result in hitting the max `int` limit.", - text_range: 35..44, - help: Some( - "Use 64-bit integer values instead to prevent hitting this limit.", - ), - }, -] diff --git a/crates/squawk_linter/src/rules/snapshots/squawk_linter__rules__prefer_big_int__test__create_table_many_err.snap b/crates/squawk_linter/src/rules/snapshots/squawk_linter__rules__prefer_big_int__test__create_table_many_err.snap deleted file mode 100644 index 6dfe6ead..00000000 --- a/crates/squawk_linter/src/rules/snapshots/squawk_linter__rules__prefer_big_int__test__create_table_many_err.snap +++ /dev/null @@ -1,22 +0,0 @@ ---- -source: crates/squawk_linter/src/rules/prefer_big_int.rs -expression: errors ---- -[ - Violation { - code: PreferBigInt, - message: "Using 32-bit integer fields can result in hitting the max `int` limit.", - text_range: 30..37, - help: Some( - "Use 64-bit integer values instead to prevent hitting this limit.", - ), - }, - Violation { - code: PreferBigInt, - message: "Using 32-bit integer fields can result in hitting the max `int` limit.", - text_range: 47..53, - help: Some( - "Use 64-bit integer values instead to prevent hitting this limit.", - ), - }, -] diff --git a/crates/squawk_linter/src/rules/snapshots/squawk_linter__rules__prefer_big_int__test__err.snap b/crates/squawk_linter/src/rules/snapshots/squawk_linter__rules__prefer_big_int__test__err.snap deleted file mode 100644 index 4e259503..00000000 --- a/crates/squawk_linter/src/rules/snapshots/squawk_linter__rules__prefer_big_int__test__err.snap +++ /dev/null @@ -1,70 +0,0 @@ ---- -source: crates/squawk_linter/src/rules/prefer_big_int.rs -expression: errors ---- -[ - Violation { - code: PreferBigInt, - message: "Using 32-bit integer fields can result in hitting the max `int` limit.", - text_range: 29..37, - help: Some( - "Use 64-bit integer values instead to prevent hitting this limit.", - ), - }, - Violation { - code: PreferBigInt, - message: "Using 32-bit integer fields can result in hitting the max `int` limit.", - text_range: 69..73, - help: Some( - "Use 64-bit integer values instead to prevent hitting this limit.", - ), - }, - Violation { - code: PreferBigInt, - message: "Using 32-bit integer fields can result in hitting the max `int` limit.", - text_range: 105..112, - help: Some( - "Use 64-bit integer values instead to prevent hitting this limit.", - ), - }, - Violation { - code: PreferBigInt, - message: "Using 32-bit integer fields can result in hitting the max `int` limit.", - text_range: 144..148, - help: Some( - "Use 64-bit integer values instead to prevent hitting this limit.", - ), - }, - Violation { - code: PreferBigInt, - message: "Using 32-bit integer fields can result in hitting the max `int` limit.", - text_range: 180..186, - help: Some( - "Use 64-bit integer values instead to prevent hitting this limit.", - ), - }, - Violation { - code: PreferBigInt, - message: "Using 32-bit integer fields can result in hitting the max `int` limit.", - text_range: 218..225, - help: Some( - "Use 64-bit integer values instead to prevent hitting this limit.", - ), - }, - Violation { - code: PreferBigInt, - message: "Using 32-bit integer fields can result in hitting the max `int` limit.", - text_range: 257..264, - help: Some( - "Use 64-bit integer values instead to prevent hitting this limit.", - ), - }, - Violation { - code: PreferBigInt, - message: "Using 32-bit integer fields can result in hitting the max `int` limit.", - text_range: 296..307, - help: Some( - "Use 64-bit integer values instead to prevent hitting this limit.", - ), - }, -]