diff --git a/crates/ruff_linter/resources/test/fixtures/flake8_todos/TD003.py b/crates/ruff_linter/resources/test/fixtures/flake8_todos/TD003.py index 0423e5f481..e41dbfcbc0 100644 --- a/crates/ruff_linter/resources/test/fixtures/flake8_todos/TD003.py +++ b/crates/ruff_linter/resources/test/fixtures/flake8_todos/TD003.py @@ -42,17 +42,17 @@ def foo(x): # TODO: here's a TODO on the last line with no link +# Valid Jira-style patterns (should pass) # TODO: Move this part to the other place RFFU-6877 - # TODO: PROJ-123 Another Jira-style example - -# TODO: Valid Jira-style issue IDs (should pass) # TODO: Fix bug ABC-123 # TODO: Implement feature XYZ-456 # TODO: Update documentation DEF-789 # TODO: Refactor code GHI-101112 +# TODO: Fix this (AIRFLOW-123) +# TODO: Update config (SUPERSET-456) -# TODO: Invalid patterns that should still trigger TD003 (should fail) +# Invalid patterns that should still trigger TD003 (should fail) # TODO: Single letter project key A-1 # TODO: No hyphen pattern ABC123 # TODO: Lowercase project key abc-123 @@ -61,3 +61,5 @@ def foo(x): # TODO: Number before letters 123-ABC # TODO: Multiple hyphens ABC-123-456 # TODO: Empty project key -123 +# TODO: This is about PROJ-123 server config (ID in middle of sentence) +# TODO: Working on PROJ-123 and PROJ-456 (multiple IDs) diff --git a/crates/ruff_linter/src/rules/flake8_todos/rules/todos.rs b/crates/ruff_linter/src/rules/flake8_todos/rules/todos.rs index 8334d9de81..77f97d87d4 100644 --- a/crates/ruff_linter/src/rules/flake8_todos/rules/todos.rs +++ b/crates/ruff_linter/src/rules/flake8_todos/rules/todos.rs @@ -248,7 +248,9 @@ static ISSUE_LINK_TODO_LINE_REGEX_SET: LazyLock = LazyLock::new(|| { RegexSet::new([ r"\s*(http|https)://.*", // issue link r"\s*#\d+.*", // issue code - like "#003" - r"\s*[A-Z]{2,}-\d+.*", // Jira-style issue code - like "RFFU-6877" + r"\s*[A-Z]{2,}-\d+\s*$", // Jira-style issue code at end of line - like "RFFU-6877" + r"\s*[A-Z]{2,}-\d+\s", // Jira-style issue code followed by space - like "RFFU-6877 " + r"\s*\([A-Z]{2,}-\d+\)", // Jira-style issue code in parentheses - like "(RFFU-6877)" ]) .unwrap() }); diff --git a/crates/ruff_linter/src/rules/flake8_todos/snapshots/ruff_linter__rules__flake8_todos__tests__missing-todo-link_TD003.py.snap b/crates/ruff_linter/src/rules/flake8_todos/snapshots/ruff_linter__rules__flake8_todos__tests__missing-todo-link_TD003.py.snap index 6bd240fac2..47714f4ce9 100644 --- a/crates/ruff_linter/src/rules/flake8_todos/snapshots/ruff_linter__rules__flake8_todos__tests__missing-todo-link_TD003.py.snap +++ b/crates/ruff_linter/src/rules/flake8_todos/snapshots/ruff_linter__rules__flake8_todos__tests__missing-todo-link_TD003.py.snap @@ -62,35 +62,13 @@ TD003 Missing issue link for this TODO 43 | # TODO: here's a TODO on the last line with no link | ^^^^ 44 | -45 | # TODO: Move this part to the other place RFFU-6877 - | - -TD003 Missing issue link for this TODO - --> TD003.py:49:3 - | -47 | # TODO: PROJ-123 Another Jira-style example -48 | -49 | # TODO: Valid Jira-style issue IDs (should pass) - | ^^^^ -50 | # TODO: Fix bug ABC-123 -51 | # TODO: Implement feature XYZ-456 - | - -TD003 Missing issue link for this TODO - --> TD003.py:55:3 - | -53 | # TODO: Refactor code GHI-101112 -54 | -55 | # TODO: Invalid patterns that should still trigger TD003 (should fail) - | ^^^^ -56 | # TODO: Single letter project key A-1 -57 | # TODO: No hyphen pattern ABC123 +45 | # Valid Jira-style patterns (should pass) | TD003 Missing issue link for this TODO --> TD003.py:56:3 | -55 | # TODO: Invalid patterns that should still trigger TD003 (should fail) +55 | # Invalid patterns that should still trigger TD003 (should fail) 56 | # TODO: Single letter project key A-1 | ^^^^ 57 | # TODO: No hyphen pattern ABC123 @@ -100,7 +78,7 @@ TD003 Missing issue link for this TODO TD003 Missing issue link for this TODO --> TD003.py:57:3 | -55 | # TODO: Invalid patterns that should still trigger TD003 (should fail) +55 | # Invalid patterns that should still trigger TD003 (should fail) 56 | # TODO: Single letter project key A-1 57 | # TODO: No hyphen pattern ABC123 | ^^^^ @@ -152,6 +130,17 @@ TD003 Missing issue link for this TODO 63 | # TODO: Empty project key -123 | +TD003 Missing issue link for this TODO + --> TD003.py:62:3 + | +60 | # TODO: Just a random word with hyphen and number random-123 +61 | # TODO: Number before letters 123-ABC +62 | # TODO: Multiple hyphens ABC-123-456 + | ^^^^ +63 | # TODO: Empty project key -123 +64 | # TODO: This is about PROJ-123 server config (ID in middle of sentence) + | + TD003 Missing issue link for this TODO --> TD003.py:63:3 | @@ -159,4 +148,6 @@ TD003 Missing issue link for this TODO 62 | # TODO: Multiple hyphens ABC-123-456 63 | # TODO: Empty project key -123 | ^^^^ +64 | # TODO: This is about PROJ-123 server config (ID in middle of sentence) +65 | # TODO: Working on PROJ-123 and PROJ-456 (multiple IDs) |