code-auditor-mcp 3.6.0 → 3.7.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.
Files changed (72) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/CHANGELOG.md +31 -0
  3. package/dist/analyzers/cross-language/DependencyGraphBuilder.d.ts.map +1 -1
  4. package/dist/analyzers/cross-language/DependencyGraphBuilder.js +12 -1
  5. package/dist/analyzers/cross-language/DependencyGraphBuilder.js.map +1 -1
  6. package/dist/analyzers/ruleRegistry.d.ts.map +1 -1
  7. package/dist/analyzers/ruleRegistry.js +133 -2
  8. package/dist/analyzers/ruleRegistry.js.map +1 -1
  9. package/dist/analyzers/universal/UniversalDRYAnalyzer.d.ts +29 -0
  10. package/dist/analyzers/universal/UniversalDRYAnalyzer.d.ts.map +1 -1
  11. package/dist/analyzers/universal/UniversalDRYAnalyzer.js +376 -6
  12. package/dist/analyzers/universal/UniversalDRYAnalyzer.js.map +1 -1
  13. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.d.ts +6 -0
  14. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.d.ts.map +1 -1
  15. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js +41 -7
  16. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js.map +1 -1
  17. package/dist/analyzers/universal/UniversalDocumentationAnalyzer.d.ts.map +1 -1
  18. package/dist/analyzers/universal/UniversalDocumentationAnalyzer.js +13 -2
  19. package/dist/analyzers/universal/UniversalDocumentationAnalyzer.js.map +1 -1
  20. package/dist/analyzers/universal/UniversalSOLIDAnalyzer.d.ts +20 -5
  21. package/dist/analyzers/universal/UniversalSOLIDAnalyzer.d.ts.map +1 -1
  22. package/dist/analyzers/universal/UniversalSOLIDAnalyzer.js +83 -14
  23. package/dist/analyzers/universal/UniversalSOLIDAnalyzer.js.map +1 -1
  24. package/dist/analyzers/universal/UniversalSecretsAnalyzer.d.ts +55 -0
  25. package/dist/analyzers/universal/UniversalSecretsAnalyzer.d.ts.map +1 -0
  26. package/dist/analyzers/universal/UniversalSecretsAnalyzer.js +318 -0
  27. package/dist/analyzers/universal/UniversalSecretsAnalyzer.js.map +1 -0
  28. package/dist/analyzers/universal/functionConcerns.d.ts +52 -0
  29. package/dist/analyzers/universal/functionConcerns.d.ts.map +1 -0
  30. package/dist/analyzers/universal/functionConcerns.js +225 -0
  31. package/dist/analyzers/universal/functionConcerns.js.map +1 -0
  32. package/dist/analyzers/universal/schema/codeAnalysis.d.ts.map +1 -1
  33. package/dist/analyzers/universal/schema/codeAnalysis.js +9 -3
  34. package/dist/analyzers/universal/schema/codeAnalysis.js.map +1 -1
  35. package/dist/auditRunner.d.ts.map +1 -1
  36. package/dist/auditRunner.js +73 -47
  37. package/dist/auditRunner.js.map +1 -1
  38. package/dist/cli.js +41 -27
  39. package/dist/cli.js.map +1 -1
  40. package/dist/config/defaults.d.ts +3 -0
  41. package/dist/config/defaults.d.ts.map +1 -1
  42. package/dist/config/defaults.js +15 -2
  43. package/dist/config/defaults.js.map +1 -1
  44. package/dist/config/effectiveConfig.d.ts.map +1 -1
  45. package/dist/config/effectiveConfig.js +2 -0
  46. package/dist/config/effectiveConfig.js.map +1 -1
  47. package/dist/graph/importGraph.d.ts +11 -0
  48. package/dist/graph/importGraph.d.ts.map +1 -1
  49. package/dist/graph/importGraph.js +11 -3
  50. package/dist/graph/importGraph.js.map +1 -1
  51. package/dist/installer.d.ts.map +1 -1
  52. package/dist/installer.js +2 -5
  53. package/dist/installer.js.map +1 -1
  54. package/dist/mcp.js +1 -1
  55. package/dist/mcp.js.map +1 -1
  56. package/dist/pipelineAdapters.d.ts +1 -0
  57. package/dist/pipelineAdapters.d.ts.map +1 -1
  58. package/dist/pipelineAdapters.js +227 -4
  59. package/dist/pipelineAdapters.js.map +1 -1
  60. package/dist/styles/tailwindProbe.d.ts +8 -0
  61. package/dist/styles/tailwindProbe.d.ts.map +1 -1
  62. package/dist/styles/tailwindProbe.js +11 -1
  63. package/dist/styles/tailwindProbe.js.map +1 -1
  64. package/dist/types/crossLanguage.d.ts +1 -0
  65. package/dist/types/crossLanguage.d.ts.map +1 -1
  66. package/dist/types.d.ts +7 -0
  67. package/dist/types.d.ts.map +1 -1
  68. package/dist/types.js.map +1 -1
  69. package/package.json +3 -2
  70. package/plugin/.claude-plugin/plugin.json +1 -1
  71. package/plugin/skills/code-auditor/SKILL-RULE-KINDS.md +4 -2
  72. package/plugin/skills/code-auditor/SKILL.md +19 -11
@@ -1 +1 @@
1
- {"version":3,"file":"UniversalSOLIDAnalyzer.js","sourceRoot":"","sources":["../../../src/analyzers/universal/UniversalSOLIDAnalyzer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"UniversalSOLIDAnalyzer.js","sourceRoot":"","sources":["../../../src/analyzers/universal/UniversalSOLIDAnalyzer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Universal Secrets Analyzer
3
+ * Detects hardcoded credentials, API keys, and tokens in source.
4
+ *
5
+ * The reference case is a Playwright/Puppeteer automation script typing a real
6
+ * password into a login form:
7
+ *
8
+ * page.type('#password', 'vyy8AUVvish34Fq')
9
+ *
10
+ * A secret is a string literal that (a) sits in a credential position — a
11
+ * variable/field/object-key named like a secret, or a call argument whose
12
+ * sibling argument is a credential selector (`#password`) — and (b) looks like
13
+ * a real value rather than a placeholder (`'password'`, `'your-api-key'`,
14
+ * `'changeme'`).
15
+ *
16
+ * Near-miss classes that must stay silent (critical severity gates — a false
17
+ * positive blocks the edit loop, so precision is the design constraint):
18
+ * - test fixtures / mocks (`.test.*`, `.spec.*`, `__tests__`, `fixtures`) —
19
+ * excluded by file path, before any literal is read;
20
+ * - placeholder values (`'changeme'`, `'your-api-key'`, `'<token>'`) —
21
+ * rejected by the value heuristic;
22
+ * - env var references (`process.env.PASSWORD`, `import.meta.env.VITE_KEY`) —
23
+ * these are `member_expression`/`identifier` nodes, never `string` literals,
24
+ * so they are never candidates.
25
+ */
26
+ import { UniversalAnalyzer } from '../../languages/UniversalAnalyzer.js';
27
+ import type { Violation } from '../../types.js';
28
+ import type { AST, LanguageAdapter } from '../../languages/types.js';
29
+ /**
30
+ * Configuration for the Secrets analyzer.
31
+ */
32
+ export interface SecretsAnalyzerConfig {
33
+ /** Toggle the hardcoded-secret check. Default true (default-on). */
34
+ checkHardcodedSecrets?: boolean;
35
+ }
36
+ export declare const DEFAULT_SECRETS_CONFIG: SecretsAnalyzerConfig;
37
+ /**
38
+ * Flags hardcoded credentials, API keys, and tokens. Critical severity — a false
39
+ * positive blocks the edit loop, so detection is precision-first (see the file
40
+ * header for the near-miss classes that must stay silent).
41
+ */
42
+ export declare class UniversalSecretsAnalyzer extends UniversalAnalyzer {
43
+ readonly name = "secrets";
44
+ readonly description = "Detects hardcoded credentials, API keys, and tokens";
45
+ readonly category = "security";
46
+ protected analyzeAST(ast: AST, adapter: LanguageAdapter, config: SecretsAnalyzerConfig, sourceCode: string): Promise<Violation[]>;
47
+ /**
48
+ * Inspect one AST node for hardcoded credentials in a credential position;
49
+ * returns the violations to report (possibly empty).
50
+ */
51
+ private inspectNode;
52
+ private checkCredentialCall;
53
+ private makeViolation;
54
+ }
55
+ //# sourceMappingURL=UniversalSecretsAnalyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UniversalSecretsAnalyzer.d.ts","sourceRoot":"","sources":["../../../src/analyzers/universal/UniversalSecretsAnalyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAGzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,GAAG,EAAE,eAAe,EAAW,MAAM,0BAA0B,CAAC;AAE9E;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,oEAAoE;IACpE,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,eAAO,MAAM,sBAAsB,EAAE,qBAEpC,CAAC;AAoMF;;;;GAIG;AACH,qBAAa,wBAAyB,SAAQ,iBAAiB;IAC7D,QAAQ,CAAC,IAAI,aAAa;IAC1B,QAAQ,CAAC,WAAW,yDAAyD;IAC7E,QAAQ,CAAC,QAAQ,cAAc;IAE/B,UAAgB,UAAU,CACxB,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,qBAAqB,EAC7B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,SAAS,EAAE,CAAC,CAatB;IAED;;;OAGG;IACH,OAAO,CAAC,WAAW;IA4CnB,OAAO,CAAC,mBAAmB;IAyB3B,OAAO,CAAC,aAAa;CAsBtB"}
@@ -0,0 +1,318 @@
1
+ /**
2
+ * Universal Secrets Analyzer
3
+ * Detects hardcoded credentials, API keys, and tokens in source.
4
+ *
5
+ * The reference case is a Playwright/Puppeteer automation script typing a real
6
+ * password into a login form:
7
+ *
8
+ * page.type('#password', 'vyy8AUVvish34Fq')
9
+ *
10
+ * A secret is a string literal that (a) sits in a credential position — a
11
+ * variable/field/object-key named like a secret, or a call argument whose
12
+ * sibling argument is a credential selector (`#password`) — and (b) looks like
13
+ * a real value rather than a placeholder (`'password'`, `'your-api-key'`,
14
+ * `'changeme'`).
15
+ *
16
+ * Near-miss classes that must stay silent (critical severity gates — a false
17
+ * positive blocks the edit loop, so precision is the design constraint):
18
+ * - test fixtures / mocks (`.test.*`, `.spec.*`, `__tests__`, `fixtures`) —
19
+ * excluded by file path, before any literal is read;
20
+ * - placeholder values (`'changeme'`, `'your-api-key'`, `'<token>'`) —
21
+ * rejected by the value heuristic;
22
+ * - env var references (`process.env.PASSWORD`, `import.meta.env.VITE_KEY`) —
23
+ * these are `member_expression`/`identifier` nodes, never `string` literals,
24
+ * so they are never candidates.
25
+ */
26
+ import { UniversalAnalyzer } from '../../languages/UniversalAnalyzer.js';
27
+ import { withRuleTiming } from '../ruleTiming.js';
28
+ import { walkAST } from '../../languages/adapterBridge.js';
29
+ export const DEFAULT_SECRETS_CONFIG = {
30
+ checkHardcodedSecrets: true,
31
+ };
32
+ /**
33
+ * Secret-ish names, normalized (lowercased, non-alphanumerics stripped) so
34
+ * `apiKey`, `api_key`, `API_KEY`, and `x-api-key` all collapse to one form.
35
+ * Matched against variable names, object keys, field names, and the core of
36
+ * credential selectors (`#password` → `password`).
37
+ */
38
+ const SECRET_NAMES = new Set([
39
+ 'password', 'passwd', 'pwd', 'passphrase',
40
+ 'secret', 'clientsecret',
41
+ 'apikey',
42
+ 'accesskey', 'accesstoken',
43
+ 'authtoken',
44
+ 'token',
45
+ 'privatekey',
46
+ 'credential', 'credentials',
47
+ 'awssecret', 'awskey',
48
+ 'sessionkey', 'signingkey',
49
+ 'authorization',
50
+ 'xapikey', 'xauthtoken',
51
+ ]);
52
+ function normalizeName(name) {
53
+ return name.toLowerCase().replace(/[^a-z0-9]/g, '');
54
+ }
55
+ function isSecretName(name) {
56
+ const norm = normalizeName(name);
57
+ return norm.length > 0 && SECRET_NAMES.has(norm);
58
+ }
59
+ /**
60
+ * Extract the raw text of a `string` literal, preferring the `string_fragment`
61
+ * child (the content without quotes/delimiters) and falling back to stripping
62
+ * surrounding quotes from the node text.
63
+ */
64
+ function stringValue(node, adapter, sourceCode) {
65
+ const frag = node.children?.find((c) => c.type === 'string_fragment');
66
+ if (frag)
67
+ return adapter.getNodeText(frag, sourceCode);
68
+ let text = adapter.getNodeText(node, sourceCode).trim();
69
+ if ((text.startsWith("'") && text.endsWith("'")) ||
70
+ (text.startsWith('"') && text.endsWith('"')) ||
71
+ (text.startsWith('`') && text.endsWith('`'))) {
72
+ text = text.slice(1, -1);
73
+ }
74
+ return text;
75
+ }
76
+ /** Find a direct `string` child (the literal value), not a nested one. */
77
+ function directStringChild(node, adapter, sourceCode) {
78
+ for (const c of node.children ?? []) {
79
+ if (c.type === 'string')
80
+ return stringValue(c, adapter, sourceCode);
81
+ }
82
+ return null;
83
+ }
84
+ /** A symbol that is not a common word separator (`-`, `_`, `.`, space). */
85
+ const HARD_SYMBOL = /[^A-Za-z0-9\-_.\s]/;
86
+ /**
87
+ * A known token prefix (`Bearer …`, `sk-…`, `ghp_…`, `AKIA…`, `xoxb-…`, JWT
88
+ * `eyJ…`) marks a value as a secret on its own, even when it is short.
89
+ */
90
+ function hasKnownTokenPrefix(value) {
91
+ const t = value.trim();
92
+ return (/^Bearer\s/i.test(t) ||
93
+ /^sk-[A-Za-z0-9]{20,}/.test(t) || // OpenAI
94
+ /^(ghp|gho|ghu|ghs|github_pat)_[A-Za-z0-9]{20,}/.test(t) || // GitHub
95
+ /^(sk|rk|pk)_(live|test)_[A-Za-z0-9]{10,}/.test(t) || // Stripe
96
+ /^AKIA[0-9A-Z]{16}$/.test(t) || // AWS access key
97
+ /^xox[baprs]-/.test(t) || // Slack
98
+ /^eyJ[A-Za-z0-9_-]{10,}\./.test(t) // JWT
99
+ );
100
+ }
101
+ const PLACEHOLDERS = new Set([
102
+ 'password', 'passwd', 'pwd', 'changeme', 'changethis', 'secret', 'yoursecret',
103
+ 'yourapikey', 'yourtoken', 'yourapitoken', 'apikey', 'token', 'example',
104
+ 'dummy', 'placeholder', 'replaceme', 'todo', 'fixme', 'xxx', 'xxxx', 'xxxxx',
105
+ 'test', 'testpassword', 'testsecret', 'testtoken', '123456', '12345678',
106
+ '123456789', 'password123', 'qwerty', 'letmein', 'abc123', 'foobar',
107
+ 'helloworld', 'notareal', 'notreal', 'sample', 'samplekey', 'sampletoken',
108
+ 'insecure', 'insecurepassword', 'notasecret',
109
+ ]);
110
+ /** Reject placeholder/example values: templates, redactions, and common words. */
111
+ function isPlaceholder(value) {
112
+ const t = value.trim();
113
+ if (t.length === 0)
114
+ return true;
115
+ if (/^<[^>]+>$/.test(t))
116
+ return true; // <your-token>
117
+ if (/^[.…]{3,}$/.test(t))
118
+ return true; // ...
119
+ if (/^[*xX]{3,}$/.test(t))
120
+ return true; // *** or xxx
121
+ if (/^redacted$/i.test(t))
122
+ return true;
123
+ const norm = normalizeName(t);
124
+ if (PLACEHOLDERS.has(norm))
125
+ return true;
126
+ if (/^(your|test|example|sample|dummy|placeholder|replaceme|changeme)/.test(norm))
127
+ return true;
128
+ return false;
129
+ }
130
+ /**
131
+ * Does this literal look like a real credential value rather than a placeholder?
132
+ *
133
+ * Precision-first: the value must either carry a known token prefix or be long
134
+ * enough (≥8 chars) and show character variety (a digit, an uppercase letter,
135
+ * or a non-separator symbol). Pure-lowercase words (`changeme`) and hyphenated
136
+ * phrases (`your-api-key`) fail this; high-entropy values (`vyy8AUVvish34Fq`)
137
+ * pass. Emails and URLs are explicitly not secrets.
138
+ */
139
+ function looksLikeRealSecret(value) {
140
+ const t = value.trim();
141
+ if (isPlaceholder(t))
142
+ return false;
143
+ if (hasKnownTokenPrefix(t))
144
+ return true;
145
+ if (t.length < 8)
146
+ return false;
147
+ if (/^[^@\s]+@[^@\s]+\.[^@\s]+$/.test(t))
148
+ return false; // email
149
+ if (/^https?:\/\//i.test(t))
150
+ return false; // URL
151
+ const hasDigit = /\d/.test(t);
152
+ const hasUpper = /[A-Z]/.test(t);
153
+ const hasHardSymbol = HARD_SYMBOL.test(t);
154
+ return hasDigit || hasUpper || hasHardSymbol;
155
+ }
156
+ /**
157
+ * Is this path a test/fixture file? Excluded up front — a hardcoded credential
158
+ * in a test fixture or mock is expected and must not block the edit loop.
159
+ */
160
+ function isTestOrFixtureFile(filePath) {
161
+ const lower = filePath.toLowerCase();
162
+ return (lower.includes('.test.') || lower.includes('.spec.') ||
163
+ lower.includes('__tests__') ||
164
+ lower.includes('/test/') || lower.includes('/tests/') ||
165
+ lower.includes('/fixtures/') || lower.includes('.fixture.') ||
166
+ lower.endsWith('_test.go'));
167
+ }
168
+ /** Extract the variable name from a `variable_declarator`. */
169
+ function declaratorName(node, adapter, sourceCode) {
170
+ const name = node.children?.find((c) => c.type === 'identifier');
171
+ return name ? adapter.getNodeText(name, sourceCode) : null;
172
+ }
173
+ /** Extract the assigned field name from an `assignment_expression` left side. */
174
+ function assignmentKey(node, adapter, sourceCode) {
175
+ const left = node.children?.find((c) => c.type === 'member_expression' || c.type === 'subscript_expression' || c.type === 'identifier');
176
+ if (!left)
177
+ return null;
178
+ if (left.type === 'member_expression') {
179
+ const prop = left.children?.find((c) => c.type === 'property_identifier');
180
+ return prop ? adapter.getNodeText(prop, sourceCode) : null;
181
+ }
182
+ if (left.type === 'subscript_expression') {
183
+ const key = left.children?.find((c) => c.type === 'string');
184
+ return key ? stringValue(key, adapter, sourceCode) : null;
185
+ }
186
+ return adapter.getNodeText(left, sourceCode);
187
+ }
188
+ /** Extract `{ key, value }` from an object `pair` node. */
189
+ function pairKeyAndValue(node, adapter, sourceCode) {
190
+ const strings = (node.children ?? []).filter((c) => c.type === 'string');
191
+ if (strings.length === 0)
192
+ return null;
193
+ const keyNode = node.children?.find((c) => c.type === 'property_identifier') ?? strings[0];
194
+ const valueNode = strings[strings.length - 1];
195
+ if (valueNode === keyNode && strings.length < 2)
196
+ return null;
197
+ const key = keyNode.type === 'property_identifier'
198
+ ? adapter.getNodeText(keyNode, sourceCode)
199
+ : stringValue(keyNode, adapter, sourceCode);
200
+ const value = stringValue(valueNode, adapter, sourceCode);
201
+ return { key, value };
202
+ }
203
+ /**
204
+ * Is this string a credential *field selector* (`#password`, `.api_key`,
205
+ * `input[name=token]`)? Extracts the field-name core and checks it against the
206
+ * secret-name set.
207
+ */
208
+ function isCredentialSelector(text) {
209
+ let core = text.trim().replace(/^['"]|['"]$/g, '');
210
+ core = core.replace(/^[.#]/, '').trim();
211
+ const bracket = core.match(/\[([^\[\]]+)\]$/);
212
+ if (bracket)
213
+ core = bracket[1];
214
+ core = core.replace(/^name\s*=\s*["']?|["']?$/gi, '');
215
+ core = core.replace(/["']/g, '').trim();
216
+ return isSecretName(core);
217
+ }
218
+ /**
219
+ * Flags hardcoded credentials, API keys, and tokens. Critical severity — a false
220
+ * positive blocks the edit loop, so detection is precision-first (see the file
221
+ * header for the near-miss classes that must stay silent).
222
+ */
223
+ export class UniversalSecretsAnalyzer extends UniversalAnalyzer {
224
+ name = 'secrets';
225
+ description = 'Detects hardcoded credentials, API keys, and tokens';
226
+ category = 'security';
227
+ async analyzeAST(ast, adapter, config, sourceCode) {
228
+ const violations = [];
229
+ const finalConfig = { ...DEFAULT_SECRETS_CONFIG, ...config };
230
+ if (finalConfig.checkHardcodedSecrets === false)
231
+ return violations;
232
+ if (isTestOrFixtureFile(ast.filePath))
233
+ return violations;
234
+ withRuleTiming('hardcoded-secret', () => {
235
+ walkAST(ast.root, (node) => {
236
+ violations.push(...this.inspectNode(node, adapter, sourceCode, ast.filePath));
237
+ });
238
+ });
239
+ return violations;
240
+ }
241
+ /**
242
+ * Inspect one AST node for hardcoded credentials in a credential position;
243
+ * returns the violations to report (possibly empty).
244
+ */
245
+ inspectNode(node, adapter, sourceCode, filePath) {
246
+ // 1. `const <name> = '<value>'`
247
+ if (node.type === 'variable_declarator') {
248
+ const name = declaratorName(node, adapter, sourceCode);
249
+ const value = directStringChild(node, adapter, sourceCode);
250
+ if (name && value !== null && isSecretName(name) && looksLikeRealSecret(value)) {
251
+ return [this.makeViolation(filePath, node, name, value)];
252
+ }
253
+ return [];
254
+ }
255
+ // 2. `<obj>.<field> = '<value>'` / `<field> = '<value>'`
256
+ if (node.type === 'assignment_expression') {
257
+ const key = assignmentKey(node, adapter, sourceCode);
258
+ const value = directStringChild(node, adapter, sourceCode);
259
+ if (key && value !== null && isSecretName(key) && looksLikeRealSecret(value)) {
260
+ return [this.makeViolation(filePath, node, key, value)];
261
+ }
262
+ return [];
263
+ }
264
+ // 3. `{ <key>: '<value>' }`
265
+ if (node.type === 'pair') {
266
+ const pv = pairKeyAndValue(node, adapter, sourceCode);
267
+ if (pv && isSecretName(pv.key) && looksLikeRealSecret(pv.value)) {
268
+ return [this.makeViolation(filePath, node, pv.key, pv.value)];
269
+ }
270
+ return [];
271
+ }
272
+ // 4. `fn('<selector>', '<secret>')` — a credential selector string plus a
273
+ // sibling secret-value string (the page.type reference case).
274
+ if (node.type === 'call_expression') {
275
+ return this.checkCredentialCall(node, adapter, sourceCode, filePath);
276
+ }
277
+ return [];
278
+ }
279
+ checkCredentialCall(node, adapter, sourceCode, filePath) {
280
+ const argsNode = node.children?.find((c) => c.type === 'arguments');
281
+ if (!argsNode)
282
+ return [];
283
+ const stringArgs = (argsNode.children ?? []).filter((c) => c.type === 'string');
284
+ if (stringArgs.length < 2)
285
+ return [];
286
+ const hasSelector = stringArgs.some((a) => isCredentialSelector(stringValue(a, adapter, sourceCode)));
287
+ if (!hasSelector)
288
+ return [];
289
+ const found = [];
290
+ for (const a of stringArgs) {
291
+ const value = stringValue(a, adapter, sourceCode);
292
+ if (isCredentialSelector(value))
293
+ continue; // the selector is not the secret
294
+ if (looksLikeRealSecret(value)) {
295
+ found.push(this.makeViolation(filePath, node, undefined, value));
296
+ }
297
+ }
298
+ return found;
299
+ }
300
+ makeViolation(file, node, name, value) {
301
+ const label = name ? ` "${name}"` : '';
302
+ const reference = name
303
+ ? `process.env.${normalizeName(name).toUpperCase()}`
304
+ : 'process.env.SECRET';
305
+ return this.createViolation(file, node.location.start, `Hardcoded secret${label} detected: a ${value.length}-character credential is embedded in source. Move it to an environment variable or secret store.`, {
306
+ severity: 'critical',
307
+ rule: 'hardcoded-secret',
308
+ resolution: {
309
+ action: 'remove-hardcoded-secret',
310
+ summary: `Replace the hardcoded${label} credential with a reference to an environment variable or secret store (e.g. ${reference}).`,
311
+ symbols: name ? [name] : undefined,
312
+ files: [file],
313
+ lines: [node.location.start.line],
314
+ },
315
+ });
316
+ }
317
+ }
318
+ //# sourceMappingURL=UniversalSecretsAnalyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UniversalSecretsAnalyzer.js","sourceRoot":"","sources":["../../../src/analyzers/universal/UniversalSecretsAnalyzer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Mixed-concern detection for `solid/single-responsibility` (#128).
3
+ *
4
+ * The single-responsibility rule historically fired only on *size* proxies
5
+ * (parameter count, line count). A function can be short and still do three
6
+ * unrelated jobs — and a long function can be a single cohesive pipeline
7
+ * (fetch → shape). This module classifies the *calls* a function makes into a
8
+ * small set of concern categories and counts how many *unrelated* categories
9
+ * the function spans. That span is the actual SRP signal the size proxies were
10
+ * standing in for.
11
+ *
12
+ * The design leans hard on precision — a false positive here blocks an agent's
13
+ * edit loop, not just adds noise:
14
+ *
15
+ * - A call is classified by its **callee name** (`sendEmail(...)` → messaging,
16
+ * `db.query(...)` → data-access), never by structural shape. Renaming a
17
+ * call site cannot mask or trigger a finding the way a shape match could.
18
+ * - Nested function bodies are skipped: a `.map(x => …)` callback is a
19
+ * separate function, and its calls belong to *it*, not to the enclosing
20
+ * function. Otherwise `rows.map(row => save(row))` would read as the outer
21
+ * function doing data-access *and* persistence.
22
+ * - `data-access` and `data-transformation` are **related** — fetch-and-shape
23
+ * is one job (a repository method). `db.query()` + `.map()` collapses to a
24
+ * single concern group and does not fire. See `countConcernGroups`.
25
+ * - Ambiguous verbs (`find`, `get`, `update`, …) are data-access only when
26
+ * the *receiver* is a data handle (`db.find`, `client.get`); on an ordinary
27
+ * array they are transformation (`rows.find`), not data access.
28
+ * - `console.*` is incidental debugging, not an observability concern, so it
29
+ * does not register (a route handler that logs does not become "mixed").
30
+ */
31
+ import type { ASTNode } from '../../languages/types.js';
32
+ /** The concern categories a function can span. */
33
+ export type FunctionConcern = 'data-access' | 'data-transformation' | 'messaging' | 'logging' | 'rendering';
34
+ /** Human-readable labels, for violation messages. */
35
+ export declare const CONCERN_LABELS: Record<FunctionConcern, string>;
36
+ /** True when the node type denotes a function/method definition or literal. */
37
+ export declare function isFunctionNodeType(type: string): boolean;
38
+ /**
39
+ * Classify every call in a function body into concern categories, skipping
40
+ * nested function bodies (their calls belong to them, not to this function).
41
+ */
42
+ export declare function detectFunctionConcerns(functionNode: ASTNode, getText: (node: ASTNode) => string): Set<FunctionConcern>;
43
+ /**
44
+ * Count the number of *unrelated* concern groups a function spans.
45
+ *
46
+ * `data-access` + `data-transformation` are one cohesive "load and shape" job
47
+ * (a repository method), so they collapse into a single group. Everything else
48
+ * is treated as unrelated. A function that fetches and shapes data spans one
49
+ * concern; a function that fetches, emails, and renders spans three.
50
+ */
51
+ export declare function countConcernGroups(concerns: Set<FunctionConcern>): number;
52
+ //# sourceMappingURL=functionConcerns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"functionConcerns.d.ts","sourceRoot":"","sources":["../../../src/analyzers/universal/functionConcerns.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAExD,kDAAkD;AAClD,MAAM,MAAM,eAAe,GACvB,aAAa,GACb,qBAAqB,GACrB,WAAW,GACX,SAAS,GACT,WAAW,CAAC;AAEhB,qDAAqD;AACrD,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAM1D,CAAC;AAkBF,+EAA+E;AAC/E,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAExD;AAsID;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,YAAY,EAAE,OAAO,EACrB,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,MAAM,GACjC,GAAG,CAAC,eAAe,CAAC,CAmBtB;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,GAAG,CAAC,eAAe,CAAC,GAAG,MAAM,CAQzE"}