@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.
Files changed (47) hide show
  1. package/dist/ai-prompt-generator.d.ts +16 -0
  2. package/dist/ai-prompt-generator.d.ts.map +1 -0
  3. package/dist/ai-prompt-generator.js +481 -0
  4. package/dist/ai-prompt-generator.js.map +1 -0
  5. package/dist/analyzer.d.ts +41 -0
  6. package/dist/analyzer.d.ts.map +1 -1
  7. package/dist/analyzer.js +93 -1
  8. package/dist/analyzer.js.map +1 -1
  9. package/dist/analyzers/event-listener-analyzer.d.ts +39 -4
  10. package/dist/analyzers/event-listener-analyzer.d.ts.map +1 -1
  11. package/dist/analyzers/event-listener-analyzer.js +123 -10
  12. package/dist/analyzers/event-listener-analyzer.js.map +1 -1
  13. package/dist/cli/suppressions.d.ts +9 -0
  14. package/dist/cli/suppressions.d.ts.map +1 -0
  15. package/dist/cli/suppressions.js +242 -0
  16. package/dist/cli/suppressions.js.map +1 -0
  17. package/dist/index.js +93 -38
  18. package/dist/index.js.map +1 -1
  19. package/dist/suppressions/config-loader.d.ts +47 -0
  20. package/dist/suppressions/config-loader.d.ts.map +1 -0
  21. package/dist/suppressions/config-loader.js +214 -0
  22. package/dist/suppressions/config-loader.js.map +1 -0
  23. package/dist/suppressions/dead-suppression-detector.d.ts +45 -0
  24. package/dist/suppressions/dead-suppression-detector.d.ts.map +1 -0
  25. package/dist/suppressions/dead-suppression-detector.js +101 -0
  26. package/dist/suppressions/dead-suppression-detector.js.map +1 -0
  27. package/dist/suppressions/index.d.ts +12 -0
  28. package/dist/suppressions/index.d.ts.map +1 -0
  29. package/dist/suppressions/index.js +18 -0
  30. package/dist/suppressions/index.js.map +1 -0
  31. package/dist/suppressions/manifest.d.ts +114 -0
  32. package/dist/suppressions/manifest.d.ts.map +1 -0
  33. package/dist/suppressions/manifest.js +281 -0
  34. package/dist/suppressions/manifest.js.map +1 -0
  35. package/dist/suppressions/matcher.d.ts +73 -0
  36. package/dist/suppressions/matcher.d.ts.map +1 -0
  37. package/dist/suppressions/matcher.js +163 -0
  38. package/dist/suppressions/matcher.js.map +1 -0
  39. package/dist/suppressions/parser.d.ts +59 -0
  40. package/dist/suppressions/parser.d.ts.map +1 -0
  41. package/dist/suppressions/parser.js +156 -0
  42. package/dist/suppressions/parser.js.map +1 -0
  43. package/dist/suppressions/types.d.ts +121 -0
  44. package/dist/suppressions/types.d.ts.map +1 -0
  45. package/dist/suppressions/types.js +8 -0
  46. package/dist/suppressions/types.js.map +1 -0
  47. 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
- .parse(process.argv);
37
- const options = program.opts();
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
- * Generate organized output path
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
- const outputDir = path.join(__dirname, '../output/runs', runDir, repoName);
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(` - ${d3HtmlPath} (interactive visualization)\n`));
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":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAG7B,MAAM,eAAe,GAAG,6BAA6B,CAAC;AAEtD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,WAAmB;IAEnB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;IAE3D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACxB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAChE,MAAM,MAAM,GAA8B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAE9D,4BAA4B;QAC5B,cAAc,CAAC,MAAM,CAAC,CAAC;QAEvB,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,kBAAkB,eAAe,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC/F,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAC5B,WAAmB;IAEnB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;IAE3D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACxB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,MAAM,GAA8B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAE9D,4BAA4B;QAC5B,cAAc,CAAC,MAAM,CAAC,CAAC;QAEvB,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,kBAAkB,eAAe,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC/F,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,cAAc,CAAC,MAAiC;IACvD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAgB,EAAE,KAAa,EAAE,EAAE;YACxD,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAS,kBAAkB,CAAC,IAAgB,EAAE,KAAa;IACzD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,UAAU,KAAK,2BAA2B,CAAC,CAAC;IAC9D,CAAC;IAED,0CAA0C;IAC1C,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;QACzD,MAAM,IAAI,KAAK,CACb,UAAU,KAAK,sEAAsE,CACtF,CAAC;IACJ,CAAC;IAED,iBAAiB;IACjB,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,UAAU,KAAK,oCAAoC,CAAC,CAAC;IACvE,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CACb,UAAU,KAAK,2EAA2E,CAC3F,CAAC;IACJ,CAAC;IAED,mCAAmC;IACnC,IAAI,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,UAAU,KAAK,4BAA4B,CAAC,CAAC;IAC/D,CAAC;IAED,8BAA8B;IAC9B,IAAI,IAAI,CAAC,OAAO,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QACrD,MAAM,IAAI,KAAK,CAAC,UAAU,KAAK,+BAA+B,CAAC,CAAC;IAClE,CAAC;IAED,sCAAsC;IACtC,IAAI,IAAI,CAAC,eAAe,IAAI,OAAO,IAAI,CAAC,eAAe,KAAK,QAAQ,EAAE,CAAC;QACrE,MAAM,IAAI,KAAK,CAAC,UAAU,KAAK,uCAAuC,CAAC,CAAC;IAC1E,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,WAAW,CACzB,IAAgB,EAChB,IAAY,EACZ,WAAmB,EACnB,eAAuB;IAEvB,kCAAkC;IAClC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,qBAAqB;IACrB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,KAAK,GAAG,IAAI,IAAI,CAAC,OAAO,KAAK,WAAW,CAAC;QAC5E,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,yBAAyB;IACzB,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,MAAM,oBAAoB,GACxB,IAAI,CAAC,eAAe,KAAK,GAAG,IAAI,IAAI,CAAC,eAAe,KAAK,eAAe,CAAC;QAC3E,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC1B,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,+BAA+B;IAC/B,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,SAAS,CAAC,OAAe,EAAE,IAAY;IAC9C,gCAAgC;IAChC,IAAI,YAAY,GAAG,OAAO;QACxB,mDAAmD;SAClD,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC;QACrC,8BAA8B;SAC7B,OAAO,CAAC,OAAO,EAAE,mBAAmB,CAAC;QACtC,iDAAiD;SAChD,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC;QACxB,iEAAiE;SAChE,OAAO,CAAC,oBAAoB,EAAE,IAAI,CAAC;QACpC,gDAAgD;SAC/C,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAEvB,cAAc;IACd,YAAY,GAAG,IAAI,YAAY,GAAG,CAAC;IAEnC,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC;IACvC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAC/B,MAAiC,EACjC,IAAY,EACZ,WAAmB,EACnB,eAAuB;IAEvB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAgB,EAAE,EAAE,CAC/C,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,eAAe,CAAC,CACtD,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,WAAmB;IAC3D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;IAE3D,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,GAAG,eAAe,iBAAiB,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,aAAa,GAA8B;QAC/C,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,aAAa;gBACnB,MAAM,EAAE,yCAAyC;aAClD;YACD;gBACE,IAAI,EAAE,cAAc;gBACpB,MAAM,EAAE,yCAAyC;aAClD;YACD;gBACE,IAAI,EAAE,cAAc;gBACpB,MAAM,EAAE,yCAAyC;aAClD;SACF;KACF,CAAC;IAEF,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CACzB,UAAU,EACV,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,EACtC,OAAO,CACR,CAAC;AACJ,CAAC"}
@@ -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"}