mirror of
https://github.com/Aider-AI/aider.git
synced 2025-05-29 16:54:59 +00:00
fix: improve AI comment detection accuracy in FileWatcher
This commit is contained in:
parent
ee7bb71a05
commit
97bf5e8d69
4 changed files with 47 additions and 31 deletions
|
@ -106,8 +106,8 @@ class FileWatcher:
|
||||||
|
|
||||||
# Check if file contains AI markers
|
# Check if file contains AI markers
|
||||||
try:
|
try:
|
||||||
_, _, has_match = self.get_ai_comments(str(path_abs))
|
comments, _, _ = self.get_ai_comments(str(path_abs))
|
||||||
return has_match
|
return bool(comments)
|
||||||
except Exception:
|
except Exception:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
|
@ -23,15 +23,22 @@ def test_ai_comment_pattern():
|
||||||
# Test Python fixture
|
# Test Python fixture
|
||||||
py_path = fixtures_dir / "watch.py"
|
py_path = fixtures_dir / "watch.py"
|
||||||
py_lines, py_comments, py_has_bang = watcher.get_ai_comments(str(py_path))
|
py_lines, py_comments, py_has_bang = watcher.get_ai_comments(str(py_path))
|
||||||
|
|
||||||
# Count unique AI comments (excluding duplicates and variations with extra spaces)
|
# Count unique AI comments (excluding duplicates and variations with extra spaces)
|
||||||
unique_py_comments = set(comment.strip().lower() for comment in py_comments)
|
unique_py_comments = set(comment.strip().lower() for comment in py_comments)
|
||||||
assert len(unique_py_comments) == 11, f"Expected 11 unique AI comments in Python fixture, found {len(unique_py_comments)}"
|
|
||||||
|
py_expected = 10
|
||||||
|
assert len(unique_py_comments) == 10, (
|
||||||
|
f"Expected {py_expected} unique AI comments in Python fixture, found"
|
||||||
|
f" {len(unique_py_comments)}"
|
||||||
|
)
|
||||||
assert py_has_bang, "Expected at least one bang (!) comment in Python fixture"
|
assert py_has_bang, "Expected at least one bang (!) comment in Python fixture"
|
||||||
|
|
||||||
# Test JavaScript fixture
|
# Test JavaScript fixture
|
||||||
js_path = fixtures_dir / "watch.js"
|
js_path = fixtures_dir / "watch.js"
|
||||||
js_lines, js_comments, js_has_bang = watcher.get_ai_comments(str(js_path))
|
js_lines, js_comments, js_has_bang = watcher.get_ai_comments(str(js_path))
|
||||||
|
js_expected = 14
|
||||||
assert (
|
assert (
|
||||||
len(js_lines) == 11
|
len(js_lines) == js_expected
|
||||||
), f"Expected 11 AI comments in JavaScript fixture, found {len(js_lines)}"
|
), f"Expected {js_expected} AI comments in JavaScript fixture, found {len(js_lines)}"
|
||||||
assert js_has_bang, "Expected at least one bang (!) comment in JavaScript fixture"
|
assert js_has_bang, "Expected at least one bang (!) comment in JavaScript fixture"
|
||||||
|
|
30
tests/fixtures/watch.js
vendored
30
tests/fixtures/watch.js
vendored
|
@ -1,27 +1,35 @@
|
||||||
// Regular AI comment
|
// Regular AI comment
|
||||||
//ai do something
|
//ai do 1 something
|
||||||
//AI make this better
|
//AI make 2 this better
|
||||||
//ai! urgent change needed
|
//ai! urgent 3 change needed
|
||||||
//AI! another urgent one
|
//AI! another 4 urgent one
|
||||||
// ai with space
|
// ai with 5 space
|
||||||
// AI with caps
|
// AI with 6 caps
|
||||||
// ai! with bang
|
// ai! with 7 bang
|
||||||
// this is not an ai comment
|
// this is not an ai comment
|
||||||
// aider is not an ai comment
|
// aider is not an ai! comment
|
||||||
|
|
||||||
function dummyFunction() {
|
function dummyFunction() {
|
||||||
// ai inside function
|
// ai inside 8 function
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
class Example {
|
class Example {
|
||||||
constructor() {
|
constructor() {
|
||||||
// ai in constructor
|
// ai in 9 constructor
|
||||||
this.value = 42;
|
this.value = 42;
|
||||||
}
|
}
|
||||||
|
|
||||||
method() {
|
method() {
|
||||||
// ai in method
|
// ai in 10 method
|
||||||
return this.value;
|
return this.value;
|
||||||
}
|
}
|
||||||
|
// ai!
|
||||||
|
//ai
|
||||||
|
//ai!
|
||||||
|
// 11-13
|
||||||
|
|
||||||
|
method2() { // ai 14
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
31
tests/fixtures/watch.py
vendored
31
tests/fixtures/watch.py
vendored
|
@ -1,19 +1,20 @@
|
||||||
# Regular AI comment
|
# flake8: noqa
|
||||||
# ai do something
|
|
||||||
# AI make this better
|
# Regular not AI comment
|
||||||
# ai! urgent change needed
|
# ai 1 do something
|
||||||
# AI! another urgent one
|
# AI 2 make this better
|
||||||
//ai javascript style
|
# ai! 3 urgent change needed
|
||||||
//AI do that thing
|
# AI! 4 another urgent one
|
||||||
//ai! urgent js thing
|
|
||||||
// ai with some space
|
|
||||||
// AI with caps
|
|
||||||
// ai! with bang
|
|
||||||
# this is not an ai comment
|
# this is not an ai comment
|
||||||
// this is also not an ai comment
|
|
||||||
# aider is not an ai comment
|
# aider is not an ai comment
|
||||||
// aider is not an ai comment
|
# not an ai! comment
|
||||||
|
|
||||||
|
|
||||||
def dummy_function():
|
def dummy_function():
|
||||||
# ai inside function
|
# ai inside 5 function
|
||||||
pass
|
# final 6 ai!
|
||||||
|
# final 7 ai
|
||||||
|
# ai
|
||||||
|
# ai
|
||||||
|
# those are 8+9
|
||||||
|
pass # ai 10
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue