@behavioral-contracts/verify-cli 1.0.0 → 1.2.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/dist/ai-prompt-generator.d.ts +16 -0
- package/dist/ai-prompt-generator.d.ts.map +1 -0
- package/dist/ai-prompt-generator.js +481 -0
- package/dist/ai-prompt-generator.js.map +1 -0
- package/dist/analyzer.d.ts +41 -0
- package/dist/analyzer.d.ts.map +1 -1
- package/dist/analyzer.js +93 -1
- package/dist/analyzer.js.map +1 -1
- package/dist/analyzers/event-listener-analyzer.d.ts +39 -4
- package/dist/analyzers/event-listener-analyzer.d.ts.map +1 -1
- package/dist/analyzers/event-listener-analyzer.js +123 -10
- package/dist/analyzers/event-listener-analyzer.js.map +1 -1
- package/dist/cli/suppressions.d.ts +9 -0
- package/dist/cli/suppressions.d.ts.map +1 -0
- package/dist/cli/suppressions.js +242 -0
- package/dist/cli/suppressions.js.map +1 -0
- package/dist/index.js +93 -38
- package/dist/index.js.map +1 -1
- package/dist/suppressions/config-loader.d.ts +47 -0
- package/dist/suppressions/config-loader.d.ts.map +1 -0
- package/dist/suppressions/config-loader.js +214 -0
- package/dist/suppressions/config-loader.js.map +1 -0
- package/dist/suppressions/dead-suppression-detector.d.ts +45 -0
- package/dist/suppressions/dead-suppression-detector.d.ts.map +1 -0
- package/dist/suppressions/dead-suppression-detector.js +101 -0
- package/dist/suppressions/dead-suppression-detector.js.map +1 -0
- package/dist/suppressions/index.d.ts +12 -0
- package/dist/suppressions/index.d.ts.map +1 -0
- package/dist/suppressions/index.js +18 -0
- package/dist/suppressions/index.js.map +1 -0
- package/dist/suppressions/manifest.d.ts +114 -0
- package/dist/suppressions/manifest.d.ts.map +1 -0
- package/dist/suppressions/manifest.js +281 -0
- package/dist/suppressions/manifest.js.map +1 -0
- package/dist/suppressions/matcher.d.ts +73 -0
- package/dist/suppressions/matcher.d.ts.map +1 -0
- package/dist/suppressions/matcher.js +163 -0
- package/dist/suppressions/matcher.js.map +1 -0
- package/dist/suppressions/parser.d.ts +59 -0
- package/dist/suppressions/parser.d.ts.map +1 -0
- package/dist/suppressions/parser.js +156 -0
- package/dist/suppressions/parser.js.map +1 -0
- package/dist/suppressions/types.d.ts +121 -0
- package/dist/suppressions/types.d.ts.map +1 -0
- package/dist/suppressions/types.js +8 -0
- package/dist/suppressions/types.js.map +1 -0
- package/package.json +4 -2
package/dist/index.js
CHANGED
|
@@ -13,6 +13,8 @@ import { PackageDiscovery } from './package-discovery.js';
|
|
|
13
13
|
import { generateAuditRecord, generateEnhancedAuditRecord, writeAuditRecord, printTerminalReport, printEnhancedTerminalReport, printCorpusErrors, } from './reporter.js';
|
|
14
14
|
import { printPositiveEvidenceReport, writePositiveEvidenceReport, writePositiveEvidenceReportMarkdown, writeD3Visualization, calculateHealthScore, buildPackageBreakdown, compareAgainstBenchmark, loadBenchmark, } from './reporters/index.js';
|
|
15
15
|
import { ensureTsconfig } from './tsconfig-generator.js';
|
|
16
|
+
import { createSuppressionsCommand } from './cli/suppressions.js';
|
|
17
|
+
import { generateAIPrompt } from './ai-prompt-generator.js';
|
|
16
18
|
const __filename = fileURLToPath(import.meta.url);
|
|
17
19
|
const __dirname = path.dirname(__filename);
|
|
18
20
|
const program = new Command();
|
|
@@ -20,6 +22,8 @@ program
|
|
|
20
22
|
.name('verify-cli')
|
|
21
23
|
.description('Verify TypeScript code against behavioral contracts')
|
|
22
24
|
.version('0.1.0');
|
|
25
|
+
// Add suppressions subcommand
|
|
26
|
+
program.addCommand(createSuppressionsCommand());
|
|
23
27
|
program
|
|
24
28
|
.option('--tsconfig <path>', 'Path to tsconfig.json or project directory (default: ./tsconfig.json)', './tsconfig.json')
|
|
25
29
|
.option('--corpus <path>', 'Path to corpus directory', findDefaultCorpusPath())
|
|
@@ -33,8 +37,15 @@ program
|
|
|
33
37
|
.option('--include-deprecated', 'Include deprecated contracts (default: excludes deprecated)', false)
|
|
34
38
|
.option('--positive-report', 'Generate positive evidence report (default: true)', true)
|
|
35
39
|
.option('--no-positive-report', 'Disable positive evidence report')
|
|
36
|
-
.
|
|
37
|
-
|
|
40
|
+
.option('--show-suppressions', 'Show suppressed violations in output', false)
|
|
41
|
+
.option('--check-dead-suppressions', 'Check for and report dead suppressions', false)
|
|
42
|
+
.option('--fail-on-dead-suppressions', 'Exit with error if dead suppressions are found', false)
|
|
43
|
+
.action(async (options) => {
|
|
44
|
+
// This action handler is called when the main command is invoked
|
|
45
|
+
// (i.e., not a subcommand like 'suppressions')
|
|
46
|
+
await main(options);
|
|
47
|
+
});
|
|
48
|
+
program.parse(process.argv);
|
|
38
49
|
/**
|
|
39
50
|
* Find git repository root by walking up from a given path
|
|
40
51
|
*/
|
|
@@ -50,31 +61,6 @@ function findGitRepoRoot(startPath) {
|
|
|
50
61
|
}
|
|
51
62
|
return null;
|
|
52
63
|
}
|
|
53
|
-
/**
|
|
54
|
-
* Get repository name from tsconfig path
|
|
55
|
-
* Walks up to find git repo root, then uses that directory name
|
|
56
|
-
*/
|
|
57
|
-
function getRepoNameFromTsconfig(tsconfigPath) {
|
|
58
|
-
// First, try to find git repo root
|
|
59
|
-
const gitRoot = findGitRepoRoot(tsconfigPath);
|
|
60
|
-
if (gitRoot) {
|
|
61
|
-
return path.basename(gitRoot);
|
|
62
|
-
}
|
|
63
|
-
// Fallback: look for package.json
|
|
64
|
-
let currentDir = path.dirname(path.resolve(tsconfigPath));
|
|
65
|
-
const root = path.parse(currentDir).root;
|
|
66
|
-
while (currentDir !== root) {
|
|
67
|
-
const packageJsonPath = path.join(currentDir, 'package.json');
|
|
68
|
-
if (fs.existsSync(packageJsonPath)) {
|
|
69
|
-
return path.basename(currentDir);
|
|
70
|
-
}
|
|
71
|
-
currentDir = path.dirname(currentDir);
|
|
72
|
-
}
|
|
73
|
-
// Last resort: use directory name where tsconfig lives
|
|
74
|
-
const resolved = path.resolve(tsconfigPath);
|
|
75
|
-
const parts = resolved.split(path.sep);
|
|
76
|
-
return parts[parts.length - 2] || 'unknown-repo';
|
|
77
|
-
}
|
|
78
64
|
/**
|
|
79
65
|
* Get git hash from the analyzed repository (not verify-cli)
|
|
80
66
|
*/
|
|
@@ -96,17 +82,49 @@ function getGitHashFromRepo(tsconfigPath) {
|
|
|
96
82
|
}
|
|
97
83
|
}
|
|
98
84
|
/**
|
|
99
|
-
*
|
|
85
|
+
* Ensure .behavioral-contracts is in .gitignore
|
|
86
|
+
*/
|
|
87
|
+
function ensureGitignore(projectRoot) {
|
|
88
|
+
const gitignorePath = path.join(projectRoot, '.gitignore');
|
|
89
|
+
const entry = '.behavioral-contracts';
|
|
90
|
+
try {
|
|
91
|
+
let gitignoreContent = '';
|
|
92
|
+
if (fs.existsSync(gitignorePath)) {
|
|
93
|
+
gitignoreContent = fs.readFileSync(gitignorePath, 'utf-8');
|
|
94
|
+
}
|
|
95
|
+
// Check if already ignored
|
|
96
|
+
const lines = gitignoreContent.split('\n');
|
|
97
|
+
const alreadyIgnored = lines.some(line => line.trim() === entry);
|
|
98
|
+
if (!alreadyIgnored) {
|
|
99
|
+
// Add entry to .gitignore
|
|
100
|
+
const newContent = gitignoreContent.endsWith('\n')
|
|
101
|
+
? gitignoreContent + entry + '\n'
|
|
102
|
+
: gitignoreContent + '\n' + entry + '\n';
|
|
103
|
+
fs.writeFileSync(gitignorePath, newContent, 'utf-8');
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
catch (err) {
|
|
107
|
+
// If we can't update .gitignore, just warn but don't fail
|
|
108
|
+
console.warn(chalk.yellow(`Warning: Could not update .gitignore: ${err}`));
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Generate organized output path in the analyzed project's .behavioral-contracts directory
|
|
100
113
|
*/
|
|
101
114
|
function generateOutputPath(tsconfigPath) {
|
|
102
|
-
const repoName = getRepoNameFromTsconfig(tsconfigPath);
|
|
103
115
|
const timestamp = new Date().toISOString().replace(/[:.]/g, '-').substring(0, 19);
|
|
104
116
|
// Get git commit hash from the analyzed repo
|
|
105
117
|
const gitHash = getGitHashFromRepo(tsconfigPath);
|
|
118
|
+
// Find the project root (git root or directory containing tsconfig)
|
|
119
|
+
const projectRoot = findGitRepoRoot(tsconfigPath) || path.dirname(path.resolve(tsconfigPath));
|
|
120
|
+
// Create run directory name
|
|
106
121
|
const runDir = `${timestamp.replace(/T/, '-').replace(/-/g, '').substring(0, 13)}-${gitHash}`;
|
|
107
|
-
|
|
122
|
+
// Output goes to .behavioral-contracts/runs/{runDir}/ in the analyzed project
|
|
123
|
+
const outputDir = path.join(projectRoot, '.behavioral-contracts', 'runs', runDir);
|
|
108
124
|
// Create directory if it doesn't exist
|
|
109
125
|
fs.mkdirSync(outputDir, { recursive: true });
|
|
126
|
+
// Ensure .behavioral-contracts is in .gitignore
|
|
127
|
+
ensureGitignore(projectRoot);
|
|
110
128
|
return path.join(outputDir, 'audit.json');
|
|
111
129
|
}
|
|
112
130
|
/**
|
|
@@ -155,7 +173,7 @@ function normalizeTsconfigPath(tsconfigPath) {
|
|
|
155
173
|
/**
|
|
156
174
|
* Main execution
|
|
157
175
|
*/
|
|
158
|
-
async function main() {
|
|
176
|
+
async function main(options) {
|
|
159
177
|
console.log(chalk.bold('\nBehavioral Contract Verification\n'));
|
|
160
178
|
// Normalize tsconfig path (allow directory or file)
|
|
161
179
|
const tsconfigPath = normalizeTsconfigPath(options.tsconfig);
|
|
@@ -239,6 +257,30 @@ async function main() {
|
|
|
239
257
|
const violations = analyzer.analyze();
|
|
240
258
|
const stats = analyzer.getStats();
|
|
241
259
|
console.log(chalk.green(`✓ Analyzed ${stats.filesAnalyzed} files\n`));
|
|
260
|
+
// Report suppressions if requested
|
|
261
|
+
if (options.showSuppressions) {
|
|
262
|
+
const suppressedViolations = analyzer.getSuppressedViolations();
|
|
263
|
+
if (suppressedViolations.length > 0) {
|
|
264
|
+
console.log(chalk.yellow(`⚠️ ${suppressedViolations.length} suppressions active\n`));
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
// Check for dead suppressions if requested
|
|
268
|
+
if (options.checkDeadSuppressions || options.failOnDeadSuppressions) {
|
|
269
|
+
const deadSuppressions = analyzer.detectDeadSuppressions();
|
|
270
|
+
if (deadSuppressions.length > 0) {
|
|
271
|
+
console.log(chalk.yellow(`\n🎉 Found ${deadSuppressions.length} dead suppressions (analyzer improved!):\n`));
|
|
272
|
+
deadSuppressions.forEach((dead) => {
|
|
273
|
+
console.log(analyzer.formatDeadSuppression(dead));
|
|
274
|
+
});
|
|
275
|
+
if (options.failOnDeadSuppressions) {
|
|
276
|
+
console.error(chalk.red('\n❌ Failing due to dead suppressions (--fail-on-dead-suppressions)'));
|
|
277
|
+
process.exit(1);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
else {
|
|
281
|
+
console.log(chalk.green('✨ No dead suppressions found!\n'));
|
|
282
|
+
}
|
|
283
|
+
}
|
|
242
284
|
// Generate audit record
|
|
243
285
|
const packagesAnalyzed = Array.from(corpusResult.contracts.keys());
|
|
244
286
|
const auditRecord = await generateAuditRecord(violations, {
|
|
@@ -255,6 +297,8 @@ async function main() {
|
|
|
255
297
|
// Write JSON output
|
|
256
298
|
writeAuditRecord(finalRecord, outputPath);
|
|
257
299
|
console.log(chalk.gray(`Audit record written to ${outputPath}`));
|
|
300
|
+
// Generate AI agent prompt file
|
|
301
|
+
const aiPromptPath = await generateAIPrompt(finalRecord, outputPath);
|
|
258
302
|
// Print terminal report
|
|
259
303
|
if (options.terminal !== false) {
|
|
260
304
|
if (packageDiscovery) {
|
|
@@ -310,7 +354,24 @@ async function main() {
|
|
|
310
354
|
console.log(chalk.gray(` - ${outputTxtPath} (full terminal output)`));
|
|
311
355
|
console.log(chalk.gray(` - ${positiveReportTxtPath}`));
|
|
312
356
|
console.log(chalk.gray(` - ${positiveReportMdPath}`));
|
|
313
|
-
console.log(chalk.green(` -
|
|
357
|
+
console.log(chalk.green(` - file://${d3HtmlPath} (interactive visualization)`));
|
|
358
|
+
// Only show AI prompt if it was generated (i.e., if there are violations)
|
|
359
|
+
if (aiPromptPath) {
|
|
360
|
+
console.log(chalk.hex('#FFA500')(` - ${aiPromptPath} (AI agent instructions)`));
|
|
361
|
+
}
|
|
362
|
+
console.log('');
|
|
363
|
+
}
|
|
364
|
+
// Final summary at the very end (easy to spot after all output)
|
|
365
|
+
const totalViolations = auditRecord.summary.error_count + auditRecord.summary.warning_count;
|
|
366
|
+
if (totalViolations > 0) {
|
|
367
|
+
console.log(chalk.yellow('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'));
|
|
368
|
+
console.log(chalk.yellow.bold(` ⚠️ ${totalViolations} violation${totalViolations === 1 ? '' : 's'} found - scroll up for full report`));
|
|
369
|
+
console.log(chalk.yellow('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n'));
|
|
370
|
+
}
|
|
371
|
+
else {
|
|
372
|
+
console.log(chalk.green('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'));
|
|
373
|
+
console.log(chalk.green.bold(' ✓ No violations found - great work!'));
|
|
374
|
+
console.log(chalk.green('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n'));
|
|
314
375
|
}
|
|
315
376
|
// Cleanup logging
|
|
316
377
|
cleanupLogging();
|
|
@@ -366,10 +427,4 @@ process.on('uncaughtException', (error) => {
|
|
|
366
427
|
console.error(error);
|
|
367
428
|
process.exit(1);
|
|
368
429
|
});
|
|
369
|
-
// Run
|
|
370
|
-
main().catch((error) => {
|
|
371
|
-
console.error(chalk.red('\nError during execution:'));
|
|
372
|
-
console.error(error);
|
|
373
|
-
process.exit(1);
|
|
374
|
-
});
|
|
375
430
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration File Loader
|
|
3
|
+
*
|
|
4
|
+
* Loads and validates .behavioralcontractsrc.json config file
|
|
5
|
+
*/
|
|
6
|
+
import { BehavioralContractsConfig, IgnoreRule } from './types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Load behavioral contracts configuration from project root
|
|
9
|
+
*
|
|
10
|
+
* @param projectRoot - Absolute path to project root
|
|
11
|
+
* @returns Configuration object, or empty config if file doesn't exist
|
|
12
|
+
*/
|
|
13
|
+
export declare function loadConfig(projectRoot: string): Promise<BehavioralContractsConfig>;
|
|
14
|
+
/**
|
|
15
|
+
* Load configuration synchronously
|
|
16
|
+
*
|
|
17
|
+
* @param projectRoot - Absolute path to project root
|
|
18
|
+
* @returns Configuration object
|
|
19
|
+
*/
|
|
20
|
+
export declare function loadConfigSync(projectRoot: string): BehavioralContractsConfig;
|
|
21
|
+
/**
|
|
22
|
+
* Check if an ignore rule matches a specific violation
|
|
23
|
+
*
|
|
24
|
+
* @param rule - Ignore rule from config
|
|
25
|
+
* @param file - File path of violation (relative to project root)
|
|
26
|
+
* @param packageName - Package name from violation
|
|
27
|
+
* @param postconditionId - Postcondition ID from violation
|
|
28
|
+
* @returns True if rule matches violation
|
|
29
|
+
*/
|
|
30
|
+
export declare function ruleMatches(rule: IgnoreRule, file: string, packageName: string, postconditionId: string): boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Find all matching rules for a violation
|
|
33
|
+
*
|
|
34
|
+
* @param config - Configuration object
|
|
35
|
+
* @param file - File path of violation
|
|
36
|
+
* @param packageName - Package name from violation
|
|
37
|
+
* @param postconditionId - Postcondition ID from violation
|
|
38
|
+
* @returns Array of matching rules
|
|
39
|
+
*/
|
|
40
|
+
export declare function findMatchingRules(config: BehavioralContractsConfig, file: string, packageName: string, postconditionId: string): IgnoreRule[];
|
|
41
|
+
/**
|
|
42
|
+
* Create a default configuration file
|
|
43
|
+
*
|
|
44
|
+
* @param projectRoot - Project root directory
|
|
45
|
+
*/
|
|
46
|
+
export declare function createDefaultConfig(projectRoot: string): Promise<void>;
|
|
47
|
+
//# sourceMappingURL=config-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../src/suppressions/config-loader.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,yBAAyB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAInE;;;;;GAKG;AACH,wBAAsB,UAAU,CAC9B,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,yBAAyB,CAAC,CAoBpC;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,WAAW,EAAE,MAAM,GAClB,yBAAyB,CAoB3B;AAsED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,MAAM,GACtB,OAAO,CA4BT;AAmCD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,yBAAyB,EACjC,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,MAAM,GACtB,UAAU,EAAE,CAQd;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA6B5E"}
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration File Loader
|
|
3
|
+
*
|
|
4
|
+
* Loads and validates .behavioralcontractsrc.json config file
|
|
5
|
+
*/
|
|
6
|
+
import * as fs from 'fs';
|
|
7
|
+
import * as path from 'path';
|
|
8
|
+
const CONFIG_FILENAME = '.behavioralcontractsrc.json';
|
|
9
|
+
/**
|
|
10
|
+
* Load behavioral contracts configuration from project root
|
|
11
|
+
*
|
|
12
|
+
* @param projectRoot - Absolute path to project root
|
|
13
|
+
* @returns Configuration object, or empty config if file doesn't exist
|
|
14
|
+
*/
|
|
15
|
+
export async function loadConfig(projectRoot) {
|
|
16
|
+
const configPath = path.join(projectRoot, CONFIG_FILENAME);
|
|
17
|
+
if (!fs.existsSync(configPath)) {
|
|
18
|
+
return { ignore: [] };
|
|
19
|
+
}
|
|
20
|
+
try {
|
|
21
|
+
const content = await fs.promises.readFile(configPath, 'utf-8');
|
|
22
|
+
const config = JSON.parse(content);
|
|
23
|
+
// Validate config structure
|
|
24
|
+
validateConfig(config);
|
|
25
|
+
return config;
|
|
26
|
+
}
|
|
27
|
+
catch (error) {
|
|
28
|
+
throw new Error(`Failed to load ${CONFIG_FILENAME}: ${error instanceof Error ? error.message : String(error)}`);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Load configuration synchronously
|
|
33
|
+
*
|
|
34
|
+
* @param projectRoot - Absolute path to project root
|
|
35
|
+
* @returns Configuration object
|
|
36
|
+
*/
|
|
37
|
+
export function loadConfigSync(projectRoot) {
|
|
38
|
+
const configPath = path.join(projectRoot, CONFIG_FILENAME);
|
|
39
|
+
if (!fs.existsSync(configPath)) {
|
|
40
|
+
return { ignore: [] };
|
|
41
|
+
}
|
|
42
|
+
try {
|
|
43
|
+
const content = fs.readFileSync(configPath, 'utf-8');
|
|
44
|
+
const config = JSON.parse(content);
|
|
45
|
+
// Validate config structure
|
|
46
|
+
validateConfig(config);
|
|
47
|
+
return config;
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
throw new Error(`Failed to load ${CONFIG_FILENAME}: ${error instanceof Error ? error.message : String(error)}`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Validate configuration structure
|
|
55
|
+
*
|
|
56
|
+
* @param config - Configuration to validate
|
|
57
|
+
* @throws Error if configuration is invalid
|
|
58
|
+
*/
|
|
59
|
+
function validateConfig(config) {
|
|
60
|
+
if (typeof config !== 'object' || config === null) {
|
|
61
|
+
throw new Error('Configuration must be an object');
|
|
62
|
+
}
|
|
63
|
+
if (config.ignore && !Array.isArray(config.ignore)) {
|
|
64
|
+
throw new Error('"ignore" must be an array');
|
|
65
|
+
}
|
|
66
|
+
if (config.ignore) {
|
|
67
|
+
config.ignore.forEach((rule, index) => {
|
|
68
|
+
validateIgnoreRule(rule, index);
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Validate a single ignore rule
|
|
74
|
+
*
|
|
75
|
+
* @param rule - Ignore rule to validate
|
|
76
|
+
* @param index - Index in ignore array (for error messages)
|
|
77
|
+
* @throws Error if rule is invalid
|
|
78
|
+
*/
|
|
79
|
+
function validateIgnoreRule(rule, index) {
|
|
80
|
+
if (typeof rule !== 'object' || rule === null) {
|
|
81
|
+
throw new Error(`ignore[${index}]: Rule must be an object`);
|
|
82
|
+
}
|
|
83
|
+
// Require at least one matching criterion
|
|
84
|
+
if (!rule.file && !rule.package && !rule.postconditionId) {
|
|
85
|
+
throw new Error(`ignore[${index}]: Rule must specify at least one of: file, package, postconditionId`);
|
|
86
|
+
}
|
|
87
|
+
// Require reason
|
|
88
|
+
if (!rule.reason || typeof rule.reason !== 'string') {
|
|
89
|
+
throw new Error(`ignore[${index}]: Rule must have a "reason" field`);
|
|
90
|
+
}
|
|
91
|
+
if (rule.reason.trim().length < 10) {
|
|
92
|
+
throw new Error(`ignore[${index}]: Reason must be at least 10 characters. Provide meaningful explanation.`);
|
|
93
|
+
}
|
|
94
|
+
// Validate file pattern if present
|
|
95
|
+
if (rule.file && typeof rule.file !== 'string') {
|
|
96
|
+
throw new Error(`ignore[${index}]: "file" must be a string`);
|
|
97
|
+
}
|
|
98
|
+
// Validate package if present
|
|
99
|
+
if (rule.package && typeof rule.package !== 'string') {
|
|
100
|
+
throw new Error(`ignore[${index}]: "package" must be a string`);
|
|
101
|
+
}
|
|
102
|
+
// Validate postconditionId if present
|
|
103
|
+
if (rule.postconditionId && typeof rule.postconditionId !== 'string') {
|
|
104
|
+
throw new Error(`ignore[${index}]: "postconditionId" must be a string`);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Check if an ignore rule matches a specific violation
|
|
109
|
+
*
|
|
110
|
+
* @param rule - Ignore rule from config
|
|
111
|
+
* @param file - File path of violation (relative to project root)
|
|
112
|
+
* @param packageName - Package name from violation
|
|
113
|
+
* @param postconditionId - Postcondition ID from violation
|
|
114
|
+
* @returns True if rule matches violation
|
|
115
|
+
*/
|
|
116
|
+
export function ruleMatches(rule, file, packageName, postconditionId) {
|
|
117
|
+
// Check file pattern (glob match)
|
|
118
|
+
if (rule.file) {
|
|
119
|
+
const fileMatches = matchGlob(rule.file, file);
|
|
120
|
+
if (!fileMatches) {
|
|
121
|
+
return false;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
// Check package name
|
|
125
|
+
if (rule.package) {
|
|
126
|
+
const packageMatches = rule.package === '*' || rule.package === packageName;
|
|
127
|
+
if (!packageMatches) {
|
|
128
|
+
return false;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
// Check postcondition ID
|
|
132
|
+
if (rule.postconditionId) {
|
|
133
|
+
const postconditionMatches = rule.postconditionId === '*' || rule.postconditionId === postconditionId;
|
|
134
|
+
if (!postconditionMatches) {
|
|
135
|
+
return false;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
// All specified criteria match
|
|
139
|
+
return true;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Simple glob pattern matching
|
|
143
|
+
*
|
|
144
|
+
* Supports:
|
|
145
|
+
* - * (any characters except /)
|
|
146
|
+
* - ** (any characters including /)
|
|
147
|
+
* - ? (single character)
|
|
148
|
+
*
|
|
149
|
+
* @param pattern - Glob pattern
|
|
150
|
+
* @param text - Text to match against
|
|
151
|
+
* @returns True if pattern matches text
|
|
152
|
+
*/
|
|
153
|
+
function matchGlob(pattern, text) {
|
|
154
|
+
// Convert glob pattern to regex
|
|
155
|
+
let regexPattern = pattern
|
|
156
|
+
// Escape regex special characters (except * and ?)
|
|
157
|
+
.replace(/[.+^${}()|[\]\\]/g, '\\$&')
|
|
158
|
+
// Replace ** with placeholder
|
|
159
|
+
.replace(/\*\*/g, '___DOUBLE_STAR___')
|
|
160
|
+
// Replace * with regex (match anything except /)
|
|
161
|
+
.replace(/\*/g, '[^/]*')
|
|
162
|
+
// Replace ** placeholder with regex (match anything including /)
|
|
163
|
+
.replace(/___DOUBLE_STAR___/g, '.*')
|
|
164
|
+
// Replace ? with regex (match single character)
|
|
165
|
+
.replace(/\?/g, '.');
|
|
166
|
+
// Add anchors
|
|
167
|
+
regexPattern = `^${regexPattern}$`;
|
|
168
|
+
const regex = new RegExp(regexPattern);
|
|
169
|
+
return regex.test(text);
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Find all matching rules for a violation
|
|
173
|
+
*
|
|
174
|
+
* @param config - Configuration object
|
|
175
|
+
* @param file - File path of violation
|
|
176
|
+
* @param packageName - Package name from violation
|
|
177
|
+
* @param postconditionId - Postcondition ID from violation
|
|
178
|
+
* @returns Array of matching rules
|
|
179
|
+
*/
|
|
180
|
+
export function findMatchingRules(config, file, packageName, postconditionId) {
|
|
181
|
+
if (!config.ignore) {
|
|
182
|
+
return [];
|
|
183
|
+
}
|
|
184
|
+
return config.ignore.filter((rule) => ruleMatches(rule, file, packageName, postconditionId));
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Create a default configuration file
|
|
188
|
+
*
|
|
189
|
+
* @param projectRoot - Project root directory
|
|
190
|
+
*/
|
|
191
|
+
export async function createDefaultConfig(projectRoot) {
|
|
192
|
+
const configPath = path.join(projectRoot, CONFIG_FILENAME);
|
|
193
|
+
if (fs.existsSync(configPath)) {
|
|
194
|
+
throw new Error(`${CONFIG_FILENAME} already exists`);
|
|
195
|
+
}
|
|
196
|
+
const defaultConfig = {
|
|
197
|
+
ignore: [
|
|
198
|
+
{
|
|
199
|
+
file: 'src/test/**',
|
|
200
|
+
reason: 'Test files intentionally trigger errors'
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
file: '**/*.test.ts',
|
|
204
|
+
reason: 'Test files intentionally trigger errors'
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
file: '**/*.spec.ts',
|
|
208
|
+
reason: 'Test files intentionally trigger errors'
|
|
209
|
+
}
|
|
210
|
+
]
|
|
211
|
+
};
|
|
212
|
+
await fs.promises.writeFile(configPath, JSON.stringify(defaultConfig, null, 2), 'utf-8');
|
|
213
|
+
}
|
|
214
|
+
//# sourceMappingURL=config-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-loader.js","sourceRoot":"","sources":["../../src/suppressions/config-loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dead Suppression Detector
|
|
3
|
+
*
|
|
4
|
+
* Detects suppressions that are no longer needed because the analyzer has improved.
|
|
5
|
+
*/
|
|
6
|
+
import { DeadSuppression } from './types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Detect dead suppressions in the manifest
|
|
9
|
+
*
|
|
10
|
+
* A dead suppression is one where stillViolates is false,
|
|
11
|
+
* meaning the analyzer no longer flags this location.
|
|
12
|
+
*
|
|
13
|
+
* @param projectRoot - Project root directory
|
|
14
|
+
* @param currentVersion - Current analyzer version
|
|
15
|
+
* @returns Array of dead suppressions
|
|
16
|
+
*/
|
|
17
|
+
export declare function detectDeadSuppressions(projectRoot: string, currentVersion: string): DeadSuppression[];
|
|
18
|
+
/**
|
|
19
|
+
* Remove dead suppressions from manifest
|
|
20
|
+
*
|
|
21
|
+
* @param projectRoot - Project root directory
|
|
22
|
+
* @returns Number of dead suppressions removed
|
|
23
|
+
*/
|
|
24
|
+
export declare function removeDeadSuppressionsFromManifest(projectRoot: string): number;
|
|
25
|
+
/**
|
|
26
|
+
* Get dead suppression summary
|
|
27
|
+
*
|
|
28
|
+
* @param deadSuppressions - Array of dead suppressions
|
|
29
|
+
* @returns Summary object
|
|
30
|
+
*/
|
|
31
|
+
export declare function getDeadSuppressionSummary(deadSuppressions: DeadSuppression[]): {
|
|
32
|
+
totalDead: number;
|
|
33
|
+
byPackage: Map<string, number>;
|
|
34
|
+
byFile: Map<string, number>;
|
|
35
|
+
oldestSuppression: Date | null;
|
|
36
|
+
newestSuppression: Date | null;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Format dead suppression for display
|
|
40
|
+
*
|
|
41
|
+
* @param dead - Dead suppression
|
|
42
|
+
* @returns Formatted string
|
|
43
|
+
*/
|
|
44
|
+
export declare function formatDeadSuppression(dead: DeadSuppression): string;
|
|
45
|
+
//# sourceMappingURL=dead-suppression-detector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dead-suppression-detector.d.ts","sourceRoot":"","sources":["../../src/suppressions/dead-suppression-detector.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,GACrB,eAAe,EAAE,CAgBnB;AAED;;;;;GAKG;AACH,wBAAgB,kCAAkC,CAChD,WAAW,EAAE,MAAM,GAClB,MAAM,CASR;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,gBAAgB,EAAE,eAAe,EAAE,GAAG;IAC9E,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,iBAAiB,EAAE,IAAI,GAAG,IAAI,CAAC;IAC/B,iBAAiB,EAAE,IAAI,GAAG,IAAI,CAAC;CAChC,CAgCA;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,CAiBnE"}
|