camouf 0.9.0 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +55 -32
- package/dist/cli/version.d.ts +1 -1
- package/dist/cli/version.d.ts.map +1 -1
- package/dist/cli/version.js +1 -1
- package/dist/cli/version.js.map +1 -1
- package/dist/core/rules/builtin/ai-hallucinated-imports.rule.d.ts +14 -0
- package/dist/core/rules/builtin/ai-hallucinated-imports.rule.d.ts.map +1 -1
- package/dist/core/rules/builtin/ai-hallucinated-imports.rule.js +72 -1
- package/dist/core/rules/builtin/ai-hallucinated-imports.rule.js.map +1 -1
- package/dist/core/rules/builtin/async-discrepancies.rule.d.ts +63 -0
- package/dist/core/rules/builtin/async-discrepancies.rule.d.ts.map +1 -0
- package/dist/core/rules/builtin/async-discrepancies.rule.js +452 -0
- package/dist/core/rules/builtin/async-discrepancies.rule.js.map +1 -0
- package/dist/core/rules/builtin/context-drift-patterns.rule.d.ts.map +1 -1
- package/dist/core/rules/builtin/context-drift-patterns.rule.js +37 -2
- package/dist/core/rules/builtin/context-drift-patterns.rule.js.map +1 -1
- package/dist/core/rules/builtin/performance-antipatterns.rule.d.ts.map +1 -1
- package/dist/core/rules/builtin/performance-antipatterns.rule.js +64 -11
- package/dist/core/rules/builtin/performance-antipatterns.rule.js.map +1 -1
- package/dist/core/rules/builtin/phantom-type-references.rule.d.ts.map +1 -1
- package/dist/core/rules/builtin/phantom-type-references.rule.js +81 -2
- package/dist/core/rules/builtin/phantom-type-references.rule.js.map +1 -1
- package/dist/core/rules/rule-engine.d.ts.map +1 -1
- package/dist/core/rules/rule-engine.js +2 -0
- package/dist/core/rules/rule-engine.js.map +1 -1
- package/dist/types/config.types.d.ts +2 -0
- package/dist/types/config.types.d.ts.map +1 -1
- package/dist/types/config.types.js.map +1 -1
- package/package.json +6 -4
package/README.md
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
[](https://www.npmjs.com/package/camouf)
|
|
4
4
|
[](https://opensource.org/licenses/Apache-2.0)
|
|
5
5
|
[](https://github.com/TheEmilz/camouf/actions/workflows/ci.yml)
|
|
6
|
+
[](https://github.com/marketplace/actions/camouf-ai-code-guardrails)
|
|
6
7
|
|
|
7
8
|
# Camouf
|
|
8
9
|
|
|
@@ -106,7 +107,7 @@ npx camouf fix --id sig-001 # Fix a specific mismatch
|
|
|
106
107
|
|
|
107
108
|
## Features
|
|
108
109
|
|
|
109
|
-
- **
|
|
110
|
+
- **19 Built-in Rules**: AI-specific and architecture validation rules
|
|
110
111
|
- **Function/Field Matching**: Fuzzy matching to detect AI naming drift
|
|
111
112
|
- **Circular Dependency Detection**: Find and break dependency cycles
|
|
112
113
|
- **Real-time Watch Mode**: Continuous architecture monitoring
|
|
@@ -157,7 +158,7 @@ Running `npx camouf` or `npx camouf help` displays the full interactive help:
|
|
|
157
158
|
██║ ███████║██╔████╔██║██║ ██║██║ ██║█████╗
|
|
158
159
|
██║ ██╔══██║██║╚██╔╝██║██║ ██║██║ ██║██╔══╝
|
|
159
160
|
╚██████╗██║ ██║██║ ╚═╝ ██║╚██████╔╝╚██████╔╝██║
|
|
160
|
-
╚═════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝ v0.
|
|
161
|
+
╚═════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝ v0.11.0
|
|
161
162
|
|
|
162
163
|
Architecture guardrails for AI-generated code
|
|
163
164
|
|
|
@@ -234,7 +235,7 @@ Running `npx camouf` or `npx camouf help` displays the full interactive help:
|
|
|
234
235
|
|
|
235
236
|
AI Safety: ai-hallucinated-imports, inconsistent-casing,
|
|
236
237
|
orphaned-functions, phantom-type-references,
|
|
237
|
-
context-drift-patterns
|
|
238
|
+
context-drift-patterns, async-discrepancies
|
|
238
239
|
Architecture: layer-dependencies, circular-dependencies,
|
|
239
240
|
function-signature-matching, contract-mismatch
|
|
240
241
|
Code Quality: type-safety, performance-antipatterns,
|
|
@@ -374,6 +375,7 @@ This creates a **feedback loop** where AI catches its own mistakes before you se
|
|
|
374
375
|
- [AI Agent Challenges](docs/ai-agent-challenges.md)
|
|
375
376
|
- [MCP Agent Tutorial](docs/mcp-agent-tutorial.md)
|
|
376
377
|
- [Configuring Rules](docs/configuring-rules.md)
|
|
378
|
+
- [Async Discrepancies Guide](docs/async-discrepancies.md)
|
|
377
379
|
- [CI/CD Integration](docs/ci-cd-integration.md)
|
|
378
380
|
- [Changelog](CHANGELOG.md)
|
|
379
381
|
|
|
@@ -495,6 +497,7 @@ These rules catch mistakes that AI coding assistants commonly make:
|
|
|
495
497
|
| `phantom-type-references` | Catches references to types that don't exist | `warn` |
|
|
496
498
|
| `inconsistent-casing` | Detects mixing of camelCase/snake_case in the same codebase | `warn` |
|
|
497
499
|
| `orphaned-functions` | Finds functions declared but never called anywhere | `warn` |
|
|
500
|
+
| `async-discrepancies` | Detects async/await misuse: floating promises, unnecessary async, mixed patterns | `warn` |
|
|
498
501
|
|
|
499
502
|
> **See examples:** Check `test-fixtures/ai-errors/` in the repository for concrete examples of what each rule catches.
|
|
500
503
|
|
|
@@ -714,6 +717,55 @@ npx camouf validate --format json --ci
|
|
|
714
717
|
|
|
715
718
|
## CI/CD Integration
|
|
716
719
|
|
|
720
|
+
### GitHub Actions (Marketplace)
|
|
721
|
+
|
|
722
|
+
Camouf is available on the [GitHub Actions Marketplace](https://github.com/marketplace/actions/camouf-ai-code-guardrails). One step is all you need:
|
|
723
|
+
|
|
724
|
+
```yaml
|
|
725
|
+
name: Architecture Check
|
|
726
|
+
on: [push, pull_request]
|
|
727
|
+
|
|
728
|
+
jobs:
|
|
729
|
+
architecture:
|
|
730
|
+
runs-on: ubuntu-latest
|
|
731
|
+
steps:
|
|
732
|
+
- uses: actions/checkout@v4
|
|
733
|
+
- uses: TheEmilz/camouf@v0.11.0
|
|
734
|
+
```
|
|
735
|
+
|
|
736
|
+
Camouf auto-detects your config, runs all enabled rules, annotates changed files in PR diffs, and uploads a report artifact.
|
|
737
|
+
|
|
738
|
+
#### Target Specific Rules
|
|
739
|
+
|
|
740
|
+
```yaml
|
|
741
|
+
- uses: TheEmilz/camouf@v0.11.0
|
|
742
|
+
with:
|
|
743
|
+
rules: 'async-discrepancies,contract-mismatch'
|
|
744
|
+
fail-on: 'warn'
|
|
745
|
+
```
|
|
746
|
+
|
|
747
|
+
#### Async Safety Gate
|
|
748
|
+
|
|
749
|
+
```yaml
|
|
750
|
+
name: Async Safety
|
|
751
|
+
on:
|
|
752
|
+
pull_request:
|
|
753
|
+
paths: ['**/*.ts', '**/*.js']
|
|
754
|
+
|
|
755
|
+
jobs:
|
|
756
|
+
async-check:
|
|
757
|
+
runs-on: ubuntu-latest
|
|
758
|
+
steps:
|
|
759
|
+
- uses: actions/checkout@v4
|
|
760
|
+
- uses: TheEmilz/camouf@v0.11.0
|
|
761
|
+
with:
|
|
762
|
+
rules: 'async-discrepancies'
|
|
763
|
+
fail-on: 'warn'
|
|
764
|
+
annotate: 'true'
|
|
765
|
+
```
|
|
766
|
+
|
|
767
|
+
See [CI/CD Integration Guide](docs/ci-cd-integration.md) for the full input/output reference, PR comments, GitLab CI, Jenkins, and Azure DevOps examples.
|
|
768
|
+
|
|
717
769
|
### Non-Interactive Mode
|
|
718
770
|
|
|
719
771
|
Use `--ci` flag or `CAMOUF_CI=1` environment variable for agent/CI environments:
|
|
@@ -734,35 +786,6 @@ CAMOUF_CI=1 npx camouf validate
|
|
|
734
786
|
- `0` — No violations found
|
|
735
787
|
- `1` — Violations found (or error)
|
|
736
788
|
|
|
737
|
-
### GitHub Actions
|
|
738
|
-
|
|
739
|
-
```yaml
|
|
740
|
-
name: Architecture Check
|
|
741
|
-
on: [push, pull_request]
|
|
742
|
-
|
|
743
|
-
jobs:
|
|
744
|
-
architecture:
|
|
745
|
-
runs-on: ubuntu-latest
|
|
746
|
-
steps:
|
|
747
|
-
- uses: actions/checkout@v3
|
|
748
|
-
- uses: actions/setup-node@v3
|
|
749
|
-
with:
|
|
750
|
-
node-version: '18'
|
|
751
|
-
- run: npm ci
|
|
752
|
-
- run: npx camouf validate --strict
|
|
753
|
-
```
|
|
754
|
-
|
|
755
|
-
### GitLab CI
|
|
756
|
-
|
|
757
|
-
```yaml
|
|
758
|
-
architecture:
|
|
759
|
-
stage: test
|
|
760
|
-
image: node:18
|
|
761
|
-
script:
|
|
762
|
-
- npm ci
|
|
763
|
-
- npx camouf validate --strict
|
|
764
|
-
```
|
|
765
|
-
|
|
766
789
|
## Multi-language Support
|
|
767
790
|
|
|
768
791
|
| Language | Parser | Features |
|
package/dist/cli/version.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Version and metadata for Camouf CLI
|
|
3
3
|
*/
|
|
4
|
-
export declare const version = "0.
|
|
4
|
+
export declare const version = "0.11.0";
|
|
5
5
|
export declare const name = "camouf";
|
|
6
6
|
export declare const description = "Architecture guardrails for AI-generated code";
|
|
7
7
|
export declare const metadata: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/cli/version.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/cli/version.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,OAAO,WAAW,CAAC;AAChC,eAAO,MAAM,IAAI,WAAW,CAAC;AAC7B,eAAO,MAAM,WAAW,kDAAkD,CAAC;AAE3E,eAAO,MAAM,QAAQ;;;;;;;;CAQpB,CAAC"}
|
package/dist/cli/version.js
CHANGED
package/dist/cli/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/cli/version.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/cli/version.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC;AAChC,MAAM,CAAC,MAAM,IAAI,GAAG,QAAQ,CAAC;AAC7B,MAAM,CAAC,MAAM,WAAW,GAAG,+CAA+C,CAAC;AAE3E,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,IAAI;IACJ,OAAO;IACP,WAAW;IACX,QAAQ,EAAE,oCAAoC;IAC9C,UAAU,EAAE,oCAAoC;IAChD,MAAM,EAAE,SAAS;IACjB,OAAO,EAAE,YAAY;CACtB,CAAC"}
|
|
@@ -22,6 +22,8 @@ interface HallucinatedImportsConfig extends RuleConfig {
|
|
|
22
22
|
ignorePatterns?: string[];
|
|
23
23
|
/** Path aliases mapping (e.g., { "@/": "./src/" }) */
|
|
24
24
|
pathAliases?: Record<string, string>;
|
|
25
|
+
/** Detected moduleResolution from tsconfig (auto-loaded) */
|
|
26
|
+
moduleResolution?: string;
|
|
25
27
|
}
|
|
26
28
|
export declare class AiHallucinatedImportsRule implements IRule {
|
|
27
29
|
readonly id = "ai-hallucinated-imports";
|
|
@@ -39,7 +41,19 @@ export declare class AiHallucinatedImportsRule implements IRule {
|
|
|
39
41
|
private loadTsConfigAliases;
|
|
40
42
|
check(context: RuleContext): Promise<RuleResult>;
|
|
41
43
|
checkFile(filePath: string, context: RuleContext): Promise<RuleResult>;
|
|
44
|
+
private readonly extensionSubstitutions;
|
|
42
45
|
private loadPathAliasesFromConfig;
|
|
46
|
+
/**
|
|
47
|
+
* Check if a .js/.jsx/.mjs/.cjs extension import resolves to a .ts/.tsx/.mts/.cts
|
|
48
|
+
* file on disk. This is the standard behavior with moduleResolution: NodeNext/Node16.
|
|
49
|
+
*/
|
|
50
|
+
private checkExtensionSubstitution;
|
|
51
|
+
/**
|
|
52
|
+
* Determines if we should try .js → .ts extension substitution.
|
|
53
|
+
* Always enabled when moduleResolution is nodenext/node16,
|
|
54
|
+
* but also applied as a fallback for any TS project to reduce false positives.
|
|
55
|
+
*/
|
|
56
|
+
private shouldTryExtensionSubstitution;
|
|
43
57
|
private checkFileImports;
|
|
44
58
|
private extractImports;
|
|
45
59
|
private isAliasImport;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-hallucinated-imports.rule.d.ts","sourceRoot":"","sources":["../../../../src/core/rules/builtin/ai-hallucinated-imports.rule.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAKlF,UAAU,yBAA0B,SAAQ,UAAU;IACpD,gCAAgC;IAChC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,6BAA6B;IAC7B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,yCAAyC;IACzC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,uCAAuC;IACvC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,sDAAsD;IACtD,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"ai-hallucinated-imports.rule.d.ts","sourceRoot":"","sources":["../../../../src/core/rules/builtin/ai-hallucinated-imports.rule.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAKlF,UAAU,yBAA0B,SAAQ,UAAU;IACpD,gCAAgC;IAChC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,6BAA6B;IAC7B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,yCAAyC;IACzC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,uCAAuC;IACvC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,sDAAsD;IACtD,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,4DAA4D;IAC5D,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAYD,qBAAa,yBAA0B,YAAW,KAAK;IACrD,QAAQ,CAAC,EAAE,6BAA6B;IACxC,QAAQ,CAAC,IAAI,uCAAuC;IACpD,QAAQ,CAAC,WAAW,6GAA6G;IACjI,QAAQ,CAAC,QAAQ,EAAG,OAAO,CAAU;IACrC,QAAQ,CAAC,IAAI,WAA8D;IAC3E,QAAQ,CAAC,QAAQ,EAAG,aAAa,CAAU;IAC3C,QAAQ,CAAC,mBAAmB,QAAQ;IAEpC,OAAO,CAAC,MAAM,CAQZ;IAGF,OAAO,CAAC,QAAQ,CAAC,cAAc,CAoC7B;IAGF,OAAO,CAAC,QAAQ,CAAC,cAAc,CAK7B;IAGF,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA6B;IAE3D,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,yBAAyB,CAAC,GAAG,IAAI;IAO5D,OAAO,CAAC,mBAAmB;IAIrB,KAAK,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAyBhD,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IA0B5E,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAKrC;YAEY,yBAAyB;IAuCvC;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IAclC;;;;OAIG;IACH,OAAO,CAAC,8BAA8B;YAWxB,gBAAgB;IAmC9B,OAAO,CAAC,cAAc;IAkEtB,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,eAAe;IAcvB,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,kBAAkB;YAkBZ,mBAAmB;YAgDnB,gBAAgB;YAmChB,cAAc;IAyC5B,OAAO,CAAC,gBAAgB,CAAK;IAE7B,OAAO,CAAC,eAAe;IAsCvB,OAAO,CAAC,kBAAkB;CAK3B"}
|
|
@@ -117,13 +117,32 @@ export class AiHallucinatedImportsRule {
|
|
|
117
117
|
const violations = await this.checkFileImports(relativePath, content, context.config.root);
|
|
118
118
|
return { violations };
|
|
119
119
|
}
|
|
120
|
+
// Extension substitution map for moduleResolution: NodeNext/Node16
|
|
121
|
+
// In these modes, .js imports resolve to .ts files at compile-time
|
|
122
|
+
extensionSubstitutions = {
|
|
123
|
+
'.js': ['.ts', '.tsx'],
|
|
124
|
+
'.jsx': ['.tsx', '.ts'],
|
|
125
|
+
'.mjs': ['.mts'],
|
|
126
|
+
'.cjs': ['.cts'],
|
|
127
|
+
};
|
|
120
128
|
async loadPathAliasesFromConfig(rootDir) {
|
|
121
|
-
// Try to read tsconfig.json for path aliases
|
|
129
|
+
// Try to read tsconfig.json for path aliases and moduleResolution
|
|
122
130
|
const tsconfigPath = path.join(rootDir, 'tsconfig.json');
|
|
123
131
|
try {
|
|
124
132
|
if (fs.existsSync(tsconfigPath)) {
|
|
125
133
|
const tsconfigContent = fs.readFileSync(tsconfigPath, 'utf-8');
|
|
126
134
|
const tsconfig = JSON.parse(tsconfigContent);
|
|
135
|
+
// Detect moduleResolution setting
|
|
136
|
+
if (tsconfig.compilerOptions?.moduleResolution) {
|
|
137
|
+
this.config.moduleResolution = tsconfig.compilerOptions.moduleResolution.toLowerCase();
|
|
138
|
+
}
|
|
139
|
+
// Also detect module field which implies resolution strategy
|
|
140
|
+
if (!this.config.moduleResolution && tsconfig.compilerOptions?.module) {
|
|
141
|
+
const mod = tsconfig.compilerOptions.module.toLowerCase();
|
|
142
|
+
if (['nodenext', 'node16'].includes(mod)) {
|
|
143
|
+
this.config.moduleResolution = mod;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
127
146
|
if (tsconfig.compilerOptions?.paths) {
|
|
128
147
|
const baseUrl = tsconfig.compilerOptions.baseUrl || '.';
|
|
129
148
|
for (const [alias, targets] of Object.entries(tsconfig.compilerOptions.paths)) {
|
|
@@ -141,6 +160,38 @@ export class AiHallucinatedImportsRule {
|
|
|
141
160
|
// Ignore tsconfig parsing errors
|
|
142
161
|
}
|
|
143
162
|
}
|
|
163
|
+
/**
|
|
164
|
+
* Check if a .js/.jsx/.mjs/.cjs extension import resolves to a .ts/.tsx/.mts/.cts
|
|
165
|
+
* file on disk. This is the standard behavior with moduleResolution: NodeNext/Node16.
|
|
166
|
+
*/
|
|
167
|
+
checkExtensionSubstitution(resolvedPath) {
|
|
168
|
+
const ext = path.extname(resolvedPath);
|
|
169
|
+
const substitutions = this.extensionSubstitutions[ext];
|
|
170
|
+
if (!substitutions)
|
|
171
|
+
return false;
|
|
172
|
+
const basePath = resolvedPath.slice(0, -ext.length);
|
|
173
|
+
for (const sub of substitutions) {
|
|
174
|
+
if (fs.existsSync(basePath + sub)) {
|
|
175
|
+
return true;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
return false;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Determines if we should try .js → .ts extension substitution.
|
|
182
|
+
* Always enabled when moduleResolution is nodenext/node16,
|
|
183
|
+
* but also applied as a fallback for any TS project to reduce false positives.
|
|
184
|
+
*/
|
|
185
|
+
shouldTryExtensionSubstitution() {
|
|
186
|
+
const mr = this.config.moduleResolution;
|
|
187
|
+
if (mr && ['nodenext', 'node16', 'bundler'].includes(mr)) {
|
|
188
|
+
return true;
|
|
189
|
+
}
|
|
190
|
+
// Fallback: always try substitution since it's a very common pattern
|
|
191
|
+
// and never produces false negatives (a real .js file would have been
|
|
192
|
+
// found already by the exact-match check)
|
|
193
|
+
return true;
|
|
194
|
+
}
|
|
144
195
|
async checkFileImports(filePath, content, rootDir) {
|
|
145
196
|
const violations = [];
|
|
146
197
|
const imports = this.extractImports(content, filePath);
|
|
@@ -294,6 +345,26 @@ export class AiHallucinatedImportsRule {
|
|
|
294
345
|
}
|
|
295
346
|
}
|
|
296
347
|
}
|
|
348
|
+
// NodeNext/Node16 extension substitution: .js imports resolve to .ts at compile-time
|
|
349
|
+
// e.g., import { foo } from './bar.js' resolves to ./bar.ts
|
|
350
|
+
if (this.shouldTryExtensionSubstitution()) {
|
|
351
|
+
if (this.checkExtensionSubstitution(resolvedPath)) {
|
|
352
|
+
return true;
|
|
353
|
+
}
|
|
354
|
+
// Also try index files with substitution: ./dir/index.js → ./dir/index.ts
|
|
355
|
+
const importExt = path.extname(importPath);
|
|
356
|
+
if (!importExt) {
|
|
357
|
+
// No extension — already handled above. But if an explicit .js extension
|
|
358
|
+
// points to a directory, try index substitution
|
|
359
|
+
for (const [jsExt, tsExts] of Object.entries(this.extensionSubstitutions)) {
|
|
360
|
+
for (const tsExt of tsExts) {
|
|
361
|
+
if (fs.existsSync(path.join(resolvedPath, `index${tsExt}`))) {
|
|
362
|
+
return true;
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
}
|
|
297
368
|
return false;
|
|
298
369
|
}
|
|
299
370
|
async checkAliasImport(importPath, rootDir) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-hallucinated-imports.rule.js","sourceRoot":"","sources":["../../../../src/core/rules/builtin/ai-hallucinated-imports.rule.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ai-hallucinated-imports.rule.js","sourceRoot":"","sources":["../../../../src/core/rules/builtin/ai-hallucinated-imports.rule.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Async Discrepancies Rule
|
|
3
|
+
*
|
|
4
|
+
* Detects async/await misuse patterns commonly introduced by AI coding assistants.
|
|
5
|
+
* These discrepancies arise when AI agents lose context about whether a function
|
|
6
|
+
* is synchronous or asynchronous, leading to subtle runtime bugs.
|
|
7
|
+
*
|
|
8
|
+
* Detections:
|
|
9
|
+
* 1. Missing `await` on async function calls
|
|
10
|
+
* 2. `async` functions that never use `await` (unnecessary async)
|
|
11
|
+
* 3. Async/sync signature drift between declaration and usage
|
|
12
|
+
* 4. Floating promises (async calls without await or .then/.catch)
|
|
13
|
+
* 5. `await` on non-async/non-promise expressions
|
|
14
|
+
* 6. Mixed async patterns (mixing callbacks with async/await)
|
|
15
|
+
*/
|
|
16
|
+
import { IRule, RuleContext, RuleConfig, RuleResult, RuleCategory, RuleDocumentation } from '../rule.interface.js';
|
|
17
|
+
interface AsyncDiscrepanciesConfig extends RuleConfig {
|
|
18
|
+
/** Check for missing await on async calls */
|
|
19
|
+
checkMissingAwait?: boolean;
|
|
20
|
+
/** Check for unnecessary async keywords */
|
|
21
|
+
checkUnnecessaryAsync?: boolean;
|
|
22
|
+
/** Check for floating promises (unawaited async calls) */
|
|
23
|
+
checkFloatingPromises?: boolean;
|
|
24
|
+
/** Check for await on non-promise values */
|
|
25
|
+
checkAwaitNonPromise?: boolean;
|
|
26
|
+
/** Check for mixed async patterns (callbacks + async/await) */
|
|
27
|
+
checkMixedPatterns?: boolean;
|
|
28
|
+
/** File extensions to analyze */
|
|
29
|
+
includeExtensions?: string[];
|
|
30
|
+
/** Ignore patterns for function names */
|
|
31
|
+
ignorePatterns?: string[];
|
|
32
|
+
}
|
|
33
|
+
export declare class AsyncDiscrepanciesRule implements IRule {
|
|
34
|
+
readonly id = "async-discrepancies";
|
|
35
|
+
readonly name = "Async Discrepancies Detection";
|
|
36
|
+
readonly description = "Detects async/await misuse patterns commonly introduced by AI coding assistants";
|
|
37
|
+
readonly severity: "warning";
|
|
38
|
+
readonly tags: string[];
|
|
39
|
+
readonly category: RuleCategory;
|
|
40
|
+
readonly supportsIncremental = true;
|
|
41
|
+
readonly defaultSeverity: "warning";
|
|
42
|
+
private config;
|
|
43
|
+
private violationCounter;
|
|
44
|
+
/** Known async functions discovered across the project */
|
|
45
|
+
private knownAsyncFunctions;
|
|
46
|
+
configure(options: Partial<AsyncDiscrepanciesConfig>): void;
|
|
47
|
+
check(context: RuleContext): Promise<RuleResult>;
|
|
48
|
+
checkFile(filePath: string, context: RuleContext): Promise<RuleResult>;
|
|
49
|
+
getDocumentation(): RuleDocumentation;
|
|
50
|
+
private collectAsyncFunctions;
|
|
51
|
+
private buildAsyncFunctionInfo;
|
|
52
|
+
private checkUnnecessaryAsyncFunctions;
|
|
53
|
+
private checkFloatingPromisesAndMissingAwait;
|
|
54
|
+
private checkAwaitOnNonPromise;
|
|
55
|
+
private checkMixedAsyncPatterns;
|
|
56
|
+
private reportMixedPatterns;
|
|
57
|
+
private shouldAnalyzeFile;
|
|
58
|
+
private shouldIgnoreFunction;
|
|
59
|
+
private escapeRegex;
|
|
60
|
+
private createViolation;
|
|
61
|
+
}
|
|
62
|
+
export {};
|
|
63
|
+
//# sourceMappingURL=async-discrepancies.rule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"async-discrepancies.rule.d.ts","sourceRoot":"","sources":["../../../../src/core/rules/builtin/async-discrepancies.rule.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAGnH,UAAU,wBAAyB,SAAQ,UAAU;IACnD,6CAA6C;IAC7C,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,2CAA2C;IAC3C,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,0DAA0D;IAC1D,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,4CAA4C;IAC5C,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,+DAA+D;IAC/D,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,iCAAiC;IACjC,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,yCAAyC;IACzC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAuBD,qBAAa,sBAAuB,YAAW,KAAK;IAClD,QAAQ,CAAC,EAAE,yBAAyB;IACpC,QAAQ,CAAC,IAAI,mCAAmC;IAChD,QAAQ,CAAC,WAAW,qFAAqF;IACzG,QAAQ,CAAC,QAAQ,EAAG,SAAS,CAAU;IACvC,QAAQ,CAAC,IAAI,WAAqD;IAClE,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAiB;IAChD,QAAQ,CAAC,mBAAmB,QAAQ;IACpC,QAAQ,CAAC,eAAe,EAAG,SAAS,CAAU;IAE9C,OAAO,CAAC,MAAM,CAiBZ;IAEF,OAAO,CAAC,gBAAgB,CAAK;IAE7B,0DAA0D;IAC1D,OAAO,CAAC,mBAAmB,CAAwC;IAEnE,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,wBAAwB,CAAC,GAAG,IAAI;IAIrD,KAAK,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IA4ChD,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAK5E,gBAAgB,IAAI,iBAAiB;IAuErC,OAAO,CAAC,qBAAqB;IAuC7B,OAAO,CAAC,sBAAsB;IA4D9B,OAAO,CAAC,8BAA8B;IAwBtC,OAAO,CAAC,oCAAoC;IA0G5C,OAAO,CAAC,sBAAsB;IA2C9B,OAAO,CAAC,uBAAuB;IAiE/B,OAAO,CAAC,mBAAmB;IAiC3B,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,oBAAoB;IAK5B,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,eAAe;CAkBxB"}
|