{"version": "2.1.0", "$schema": "https://json.schemastore.org/sarif-2.1.0.json", "runs": [{"tool": {"driver": {"name": "Repobility", "informationUri": "https://repobility.com", "rules": [{"id": "AIC001", "name": "Parallel implementation file sits beside a canonical file", "shortDescription": {"text": "Parallel implementation file sits beside a canonical file"}, "fullDescription": {"text": "AI-assisted edits often create a new sibling file instead of integrating the change into the existing module. That leaves two paths for future maintainers to understand and can hide the code that is actually wired into the app."}, "properties": {"scanner": "repobility-ai-code-hygiene", "category": "quality", "severity": "medium", "confidence": 0.82, "cwe": "", "owasp": ""}}, {"id": "CORE_LARGE_FILES", "name": "Average file size is 651 lines (recommend <300)", "shortDescription": {"text": "Average file size is 651 lines (recommend <300)"}, "fullDescription": {"text": "Refactor large files by extracting related functions into separate modules. Target files with 300+ lines first. Use the Single Responsibility Principle \u2014 each module should have one clear purpose."}, "properties": {"scanner": "repobility-core", "category": "quality", "severity": "medium", "confidence": null, "cwe": "", "owasp": ""}}, {"id": "AIC003", "name": "Duplicated implementation block across source files", "shortDescription": {"text": "Duplicated implementation block across source files"}, "fullDescription": {"text": "Duplicated blocks are a common artifact when generated code is pasted or recreated instead of reused. They increase maintenance cost because every future bug fix must be found in multiple locations."}, "properties": {"scanner": "repobility-ai-code-hygiene", "category": "quality", "severity": "low", "confidence": 0.86, "cwe": "", "owasp": ""}}]}}, "automationDetails": {"id": "repobility/434"}, "properties": {"repository": "elixir-lang/elixir", "repoUrl": "https://github.com/elixir-lang/elixir.git", "branch": "main"}, "results": [{"ruleId": "AIC001", "level": "warning", "message": {"text": "Parallel implementation file sits beside a canonical file"}, "properties": {"repobilityId": 22975, "scanner": "repobility-ai-code-hygiene", "fingerprint": "af44d4defa059dccd38cf1f02a87cda21afc069e0f6a286890112bd1fcbb85af", "category": "quality", "severity": "medium", "confidence": 0.82, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "Source filename has a patch-style suffix and a same-directory canonical sibling exists.", "evidence": {"suffix": "update", "rule_id": "AIC001", "scanner": "repobility-ai-code-hygiene", "references": ["https://arxiv.org/abs/2601.15195", "https://knip.dev/"], "canonical_file": "lib/mix/lib/mix/tasks/deps.ex", "correlation_key": "fp|af44d4defa059dccd38cf1f02a87cda21afc069e0f6a286890112bd1fcbb85af"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lib/mix/lib/mix/tasks/deps.update.ex"}, "region": {"startLine": 1}}}]}, {"ruleId": "AIC001", "level": "warning", "message": {"text": "Parallel implementation file sits beside a canonical file"}, "properties": {"repobilityId": 22974, "scanner": "repobility-ai-code-hygiene", "fingerprint": "7a24810dc9bbb988b3e8c20902c27812c633dd25af88d16a969df7d15fd9e908", "category": "quality", "severity": "medium", "confidence": 0.82, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "Source filename has a patch-style suffix and a same-directory canonical sibling exists.", "evidence": {"suffix": "clean", "rule_id": "AIC001", "scanner": "repobility-ai-code-hygiene", "references": ["https://arxiv.org/abs/2601.15195", "https://knip.dev/"], "canonical_file": "lib/mix/lib/mix/tasks/deps.ex", "correlation_key": "fp|7a24810dc9bbb988b3e8c20902c27812c633dd25af88d16a969df7d15fd9e908"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lib/mix/lib/mix/tasks/deps.clean.ex"}, "region": {"startLine": 1}}}]}, {"ruleId": "CORE_LARGE_FILES", "level": "warning", "message": {"text": "Average file size is 651 lines (recommend <300)"}, "properties": {"repobilityId": 17446, "scanner": "repobility-core", "fingerprint": "bfa44a996a72a09d28e5b96ea7548881ec7f54c2b6d0a82ba9f87e335a4a9239", "category": "quality", "severity": "medium", "confidence": null, "triageState": "fixed", "verdict": "", "isResolved": true, "reason": "", "evidence": {"rule_id": "CORE_LARGE_FILES", "scanner": "repobility-core", "correlation_key": "fp|bfa44a996a72a09d28e5b96ea7548881ec7f54c2b6d0a82ba9f87e335a4a9239"}}}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 22985, "scanner": "repobility-ai-code-hygiene", "fingerprint": "e885631571616d0fd9dc026535cb47f162254b891940cb945edc0e2ced6e1fde", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "lib/mix/lib/mix/tasks/help.ex", "duplicate_line": 142, "correlation_key": "fp|e885631571616d0fd9dc026535cb47f162254b891940cb945edc0e2ced6e1fde"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lib/mix/lib/mix/tasks/source.ex"}, "region": {"startLine": 47}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 22984, "scanner": "repobility-ai-code-hygiene", "fingerprint": "ba397c89ea5b350a85f8466ed4edd8fd44c65ca71c2a4a32bb5fd71817ac5640", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "lib/mix/lib/mix/tasks/profile.cprof.ex", "duplicate_line": 99, "correlation_key": "fp|ba397c89ea5b350a85f8466ed4edd8fd44c65ca71c2a4a32bb5fd71817ac5640"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lib/mix/lib/mix/tasks/profile.tprof.ex"}, "region": {"startLine": 145}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 22983, "scanner": "repobility-ai-code-hygiene", "fingerprint": "cb4a168320601fba8ef3dc7e09491fc9ad8779ee3f4080925fa1b2204a3bdbd2", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "lib/mix/lib/mix/tasks/profile.eprof.ex", "duplicate_line": 67, "correlation_key": "fp|cb4a168320601fba8ef3dc7e09491fc9ad8779ee3f4080925fa1b2204a3bdbd2"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lib/mix/lib/mix/tasks/profile.tprof.ex"}, "region": {"startLine": 96}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 22982, "scanner": "repobility-ai-code-hygiene", "fingerprint": "95908b42f2d201d819c204898a8d8b11c92a072abde88bbe3e0318d298af43ba", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "lib/mix/lib/mix/tasks/profile.cprof.ex", "duplicate_line": 89, "correlation_key": "fp|95908b42f2d201d819c204898a8d8b11c92a072abde88bbe3e0318d298af43ba"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lib/mix/lib/mix/tasks/profile.eprof.ex"}, "region": {"startLine": 98}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 22981, "scanner": "repobility-ai-code-hygiene", "fingerprint": "1c34f07b6047e90c35193e9deaa8a083086dbfe8fd8595b013c99295e261bd55", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "lib/mix/lib/mix/tasks/archive.install.ex", "duplicate_line": 37, "correlation_key": "fp|1c34f07b6047e90c35193e9deaa8a083086dbfe8fd8595b013c99295e261bd55"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lib/mix/lib/mix/tasks/escript.install.ex"}, "region": {"startLine": 38}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 22980, "scanner": "repobility-ai-code-hygiene", "fingerprint": "77b7bd31b0a2286f318bd0cac0fcd7df8769803c6226eb4fb6f296d24a3f4db1", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "lib/mix/lib/mix/tasks/compile.leex.ex", "duplicate_line": 43, "correlation_key": "fp|77b7bd31b0a2286f318bd0cac0fcd7df8769803c6226eb4fb6f296d24a3f4db1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lib/mix/lib/mix/tasks/compile.yecc.ex"}, "region": {"startLine": 44}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 22979, "scanner": "repobility-ai-code-hygiene", "fingerprint": "0c498d9209da487aef038896f46125af9504ce791211a211338c77cd718ef5c2", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "lib/elixir/scripts/elixir_docs.exs", "duplicate_line": 1, "correlation_key": "fp|0c498d9209da487aef038896f46125af9504ce791211a211338c77cd718ef5c2"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lib/elixir/scripts/mix_docs.exs"}, "region": {"startLine": 1}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 22978, "scanner": "repobility-ai-code-hygiene", "fingerprint": "de00427f46a28bf19adbe2ed0488215aa28ffff396a47d611738835004a05a17", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "lib/elixir/lib/dynamic_supervisor.ex", "duplicate_line": 384, "correlation_key": "fp|de00427f46a28bf19adbe2ed0488215aa28ffff396a47d611738835004a05a17"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lib/elixir/lib/supervisor.ex"}, "region": {"startLine": 805}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 22977, "scanner": "repobility-ai-code-hygiene", "fingerprint": "b32dffa83b2492178572a6d5c9b749f9b7923e8037d7bb98c1e9d8b00df3609e", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "lib/elixir/lib/hash_dict.ex", "duplicate_line": 172, "correlation_key": "fp|b32dffa83b2492178572a6d5c9b749f9b7923e8037d7bb98c1e9d8b00df3609e"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lib/elixir/lib/hash_set.ex"}, "region": {"startLine": 185}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 22976, "scanner": "repobility-ai-code-hygiene", "fingerprint": "2ecc2e21c0eed609ddfda063af933f17ef8e85aaaab1b529cfc0b6e6ac864bd1", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "lib/elixir/lib/gen_event.ex", "duplicate_line": 87, "correlation_key": "fp|2ecc2e21c0eed609ddfda063af933f17ef8e85aaaab1b529cfc0b6e6ac864bd1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lib/elixir/lib/gen_event/stream.ex"}, "region": {"startLine": 23}}}]}]}]}