ruff/crates/ruff_server/src
Brent Westbrook 9925910a29
Add a ViolationMetadata::rule method (#18234)
Summary
--

This PR adds a macro-generated method to retrieve the `Rule` associated
with a given `Violation` struct, which makes it substantially cheaper
than parsing from the rule name. The rule is then converted to a
`NoqaCode` for storage on the `Message` (and eventually on the new
diagnostic type). The `ViolationMetadata::rule_name` method was now
unused, so the `rule` method replaces it.

Several types had to be moved from the `ruff_diagnostics` crate to the
`ruff_linter` crate to make this work, namely the `Violation` traits and
the old `Diagnostic` type, which had a constructor generic over a
`Violation`.

It's actually a fairly small PR, minus the hundreds of import changes.
The main changes are in these files:

-
[crates/ruff_linter/src/message/mod.rs](https://github.com/astral-sh/ruff/pull/18234/files#diff-139754ea310d75f28307008d21c771a190038bd106efe3b9267cc2d6c0fa0921)
-
[crates/ruff_diagnostics/src/lib.rs](https://github.com/astral-sh/ruff/pull/18234/files#diff-8e8ea5c586935bf21ea439f24253fcfd5955d2cb130f5377c2fa7bfee3ea3a81)
-
[crates/ruff_linter/src/diagnostic.rs](https://github.com/astral-sh/ruff/pull/18234/files#diff-1d0c9aad90d8f9446079c5be5f284150d97797158715bd9729e6f1f70246297a)
-
[crates/ruff_linter/src/lib.rs](https://github.com/astral-sh/ruff/pull/18234/files#diff-eb93ef7e78a612f5fa9145412c75cf6b1a5cefba1c2233e4a11a880a1ce1fbcc)

Test Plan
--

Existing tests
2025-05-28 09:27:09 -04:00
..
edit Switch to Rust 2024 edition (#18129) 2025-05-16 13:25:28 +02:00
server Add a ViolationMetadata::rule method (#18234) 2025-05-28 09:27:09 -04:00
session Switch to Rust 2024 edition (#18129) 2025-05-16 13:25:28 +02:00
edit.rs Split SourceLocation into LineColumn and SourceLocation (#17587) 2025-04-27 11:27:33 +01:00
fix.rs Switch to Rust 2024 edition (#18129) 2025-05-16 13:25:28 +02:00
format.rs Switch to Rust 2024 edition (#18129) 2025-05-16 13:25:28 +02:00
lib.rs Refactor workspace logic into workspace.rs (#16295) 2025-02-21 08:37:29 +00:00
lint.rs Unify Message variants (#18051) 2025-05-19 13:34:04 -04:00
logging.rs Switch to Rust 2024 edition (#18129) 2025-05-16 13:25:28 +02:00
message.rs Fix LSP show message macro to allow format args (#15487) 2025-01-15 08:11:49 +00:00
resolve.rs Root exclusions in the server to project root (#16043) 2025-02-10 04:57:14 +00:00
server.rs Switch to Rust 2024 edition (#18129) 2025-05-16 13:25:28 +02:00
session.rs Refactor workspace logic into workspace.rs (#16295) 2025-02-21 08:37:29 +00:00
workspace.rs Switch to Rust 2024 edition (#18129) 2025-05-16 13:25:28 +02:00