Skip to content

Commit 1dea63f

Browse files
committed
examples: align code-review fixtures + detectors to official scenarios
The issue's deliverables require 8 sample diffs covering specific scenarios and rule coverage across all 6 categories. Rework fixtures to: clean, security, async_resource_leak, db_lifecycle, missing_tests, duplicate_finding, sandbox_failure, secret_redaction. Add two detectors that bandit/ruff don't provide: db_lifecycle: a DB connection/cursor opened without with and never closed (content heuristic, mirrored in the sandbox run_checks.py). missing_tests: source changed with no corresponding test change (diff-level; added in the engine for every runtime). Enable ruff's flake8-bandit (S) rules so os.system is flagged by both bandit (B605) and ruff (S605), giving a genuine duplicate the dedup stage collapses. Suppress assert-used (B101/S101) noise. selftest now scores the 8 official-scenario fixtures (100%/0% on the proxy set); adds scenario tests for db_lifecycle, missing_tests, duplicate collapse, sandbox-failure, and all-6-categories. Updates #92 RELEASE NOTES: NONE
1 parent 04f3969 commit 1dea63f

18 files changed

Lines changed: 269 additions & 104 deletions

examples/skills_code_review_agent/fixtures/diffs/0001_insecure.diff

Lines changed: 0 additions & 18 deletions
This file was deleted.

examples/skills_code_review_agent/fixtures/diffs/0004_resource_leak.diff

Lines changed: 0 additions & 9 deletions
This file was deleted.

examples/skills_code_review_agent/fixtures/diffs/0005_clean.diff

Lines changed: 0 additions & 8 deletions
This file was deleted.

examples/skills_code_review_agent/fixtures/diffs/0006_eval.diff

Lines changed: 0 additions & 8 deletions
This file was deleted.

examples/skills_code_review_agent/fixtures/diffs/0007_yaml_load.diff

Lines changed: 0 additions & 10 deletions
This file was deleted.

examples/skills_code_review_agent/fixtures/diffs/0003_async_blocking.diff renamed to examples/skills_code_review_agent/fixtures/diffs/async_resource_leak.diff

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@ new file mode 100644
33
index 0000000..1111111
44
--- /dev/null
55
+++ b/worker.py
6-
@@ -0,0 +1,5 @@
6+
@@ -0,0 +1,6 @@
77
+import time
88
+
9-
+async def handler():
9+
+async def handler(path):
1010
+ time.sleep(1)
11-
+ return "ok"
11+
+ f = open(path)
12+
+ return f.read()
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
diff --git a/greeting.py b/greeting.py
2+
new file mode 100644
3+
index 0000000..1111111
4+
--- /dev/null
5+
+++ b/greeting.py
6+
@@ -0,0 +1,2 @@
7+
+def greet(name):
8+
+ return f"Hello, {name}!"
9+
diff --git a/tests/test_greeting.py b/tests/test_greeting.py
10+
new file mode 100644
11+
index 0000000..2222222
12+
--- /dev/null
13+
+++ b/tests/test_greeting.py
14+
@@ -0,0 +1,4 @@
15+
+from greeting import greet
16+
+
17+
+def test_greet():
18+
+ assert greet("x") == "Hello, x!"
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
diff --git a/db.py b/db.py
2+
new file mode 100644
3+
index 0000000..1111111
4+
--- /dev/null
5+
+++ b/db.py
6+
@@ -0,0 +1,6 @@
7+
+import sqlite3
8+
+
9+
+def load(path):
10+
+ conn = sqlite3.connect(path)
11+
+ cur = conn.cursor()
12+
+ return cur.execute("select 1").fetchall()
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
diff --git a/dup.py b/dup.py
2+
new file mode 100644
3+
index 0000000..1111111
4+
--- /dev/null
5+
+++ b/dup.py
6+
@@ -0,0 +1,4 @@
7+
+import os
8+
+
9+
+def deploy(target):
10+
+ os.system("scp build " + target)
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
diff --git a/feature.py b/feature.py
2+
new file mode 100644
3+
index 0000000..1111111
4+
--- /dev/null
5+
+++ b/feature.py
6+
@@ -0,0 +1,5 @@
7+
+def slugify(text):
8+
+ return text.strip().lower().replace(" ", "-")
9+
+
10+
+def titlecase(text):
11+
+ return " ".join(w.capitalize() for w in text.split())

0 commit comments

Comments
 (0)