@iris-code/core 0.3.0 → 0.4.1
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/dist/findings.d.ts +27 -0
- package/dist/findings.d.ts.map +1 -0
- package/dist/findings.js +121 -0
- package/dist/findings.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { FileAnalysis, SuppressedFinding } from './types';
|
|
2
|
+
/** A host-neutral finding suitable for editor, CLI, and web presentation. */
|
|
3
|
+
export interface IrisFinding {
|
|
4
|
+
path: string;
|
|
5
|
+
line: number;
|
|
6
|
+
endLine?: number;
|
|
7
|
+
rule: string;
|
|
8
|
+
group: string;
|
|
9
|
+
severity: IrisFindingSeverity;
|
|
10
|
+
message: string;
|
|
11
|
+
}
|
|
12
|
+
export type IrisFindingSeverity = 'critical' | 'high' | 'medium' | 'low';
|
|
13
|
+
export declare function findingGroupRank(group: string): number;
|
|
14
|
+
/**
|
|
15
|
+
* Flattens analysis results into the product's canonical, line-anchored
|
|
16
|
+
* findings. Hosts may adapt rendering or filtering, but not finding meaning.
|
|
17
|
+
*/
|
|
18
|
+
export declare function buildIrisFindings(path: string, analysis: FileAnalysis): IrisFinding[];
|
|
19
|
+
export interface IrisFindingGroup {
|
|
20
|
+
group: string;
|
|
21
|
+
rule: string;
|
|
22
|
+
severity: IrisFindingSeverity;
|
|
23
|
+
items: IrisFinding[];
|
|
24
|
+
}
|
|
25
|
+
export declare function groupIrisFindings(findings: IrisFinding[]): IrisFindingGroup[];
|
|
26
|
+
export declare function describeSuppression(suppression: SuppressedFinding): string;
|
|
27
|
+
//# sourceMappingURL=findings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"findings.d.ts","sourceRoot":"","sources":["../src/findings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAE9D,6EAA6E;AAC7E,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,mBAAmB,CAAA;IAC7B,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,MAAM,mBAAmB,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAA;AAuDxE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGtD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,WAAW,EAAE,CA+BrF;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,mBAAmB,CAAA;IAC7B,KAAK,EAAE,WAAW,EAAE,CAAA;CACrB;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,gBAAgB,EAAE,CAQ7E;AAED,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,iBAAiB,GAAG,MAAM,CAE1E"}
|
package/dist/findings.js
ADDED
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.findingGroupRank = findingGroupRank;
|
|
4
|
+
exports.buildIrisFindings = buildIrisFindings;
|
|
5
|
+
exports.groupIrisFindings = groupIrisFindings;
|
|
6
|
+
exports.describeSuppression = describeSuppression;
|
|
7
|
+
const SECURITY_SMELLS = [
|
|
8
|
+
{ key: 'evalUsage', rule: 'security-evalUsage', group: 'eval() / exec()', message: 'Dynamic code evaluation' },
|
|
9
|
+
{ key: 'sqlConcatenation', rule: 'security-sqlConcatenation', group: 'SQL Injection', message: 'SQL built by string concatenation' },
|
|
10
|
+
{ key: 'insecureRandom', rule: 'security-insecureRandom', group: 'Insecure RNG', message: 'Insecure random number generator' },
|
|
11
|
+
{ key: 'unsafeRegex', rule: 'security-unsafeRegex', group: 'ReDoS Regex', message: 'Regex with nested quantifiers' },
|
|
12
|
+
{ key: 'hardcodedLocalhost', rule: 'security-hardcodedLocalhost', group: 'Localhost URL', message: 'Hardcoded localhost URL in production code' },
|
|
13
|
+
{ key: 'disabledTlsVerification', rule: 'security-disabledTlsVerification', group: 'TLS Disabled', message: 'TLS certificate verification disabled' },
|
|
14
|
+
{ key: 'debugFlagsEnabled', rule: 'security-debugFlagsEnabled', group: 'Debug Flag', message: 'Debug flag enabled' },
|
|
15
|
+
{ key: 'weakHashing', rule: 'security-weakHashing', group: 'Weak Hash', message: 'Weak hash (MD5 / SHA1)' },
|
|
16
|
+
{ key: 'openRedirect', rule: 'security-openRedirect', group: 'Open Redirect', message: 'Redirect to unvalidated user input' },
|
|
17
|
+
];
|
|
18
|
+
const WARNING_GROUPS = {
|
|
19
|
+
'file-too-long': 'File Too Long',
|
|
20
|
+
'function-too-long': 'Function Too Long',
|
|
21
|
+
'too-many-functions': 'Too Many Functions',
|
|
22
|
+
'too-many-imports': 'Too Many Imports',
|
|
23
|
+
'no-exports': 'No Exports',
|
|
24
|
+
'hardcoded-secret': 'Hardcoded Secrets',
|
|
25
|
+
'parse-error': 'Parse Error',
|
|
26
|
+
'method-missing': 'Missing respond_to_missing?',
|
|
27
|
+
'mass-assignment': 'Mass Assignment',
|
|
28
|
+
'god-class': 'God Class',
|
|
29
|
+
'large-class': 'Large Class',
|
|
30
|
+
'catch-all-exception': 'Catch-All Exception',
|
|
31
|
+
'async-void': 'async void',
|
|
32
|
+
'linq-abuse': 'Long LINQ Chain',
|
|
33
|
+
'process-execution': 'Process Execution',
|
|
34
|
+
'unwrap-abuse': 'Unwrap / Expect',
|
|
35
|
+
'explicit-panic': 'Explicit Panic',
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* Group order keeps host UIs stable between successive scans. A group missing from
|
|
39
|
+
* this list ranks last, in whatever order the scan happened to produce it, which is
|
|
40
|
+
* why the ten language-specific groups below are listed explicitly: they were all
|
|
41
|
+
* absent when this module shipped, so every Ruby, C#, Java and Rust rule sorted to
|
|
42
|
+
* the end of the playground's findings pane in file-walk order (fixed 2026-08-24,
|
|
43
|
+
* found by the guard in the extension's panelProtocolCoverage.test.ts rather than by
|
|
44
|
+
* reading this array). Security-shaped rules sit with the security smells; size and
|
|
45
|
+
* shape rules sit with the other structural ones.
|
|
46
|
+
*/
|
|
47
|
+
const GROUP_ORDER = [
|
|
48
|
+
'Parse Error', 'Hardcoded Secrets', ...SECURITY_SMELLS.map((smell) => smell.group),
|
|
49
|
+
'Mass Assignment', 'Process Execution', 'Catch-All Exception', 'Explicit Panic',
|
|
50
|
+
'Unwrap / Expect', 'async void',
|
|
51
|
+
'Duplicate Code', 'File Naming', 'Explicit any', 'Debug Prints', 'TODOs',
|
|
52
|
+
'Magic Numbers', 'Long Parameter Lists', 'Unused Variables', 'Unused Functions',
|
|
53
|
+
'Bare Ignores', 'File Too Long', 'Function Too Long', 'Too Many Functions',
|
|
54
|
+
'Too Many Imports', 'No Exports', 'God Class', 'Large Class', 'Long LINQ Chain',
|
|
55
|
+
'Missing respond_to_missing?',
|
|
56
|
+
];
|
|
57
|
+
function findingGroupRank(group) {
|
|
58
|
+
const index = GROUP_ORDER.indexOf(group);
|
|
59
|
+
return index === -1 ? GROUP_ORDER.length : index;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Flattens analysis results into the product's canonical, line-anchored
|
|
63
|
+
* findings. Hosts may adapt rendering or filtering, but not finding meaning.
|
|
64
|
+
*/
|
|
65
|
+
function buildIrisFindings(path, analysis) {
|
|
66
|
+
const findings = [];
|
|
67
|
+
const smells = analysis.codeSmells;
|
|
68
|
+
const add = (finding) => findings.push({ path, ...finding });
|
|
69
|
+
for (const warning of analysis.warnings) {
|
|
70
|
+
add({
|
|
71
|
+
line: warning.line ?? 1,
|
|
72
|
+
rule: warning.type,
|
|
73
|
+
group: WARNING_GROUPS[warning.type] ?? warning.type,
|
|
74
|
+
severity: warning.severity === 'error' ? 'high' : warning.severity === 'warning' ? 'medium' : 'low',
|
|
75
|
+
message: warning.message,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
for (const secret of smells.hardcodedSecrets)
|
|
79
|
+
add({ line: secret.line, rule: 'hardcoded-secret', group: 'Hardcoded Secrets', severity: 'critical', message: secret.message });
|
|
80
|
+
for (const smell of SECURITY_SMELLS)
|
|
81
|
+
for (const hit of smells[smell.key] ?? [])
|
|
82
|
+
add({ line: hit.line, rule: smell.rule, group: smell.group, severity: 'high', message: smell.message });
|
|
83
|
+
for (const block of smells.duplicateBlocks ?? []) {
|
|
84
|
+
const scoring = block.crossFile && block.primary === false ? `, scored against ${block.otherFile}` : '';
|
|
85
|
+
add({ line: block.line, endLine: block.endLine, rule: 'duplicate-code', group: 'Duplicate Code', severity: 'medium', message: `${block.endLine - block.line + 1} lines duplicated in ${block.otherFile}:${block.otherLine}-${block.otherEndLine}${scoring}` });
|
|
86
|
+
}
|
|
87
|
+
for (const naming of smells.fileNamingViolations ?? [])
|
|
88
|
+
add({ line: naming.line, rule: 'file-naming', group: 'File Naming', severity: 'medium', message: `File name does not match ${naming.convention}; rename to ${naming.suggestion}` });
|
|
89
|
+
for (const usage of analysis.typeScriptMetrics.anyUsages)
|
|
90
|
+
add({ line: usage.line, rule: 'any-usage', group: 'Explicit any', severity: 'low', message: 'Explicit any defeats the type checker' });
|
|
91
|
+
for (const log of smells.consoleLogs)
|
|
92
|
+
add({ line: log.line, rule: 'console-log', group: 'Debug Prints', severity: 'low', message: 'Debug print left in the code' });
|
|
93
|
+
for (const todo of smells.todos)
|
|
94
|
+
add({ line: todo.line, rule: 'todo', group: 'TODOs', severity: 'low', message: todo.text });
|
|
95
|
+
for (const magic of smells.magicNumbers)
|
|
96
|
+
add({ line: magic.line, rule: 'magic-number', group: 'Magic Numbers', severity: 'low', message: `Magic number ${magic.value} - name it` });
|
|
97
|
+
for (const params of smells.longParameterLists)
|
|
98
|
+
add({ line: params.line, rule: 'long-param-list', group: 'Long Parameter Lists', severity: 'low', message: `${params.name} takes ${params.paramCount} parameters` });
|
|
99
|
+
for (const unused of smells.unusedVars)
|
|
100
|
+
add({ line: unused.line, rule: 'unused-var', group: 'Unused Variables', severity: 'low', message: `${unused.name} is never used` });
|
|
101
|
+
for (const unused of smells.unusedFunctions)
|
|
102
|
+
add({ line: unused.line, rule: 'unused-function', group: 'Unused Functions', severity: 'low', message: `${unused.name} is never called` });
|
|
103
|
+
for (const bare of smells.bareSuppressions ?? [])
|
|
104
|
+
add({ line: bare.line, rule: 'bare-suppression', group: 'Bare Ignores', severity: 'medium', message: 'iris-ignore with no rule id or no reason does nothing' });
|
|
105
|
+
return findings.sort((a, b) => findingGroupRank(a.group) - findingGroupRank(b.group) || a.line - b.line);
|
|
106
|
+
}
|
|
107
|
+
function groupIrisFindings(findings) {
|
|
108
|
+
const byGroup = new Map();
|
|
109
|
+
for (const finding of findings) {
|
|
110
|
+
const existing = byGroup.get(finding.group);
|
|
111
|
+
if (existing)
|
|
112
|
+
existing.items.push(finding);
|
|
113
|
+
else
|
|
114
|
+
byGroup.set(finding.group, { group: finding.group, rule: finding.rule, severity: finding.severity, items: [finding] });
|
|
115
|
+
}
|
|
116
|
+
return [...byGroup.values()].sort((a, b) => findingGroupRank(a.group) - findingGroupRank(b.group));
|
|
117
|
+
}
|
|
118
|
+
function describeSuppression(suppression) {
|
|
119
|
+
return suppression.fileLevel ? `${suppression.ruleId} (whole file)` : suppression.ruleId;
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=findings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"findings.js","sourceRoot":"","sources":["../src/findings.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -9,6 +9,7 @@ export * from './languages';
|
|
|
9
9
|
export * from './qualitySignals';
|
|
10
10
|
export * from './fileNaming';
|
|
11
11
|
export * from './sfc';
|
|
12
|
+
export * from './findings';
|
|
12
13
|
import { IrisConfig } from './config';
|
|
13
14
|
import { AnalyseBufferResult } from './guards';
|
|
14
15
|
import { CodeSmells, FileAnalysis, FunctionInfo, Language, LanguageAnalysis, TypeScriptMetrics, UnusedImport, Warning } from './types';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,QAAQ,CAAA;AACtB,cAAc,WAAW,CAAA;AACzB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,cAAc,CAAA;AAC5B,cAAc,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,QAAQ,CAAA;AACtB,cAAc,WAAW,CAAA;AACzB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,cAAc,CAAA;AAC5B,cAAc,OAAO,CAAA;AACrB,cAAc,YAAY,CAAA;AAE1B,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAQrC,OAAO,EACL,mBAAmB,EAMpB,MAAM,UAAU,CAAA;AAOjB,OAAO,EACL,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,OAAO,EACR,MAAM,SAAS,CAAA;AAEhB,YAAY,EACV,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,OAAO,EACP,iBAAiB,EACjB,UAAU,EACV,YAAY,EACZ,gBAAgB,GACjB,CAAA;AAED,MAAM,WAAW,kBAAkB;IACjC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,aAAa,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;CACpC;AAkDD,wBAAgB,WAAW,CACzB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,UAAU,EAClB,QAAQ,SAAe,EACvB,OAAO,GAAE,kBAAuB,GAC/B,YAAY,CA+Dd;AAED,wBAAgB,aAAa,CAC3B,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,UAAU,EAClB,QAAQ,SAAe,EACvB,OAAO,GAAE,kBAAuB,GAC/B,mBAAmB,CAOrB"}
|
package/dist/index.js
CHANGED
|
@@ -27,6 +27,7 @@ __exportStar(require("./languages"), exports);
|
|
|
27
27
|
__exportStar(require("./qualitySignals"), exports);
|
|
28
28
|
__exportStar(require("./fileNaming"), exports);
|
|
29
29
|
__exportStar(require("./sfc"), exports);
|
|
30
|
+
__exportStar(require("./findings"), exports);
|
|
30
31
|
const analyser_1 = require("./csharp/analyser");
|
|
31
32
|
const analyser_2 = require("./java/analyser");
|
|
32
33
|
const analyser_3 = require("./go/analyser");
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@iris-code/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.1",
|
|
4
4
|
"description": "Shared Iris analysis engine for TypeScript, JavaScript, Vue, Svelte, Go, Python, Ruby, and C#.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"scripts": {
|
|
30
30
|
"build": "node -e \"const fs=require('node:fs');fs.rmSync('dist',{recursive:true,force:true});fs.rmSync('tsconfig.tsbuildinfo',{force:true})\" && tsc -p tsconfig.json && node scripts/check-dist-orphans.mjs",
|
|
31
31
|
"typecheck": "tsc -p tsconfig.json --pretty false",
|
|
32
|
-
"test": "pnpm run build && node --test test/core.test.mjs test/gate.test.mjs test/v116.test.mjs test/bench.test.mjs test/lexers.test.mjs test/javaRust.test.mjs",
|
|
32
|
+
"test": "pnpm run build && node --test test/core.test.mjs test/gate.test.mjs test/v116.test.mjs test/bench.test.mjs test/lexers.test.mjs test/javaRust.test.mjs test/findings.test.mjs",
|
|
33
33
|
"bench": "pnpm run build && node bench/run.mjs",
|
|
34
34
|
"bench:baseline": "pnpm run build && node bench/run.mjs --baseline",
|
|
35
35
|
"bench:report": "pnpm run build && node bench/run.mjs --report",
|