driftdetect-lsp 0.9.27 → 0.9.29
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/package.json +3 -3
- package/dist/bin/server.d.ts +0 -12
- package/dist/bin/server.js +0 -26
- package/dist/bin/server.js.map +0 -1
- package/dist/capabilities.d.ts +0 -91
- package/dist/capabilities.d.ts.map +0 -1
- package/dist/capabilities.js +0 -183
- package/dist/capabilities.js.map +0 -1
- package/dist/commands/approve-pattern.d.ts +0 -15
- package/dist/commands/approve-pattern.js +0 -83
- package/dist/commands/approve-pattern.js.map +0 -1
- package/dist/commands/create-variant.d.ts +0 -22
- package/dist/commands/create-variant.js +0 -109
- package/dist/commands/create-variant.js.map +0 -1
- package/dist/commands/explain-ai.d.ts +0 -11
- package/dist/commands/explain-ai.js +0 -144
- package/dist/commands/explain-ai.js.map +0 -1
- package/dist/commands/fix-ai.d.ts +0 -11
- package/dist/commands/fix-ai.js +0 -146
- package/dist/commands/fix-ai.js.map +0 -1
- package/dist/commands/ignore-once.d.ts +0 -33
- package/dist/commands/ignore-once.js +0 -147
- package/dist/commands/ignore-once.js.map +0 -1
- package/dist/commands/ignore-pattern.d.ts +0 -15
- package/dist/commands/ignore-pattern.js +0 -77
- package/dist/commands/ignore-pattern.js.map +0 -1
- package/dist/commands/index.d.ts +0 -14
- package/dist/commands/index.js +0 -14
- package/dist/commands/index.js.map +0 -1
- package/dist/commands/rescan.d.ts +0 -19
- package/dist/commands/rescan.js +0 -125
- package/dist/commands/rescan.js.map +0 -1
- package/dist/commands/show-patterns.d.ts +0 -30
- package/dist/commands/show-patterns.js +0 -175
- package/dist/commands/show-patterns.js.map +0 -1
- package/dist/commands/show-violations.d.ts +0 -11
- package/dist/commands/show-violations.js +0 -259
- package/dist/commands/show-violations.js.map +0 -1
- package/dist/handlers/code-actions.d.ts +0 -32
- package/dist/handlers/code-actions.js +0 -184
- package/dist/handlers/code-actions.js.map +0 -1
- package/dist/handlers/code-lens.d.ts +0 -32
- package/dist/handlers/code-lens.js +0 -162
- package/dist/handlers/code-lens.js.map +0 -1
- package/dist/handlers/commands.d.ts +0 -48
- package/dist/handlers/commands.js +0 -360
- package/dist/handlers/commands.js.map +0 -1
- package/dist/handlers/diagnostics.d.ts +0 -73
- package/dist/handlers/diagnostics.js +0 -259
- package/dist/handlers/diagnostics.js.map +0 -1
- package/dist/handlers/document-sync.d.ts +0 -37
- package/dist/handlers/document-sync.js +0 -49
- package/dist/handlers/document-sync.js.map +0 -1
- package/dist/handlers/hover.d.ts +0 -30
- package/dist/handlers/hover.js +0 -119
- package/dist/handlers/hover.js.map +0 -1
- package/dist/handlers/index.d.ts +0 -23
- package/dist/handlers/index.js +0 -16
- package/dist/handlers/index.js.map +0 -1
- package/dist/handlers/initialize.d.ts +0 -41
- package/dist/handlers/initialize.d.ts.map +0 -1
- package/dist/handlers/initialize.js +0 -33
- package/dist/handlers/initialize.js.map +0 -1
- package/dist/index.d.ts +0 -22
- package/dist/index.js +0 -26
- package/dist/index.js.map +0 -1
- package/dist/integration/core-scanner.d.ts +0 -89
- package/dist/integration/core-scanner.js +0 -309
- package/dist/integration/core-scanner.js.map +0 -1
- package/dist/integration/index.d.ts +0 -11
- package/dist/integration/index.js +0 -11
- package/dist/integration/index.js.map +0 -1
- package/dist/integration/pattern-store-adapter.d.ts +0 -117
- package/dist/integration/pattern-store-adapter.js +0 -349
- package/dist/integration/pattern-store-adapter.js.map +0 -1
- package/dist/integration/types.d.ts +0 -134
- package/dist/integration/types.js +0 -39
- package/dist/integration/types.js.map +0 -1
- package/dist/server/index.d.ts +0 -5
- package/dist/server/index.js +0 -5
- package/dist/server/index.js.map +0 -1
- package/dist/server/types.d.ts +0 -139
- package/dist/server/types.js +0 -8
- package/dist/server/types.js.map +0 -1
- package/dist/server.d.ts +0 -63
- package/dist/server.js +0 -208
- package/dist/server.js.map +0 -1
- package/dist/types/index.d.ts +0 -5
- package/dist/types/index.js +0 -5
- package/dist/types/index.js.map +0 -1
- package/dist/types/lsp-types.d.ts +0 -321
- package/dist/types/lsp-types.js +0 -274
- package/dist/types/lsp-types.js.map +0 -1
- package/dist/utils/diagnostic.d.ts +0 -84
- package/dist/utils/diagnostic.js +0 -256
- package/dist/utils/diagnostic.js.map +0 -1
- package/dist/utils/document.d.ts +0 -40
- package/dist/utils/document.d.ts.map +0 -1
- package/dist/utils/document.js +0 -138
- package/dist/utils/document.js.map +0 -1
- package/dist/utils/index.d.ts +0 -8
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js +0 -8
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/position.d.ts +0 -44
- package/dist/utils/position.d.ts.map +0 -1
- package/dist/utils/position.js +0 -96
- package/dist/utils/position.js.map +0 -1
- package/dist/utils/workspace.d.ts +0 -98
- package/dist/utils/workspace.js +0 -241
- package/dist/utils/workspace.js.map +0 -1
package/dist/commands/rescan.js
DELETED
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Rescan Command - drift.rescan
|
|
3
|
-
* @requirements 28.7
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* Execute rescan command
|
|
7
|
-
* Rescans documents for drift violations
|
|
8
|
-
*/
|
|
9
|
-
export async function executeRescan(context, scanner, diagnosticPublisher, uri) {
|
|
10
|
-
const { state, logger, connection } = context;
|
|
11
|
-
logger.info(`Rescan requested${uri ? ` for: ${uri}` : ' for all documents'}`);
|
|
12
|
-
// Clear caches
|
|
13
|
-
if (uri) {
|
|
14
|
-
scanner.invalidate(uri);
|
|
15
|
-
}
|
|
16
|
-
else {
|
|
17
|
-
scanner.clearCache();
|
|
18
|
-
}
|
|
19
|
-
// Note: withProgress is not available in vscode-languageserver
|
|
20
|
-
// Show a simple message instead
|
|
21
|
-
const documentsToScan = uri
|
|
22
|
-
? [uri].filter((u) => state.documents.has(u))
|
|
23
|
-
: Array.from(state.documents.keys());
|
|
24
|
-
if (documentsToScan.length === 0) {
|
|
25
|
-
return {
|
|
26
|
-
success: true,
|
|
27
|
-
message: 'No documents to scan',
|
|
28
|
-
data: { scannedCount: 0 },
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
connection.window.showInformationMessage(`Rescanning ${documentsToScan.length} document(s)...`);
|
|
32
|
-
let scannedCount = 0;
|
|
33
|
-
let totalViolations = 0;
|
|
34
|
-
for (const docUri of documentsToScan) {
|
|
35
|
-
try {
|
|
36
|
-
// Publish diagnostics (which triggers scan)
|
|
37
|
-
await diagnosticPublisher.publish(docUri);
|
|
38
|
-
scannedCount++;
|
|
39
|
-
// Count violations
|
|
40
|
-
const violations = state.violations.get(docUri) ?? [];
|
|
41
|
-
totalViolations += violations.length;
|
|
42
|
-
}
|
|
43
|
-
catch (error) {
|
|
44
|
-
logger.error(`Error scanning ${docUri}: ${error}`);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
// Show summary
|
|
48
|
-
const message = `Rescan complete: ${scannedCount} document${scannedCount === 1 ? '' : 's'} scanned, ${totalViolations} violation${totalViolations === 1 ? '' : 's'} found`;
|
|
49
|
-
connection.window.showInformationMessage(message);
|
|
50
|
-
logger.info(message);
|
|
51
|
-
return {
|
|
52
|
-
success: true,
|
|
53
|
-
message,
|
|
54
|
-
data: {
|
|
55
|
-
scannedCount,
|
|
56
|
-
totalViolations,
|
|
57
|
-
documentsScanned: documentsToScan.slice(0, scannedCount),
|
|
58
|
-
},
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Execute rescan for specific patterns
|
|
63
|
-
*/
|
|
64
|
-
export async function executeRescanPatterns(context, scanner, diagnosticPublisher, patternIds) {
|
|
65
|
-
const { state, logger } = context;
|
|
66
|
-
logger.info(`Rescan requested for patterns: ${patternIds.join(', ')}`);
|
|
67
|
-
// Clear all caches (pattern-specific invalidation not supported yet)
|
|
68
|
-
scanner.clearCache();
|
|
69
|
-
// Rescan all documents
|
|
70
|
-
const result = await executeRescan(context, scanner, diagnosticPublisher);
|
|
71
|
-
// Filter results to only include specified patterns
|
|
72
|
-
if (result.success && result.data) {
|
|
73
|
-
const data = result.data;
|
|
74
|
-
// Count violations for specified patterns only
|
|
75
|
-
let patternViolations = 0;
|
|
76
|
-
for (const violations of state.violations.values()) {
|
|
77
|
-
patternViolations += violations.filter((v) => patternIds.includes(v.patternId)).length;
|
|
78
|
-
}
|
|
79
|
-
return {
|
|
80
|
-
success: true,
|
|
81
|
-
message: `Rescan complete: ${data.scannedCount} documents scanned, ${patternViolations} violations found for specified patterns`,
|
|
82
|
-
data: {
|
|
83
|
-
...data,
|
|
84
|
-
patternIds,
|
|
85
|
-
patternViolations,
|
|
86
|
-
},
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
return result;
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* Execute incremental rescan for changed files
|
|
93
|
-
*/
|
|
94
|
-
export async function executeIncrementalRescan(context, scanner, diagnosticPublisher, changedUris) {
|
|
95
|
-
const { logger } = context;
|
|
96
|
-
logger.info(`Incremental rescan for ${changedUris.length} changed files`);
|
|
97
|
-
// Invalidate changed files
|
|
98
|
-
for (const uri of changedUris) {
|
|
99
|
-
scanner.invalidate(uri);
|
|
100
|
-
}
|
|
101
|
-
// Rescan only changed files
|
|
102
|
-
let scannedCount = 0;
|
|
103
|
-
let totalViolations = 0;
|
|
104
|
-
for (const uri of changedUris) {
|
|
105
|
-
try {
|
|
106
|
-
await diagnosticPublisher.publish(uri);
|
|
107
|
-
scannedCount++;
|
|
108
|
-
const violations = context.state.violations.get(uri) ?? [];
|
|
109
|
-
totalViolations += violations.length;
|
|
110
|
-
}
|
|
111
|
-
catch (error) {
|
|
112
|
-
logger.error(`Error scanning ${uri}: ${error}`);
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
return {
|
|
116
|
-
success: true,
|
|
117
|
-
message: `Incremental rescan complete: ${scannedCount} files, ${totalViolations} violations`,
|
|
118
|
-
data: {
|
|
119
|
-
scannedCount,
|
|
120
|
-
totalViolations,
|
|
121
|
-
changedUris,
|
|
122
|
-
},
|
|
123
|
-
};
|
|
124
|
-
}
|
|
125
|
-
//# sourceMappingURL=rescan.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rescan.js","sourceRoot":"","sources":["../../src/commands/rescan.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Show Patterns Command - drift.showPatterns
|
|
3
|
-
* @requirements 28.8
|
|
4
|
-
*/
|
|
5
|
-
import type { ServerContext } from '../server/types.js';
|
|
6
|
-
import type { CommandResult } from '../handlers/commands.js';
|
|
7
|
-
/**
|
|
8
|
-
* Execute show patterns command
|
|
9
|
-
* Shows detected patterns in the workspace
|
|
10
|
-
*/
|
|
11
|
-
export declare function executeShowPatterns(context: ServerContext, patternId?: string): Promise<CommandResult>;
|
|
12
|
-
/**
|
|
13
|
-
* Get pattern statistics
|
|
14
|
-
*/
|
|
15
|
-
export declare function getPatternStatistics(patterns: Map<string, {
|
|
16
|
-
id: string;
|
|
17
|
-
category?: string;
|
|
18
|
-
}>, violations: Map<string, Array<{
|
|
19
|
-
patternId: string;
|
|
20
|
-
severity: string;
|
|
21
|
-
}>>): {
|
|
22
|
-
totalPatterns: number;
|
|
23
|
-
totalViolations: number;
|
|
24
|
-
byCategory: Record<string, {
|
|
25
|
-
patterns: number;
|
|
26
|
-
violations: number;
|
|
27
|
-
}>;
|
|
28
|
-
bySeverity: Record<string, number>;
|
|
29
|
-
};
|
|
30
|
-
//# sourceMappingURL=show-patterns.d.ts.map
|
|
@@ -1,175 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Show Patterns Command - drift.showPatterns
|
|
3
|
-
* @requirements 28.8
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* Execute show patterns command
|
|
7
|
-
* Shows detected patterns in the workspace
|
|
8
|
-
*/
|
|
9
|
-
export async function executeShowPatterns(context, patternId) {
|
|
10
|
-
const { state, logger, connection } = context;
|
|
11
|
-
logger.info(`Show patterns requested${patternId ? ` for: ${patternId}` : ''}`);
|
|
12
|
-
if (patternId) {
|
|
13
|
-
// Show specific pattern
|
|
14
|
-
const pattern = state.patterns.get(patternId);
|
|
15
|
-
if (!pattern) {
|
|
16
|
-
return {
|
|
17
|
-
success: false,
|
|
18
|
-
error: `Pattern not found: ${patternId}`,
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
// Count violations for this pattern
|
|
22
|
-
let violationCount = 0;
|
|
23
|
-
const affectedFiles = [];
|
|
24
|
-
for (const [uri, violations] of state.violations) {
|
|
25
|
-
const patternViolations = violations.filter((v) => v.patternId === patternId);
|
|
26
|
-
if (patternViolations.length > 0) {
|
|
27
|
-
violationCount += patternViolations.length;
|
|
28
|
-
affectedFiles.push(uri);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
// Format pattern details
|
|
32
|
-
const details = formatPatternDetails(pattern, violationCount, affectedFiles);
|
|
33
|
-
// Show in message
|
|
34
|
-
connection.window.showInformationMessage(details);
|
|
35
|
-
return {
|
|
36
|
-
success: true,
|
|
37
|
-
message: `Pattern details for: ${patternId}`,
|
|
38
|
-
data: {
|
|
39
|
-
pattern,
|
|
40
|
-
violationCount,
|
|
41
|
-
affectedFiles,
|
|
42
|
-
},
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
// Show all patterns
|
|
47
|
-
const patterns = Array.from(state.patterns.values());
|
|
48
|
-
if (patterns.length === 0) {
|
|
49
|
-
connection.window.showInformationMessage('No patterns detected in the workspace.');
|
|
50
|
-
return {
|
|
51
|
-
success: true,
|
|
52
|
-
message: 'No patterns detected',
|
|
53
|
-
data: { patterns: [] },
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
// Group patterns by category
|
|
57
|
-
const patternsByCategory = groupPatternsByCategory(patterns);
|
|
58
|
-
// Format summary
|
|
59
|
-
const summary = formatPatternsSummary(patternsByCategory, state.violations);
|
|
60
|
-
// Show summary
|
|
61
|
-
connection.window.showInformationMessage(summary);
|
|
62
|
-
return {
|
|
63
|
-
success: true,
|
|
64
|
-
message: `Found ${patterns.length} patterns`,
|
|
65
|
-
data: {
|
|
66
|
-
patterns,
|
|
67
|
-
patternsByCategory: Object.fromEntries(patternsByCategory),
|
|
68
|
-
},
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Format pattern details for display
|
|
74
|
-
*/
|
|
75
|
-
function formatPatternDetails(pattern, violationCount, affectedFiles) {
|
|
76
|
-
const lines = [];
|
|
77
|
-
lines.push(`📋 Pattern: ${pattern.name ?? pattern.id ?? 'Unknown'}`);
|
|
78
|
-
lines.push('');
|
|
79
|
-
if (pattern.category) {
|
|
80
|
-
lines.push(`Category: ${pattern.category}${pattern.subcategory ? ` > ${pattern.subcategory}` : ''}`);
|
|
81
|
-
}
|
|
82
|
-
if (pattern.description) {
|
|
83
|
-
lines.push(`Description: ${pattern.description}`);
|
|
84
|
-
}
|
|
85
|
-
if (pattern.confidence !== undefined) {
|
|
86
|
-
lines.push(`Confidence: ${Math.round(pattern.confidence * 100)}%`);
|
|
87
|
-
}
|
|
88
|
-
lines.push('');
|
|
89
|
-
lines.push(`Violations: ${violationCount}`);
|
|
90
|
-
lines.push(`Affected files: ${affectedFiles.length}`);
|
|
91
|
-
if (affectedFiles.length > 0 && affectedFiles.length <= 5) {
|
|
92
|
-
lines.push('');
|
|
93
|
-
lines.push('Files:');
|
|
94
|
-
for (const file of affectedFiles) {
|
|
95
|
-
const fileName = file.split('/').pop() ?? file;
|
|
96
|
-
lines.push(` - ${fileName}`);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
return lines.join('\n');
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Group patterns by category
|
|
103
|
-
*/
|
|
104
|
-
function groupPatternsByCategory(patterns) {
|
|
105
|
-
const groups = new Map();
|
|
106
|
-
for (const pattern of patterns) {
|
|
107
|
-
const category = pattern.category ?? 'Uncategorized';
|
|
108
|
-
const group = groups.get(category) ?? [];
|
|
109
|
-
group.push(pattern);
|
|
110
|
-
groups.set(category, group);
|
|
111
|
-
}
|
|
112
|
-
return groups;
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* Format patterns summary for display
|
|
116
|
-
*/
|
|
117
|
-
function formatPatternsSummary(patternsByCategory, violations) {
|
|
118
|
-
const lines = [];
|
|
119
|
-
lines.push(`📊 Detected Patterns Summary`);
|
|
120
|
-
lines.push('');
|
|
121
|
-
let totalPatterns = 0;
|
|
122
|
-
let totalViolations = 0;
|
|
123
|
-
for (const [category, patterns] of patternsByCategory) {
|
|
124
|
-
totalPatterns += patterns.length;
|
|
125
|
-
// Count violations for this category
|
|
126
|
-
let categoryViolations = 0;
|
|
127
|
-
for (const pattern of patterns) {
|
|
128
|
-
for (const docViolations of violations.values()) {
|
|
129
|
-
categoryViolations += docViolations.filter((v) => v.patternId === pattern.id).length;
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
totalViolations += categoryViolations;
|
|
133
|
-
lines.push(`${category}: ${patterns.length} pattern${patterns.length === 1 ? '' : 's'}, ${categoryViolations} violation${categoryViolations === 1 ? '' : 's'}`);
|
|
134
|
-
}
|
|
135
|
-
lines.push('');
|
|
136
|
-
lines.push(`Total: ${totalPatterns} patterns, ${totalViolations} violations`);
|
|
137
|
-
return lines.join('\n');
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* Get pattern statistics
|
|
141
|
-
*/
|
|
142
|
-
export function getPatternStatistics(patterns, violations) {
|
|
143
|
-
const byCategory = {};
|
|
144
|
-
const bySeverity = { error: 0, warning: 0, info: 0, hint: 0 };
|
|
145
|
-
let totalViolations = 0;
|
|
146
|
-
// Count patterns by category
|
|
147
|
-
for (const pattern of patterns.values()) {
|
|
148
|
-
const category = pattern.category ?? 'Uncategorized';
|
|
149
|
-
if (!byCategory[category]) {
|
|
150
|
-
byCategory[category] = { patterns: 0, violations: 0 };
|
|
151
|
-
}
|
|
152
|
-
byCategory[category].patterns++;
|
|
153
|
-
}
|
|
154
|
-
// Count violations
|
|
155
|
-
for (const docViolations of violations.values()) {
|
|
156
|
-
for (const violation of docViolations) {
|
|
157
|
-
totalViolations++;
|
|
158
|
-
// By severity
|
|
159
|
-
bySeverity[violation.severity] = (bySeverity[violation.severity] ?? 0) + 1;
|
|
160
|
-
// By category
|
|
161
|
-
const pattern = patterns.get(violation.patternId);
|
|
162
|
-
const category = pattern?.category ?? 'Uncategorized';
|
|
163
|
-
if (byCategory[category]) {
|
|
164
|
-
byCategory[category].violations++;
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
return {
|
|
169
|
-
totalPatterns: patterns.size,
|
|
170
|
-
totalViolations,
|
|
171
|
-
byCategory,
|
|
172
|
-
bySeverity,
|
|
173
|
-
};
|
|
174
|
-
}
|
|
175
|
-
//# sourceMappingURL=show-patterns.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"show-patterns.js","sourceRoot":"","sources":["../../src/commands/show-patterns.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Show Violations Command - drift.showViolations
|
|
3
|
-
* @requirements 28.9
|
|
4
|
-
*/
|
|
5
|
-
import type { ServerContext, CommandResult } from '../server/types.js';
|
|
6
|
-
/**
|
|
7
|
-
* Execute show violations command
|
|
8
|
-
* Shows violations in the workspace
|
|
9
|
-
*/
|
|
10
|
-
export declare function executeShowViolations(context: ServerContext, uri?: string, patternId?: string, violationId?: string): Promise<CommandResult>;
|
|
11
|
-
//# sourceMappingURL=show-violations.d.ts.map
|
|
@@ -1,259 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Show Violations Command - drift.showViolations
|
|
3
|
-
* @requirements 28.9
|
|
4
|
-
*/
|
|
5
|
-
// ============================================================================
|
|
6
|
-
// Main Command
|
|
7
|
-
// ============================================================================
|
|
8
|
-
/**
|
|
9
|
-
* Execute show violations command
|
|
10
|
-
* Shows violations in the workspace
|
|
11
|
-
*/
|
|
12
|
-
export async function executeShowViolations(context, uri, patternId, violationId) {
|
|
13
|
-
const { state, logger, connection } = context;
|
|
14
|
-
logger.info(`Show violations requested${uri ? ` for: ${uri}` : ''}${patternId ? ` pattern: ${patternId}` : ''}`);
|
|
15
|
-
// If specific violation requested
|
|
16
|
-
if (violationId) {
|
|
17
|
-
return showSpecificViolation(context, violationId);
|
|
18
|
-
}
|
|
19
|
-
// Get violations to show
|
|
20
|
-
let violations = [];
|
|
21
|
-
if (uri) {
|
|
22
|
-
// Violations for specific document
|
|
23
|
-
const docViolations = state.violations.get(uri) ?? [];
|
|
24
|
-
violations = docViolations.map((v) => ({ uri, violation: v }));
|
|
25
|
-
}
|
|
26
|
-
else {
|
|
27
|
-
// All violations
|
|
28
|
-
for (const [docUri, docViolations] of state.violations) {
|
|
29
|
-
for (const v of docViolations) {
|
|
30
|
-
violations.push({ uri: docUri, violation: v });
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
// Filter by pattern if specified
|
|
35
|
-
if (patternId) {
|
|
36
|
-
violations = violations.filter((entry) => entry.violation.patternId === patternId);
|
|
37
|
-
}
|
|
38
|
-
if (violations.length === 0) {
|
|
39
|
-
const message = uri
|
|
40
|
-
? `No violations found in ${getFileName(uri)}`
|
|
41
|
-
: patternId
|
|
42
|
-
? `No violations found for pattern: ${patternId}`
|
|
43
|
-
: 'No violations found in workspace';
|
|
44
|
-
connection.window.showInformationMessage(message);
|
|
45
|
-
return {
|
|
46
|
-
success: true,
|
|
47
|
-
message,
|
|
48
|
-
data: { violations: [] },
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
// Format violations summary
|
|
52
|
-
const summary = formatViolationsSummary(violations, state.patterns);
|
|
53
|
-
// Show summary
|
|
54
|
-
connection.window.showInformationMessage(summary);
|
|
55
|
-
return {
|
|
56
|
-
success: true,
|
|
57
|
-
message: `Found ${violations.length} violations`,
|
|
58
|
-
data: {
|
|
59
|
-
violations: violations.map((v) => ({
|
|
60
|
-
uri: v.uri,
|
|
61
|
-
...v.violation,
|
|
62
|
-
})),
|
|
63
|
-
summary: getViolationStatistics(violations),
|
|
64
|
-
},
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Show specific violation details
|
|
69
|
-
*/
|
|
70
|
-
async function showSpecificViolation(context, violationId) {
|
|
71
|
-
const { state, logger, connection } = context;
|
|
72
|
-
// Find the violation
|
|
73
|
-
let foundViolation = null;
|
|
74
|
-
let foundUri = '';
|
|
75
|
-
for (const [uri, violations] of state.violations) {
|
|
76
|
-
const violation = violations.find((v) => v.id === violationId);
|
|
77
|
-
if (violation) {
|
|
78
|
-
foundViolation = violation;
|
|
79
|
-
foundUri = uri;
|
|
80
|
-
break;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
if (!foundViolation) {
|
|
84
|
-
return {
|
|
85
|
-
success: false,
|
|
86
|
-
error: `Violation not found: ${violationId}`,
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
// Get pattern details
|
|
90
|
-
const pattern = state.patterns.get(foundViolation.patternId);
|
|
91
|
-
// Format violation details
|
|
92
|
-
const details = formatViolationDetails(foundViolation, foundUri, pattern);
|
|
93
|
-
// Show details
|
|
94
|
-
connection.window.showInformationMessage(details);
|
|
95
|
-
// Offer to navigate to violation
|
|
96
|
-
const navigateResult = await connection.window.showInformationMessage(`Navigate to violation at line ${foundViolation.range.start.line + 1}?`, { title: 'Go to Location' }, { title: 'Close' });
|
|
97
|
-
if (navigateResult?.title === 'Go to Location') {
|
|
98
|
-
// TODO: Send notification to client to navigate to location
|
|
99
|
-
logger.info(`Navigate to ${foundUri}:${foundViolation.range.start.line + 1}`);
|
|
100
|
-
}
|
|
101
|
-
return {
|
|
102
|
-
success: true,
|
|
103
|
-
message: `Violation details for: ${violationId}`,
|
|
104
|
-
data: {
|
|
105
|
-
violation: foundViolation,
|
|
106
|
-
uri: foundUri,
|
|
107
|
-
pattern,
|
|
108
|
-
},
|
|
109
|
-
};
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Format violations summary
|
|
113
|
-
*/
|
|
114
|
-
function formatViolationsSummary(violations, patterns) {
|
|
115
|
-
const lines = [];
|
|
116
|
-
lines.push(`⚠️ Drift Violations Summary`);
|
|
117
|
-
lines.push('');
|
|
118
|
-
// Group by severity
|
|
119
|
-
const bySeverity = groupBySeverity(violations);
|
|
120
|
-
if (bySeverity.error.length > 0) {
|
|
121
|
-
lines.push(`🔴 Errors: ${bySeverity.error.length}`);
|
|
122
|
-
}
|
|
123
|
-
if (bySeverity.warning.length > 0) {
|
|
124
|
-
lines.push(`🟡 Warnings: ${bySeverity.warning.length}`);
|
|
125
|
-
}
|
|
126
|
-
if (bySeverity.info.length > 0) {
|
|
127
|
-
lines.push(`🔵 Info: ${bySeverity.info.length}`);
|
|
128
|
-
}
|
|
129
|
-
if (bySeverity.hint.length > 0) {
|
|
130
|
-
lines.push(`💡 Hints: ${bySeverity.hint.length}`);
|
|
131
|
-
}
|
|
132
|
-
lines.push('');
|
|
133
|
-
// Group by pattern
|
|
134
|
-
const byPattern = groupByPattern(violations);
|
|
135
|
-
const patternCount = byPattern.size;
|
|
136
|
-
lines.push(`Across ${patternCount} pattern${patternCount === 1 ? '' : 's'}:`);
|
|
137
|
-
lines.push('');
|
|
138
|
-
for (const [patternId, patternViolations] of byPattern) {
|
|
139
|
-
const pattern = patterns.get(patternId);
|
|
140
|
-
const name = pattern?.name ?? patternId;
|
|
141
|
-
lines.push(` • ${name}: ${patternViolations.length}`);
|
|
142
|
-
}
|
|
143
|
-
// Group by file
|
|
144
|
-
const byFile = groupByFile(violations);
|
|
145
|
-
const fileCount = byFile.size;
|
|
146
|
-
lines.push('');
|
|
147
|
-
lines.push(`In ${fileCount} file${fileCount === 1 ? '' : 's'}`);
|
|
148
|
-
return lines.join('\n');
|
|
149
|
-
}
|
|
150
|
-
/**
|
|
151
|
-
* Format violation details
|
|
152
|
-
*/
|
|
153
|
-
function formatViolationDetails(violation, uri, pattern) {
|
|
154
|
-
const lines = [];
|
|
155
|
-
const severityIcon = getSeverityIcon(violation.severity);
|
|
156
|
-
lines.push(`${severityIcon} Violation Details`);
|
|
157
|
-
lines.push('');
|
|
158
|
-
lines.push(`Message: ${violation.message}`);
|
|
159
|
-
lines.push(`Severity: ${violation.severity}`);
|
|
160
|
-
lines.push(`Location: ${getFileName(uri)}:${violation.range.start.line + 1}:${violation.range.start.character + 1}`);
|
|
161
|
-
lines.push('');
|
|
162
|
-
if (pattern) {
|
|
163
|
-
lines.push(`Pattern: ${pattern.name ?? violation.patternId}`);
|
|
164
|
-
if (pattern.category) {
|
|
165
|
-
lines.push(`Category: ${pattern.category}`);
|
|
166
|
-
}
|
|
167
|
-
if (pattern.description) {
|
|
168
|
-
lines.push(`Description: ${pattern.description}`);
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
else {
|
|
172
|
-
lines.push(`Pattern ID: ${violation.patternId}`);
|
|
173
|
-
}
|
|
174
|
-
return lines.join('\n');
|
|
175
|
-
}
|
|
176
|
-
/**
|
|
177
|
-
* Group violations by severity
|
|
178
|
-
*/
|
|
179
|
-
function groupBySeverity(violations) {
|
|
180
|
-
const groups = {
|
|
181
|
-
error: [],
|
|
182
|
-
warning: [],
|
|
183
|
-
info: [],
|
|
184
|
-
hint: [],
|
|
185
|
-
};
|
|
186
|
-
for (const v of violations) {
|
|
187
|
-
const severity = v.violation.severity;
|
|
188
|
-
if (severity in groups) {
|
|
189
|
-
groups[severity].push(v);
|
|
190
|
-
}
|
|
191
|
-
else {
|
|
192
|
-
groups.hint.push(v);
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
return groups;
|
|
196
|
-
}
|
|
197
|
-
/**
|
|
198
|
-
* Group violations by pattern
|
|
199
|
-
*/
|
|
200
|
-
function groupByPattern(violations) {
|
|
201
|
-
const groups = new Map();
|
|
202
|
-
for (const v of violations) {
|
|
203
|
-
const patternId = v.violation.patternId;
|
|
204
|
-
const group = groups.get(patternId) ?? [];
|
|
205
|
-
group.push(v);
|
|
206
|
-
groups.set(patternId, group);
|
|
207
|
-
}
|
|
208
|
-
return groups;
|
|
209
|
-
}
|
|
210
|
-
/**
|
|
211
|
-
* Group violations by file
|
|
212
|
-
*/
|
|
213
|
-
function groupByFile(violations) {
|
|
214
|
-
const groups = new Map();
|
|
215
|
-
for (const v of violations) {
|
|
216
|
-
const group = groups.get(v.uri) ?? [];
|
|
217
|
-
group.push(v);
|
|
218
|
-
groups.set(v.uri, group);
|
|
219
|
-
}
|
|
220
|
-
return groups;
|
|
221
|
-
}
|
|
222
|
-
/**
|
|
223
|
-
* Get violation statistics
|
|
224
|
-
*/
|
|
225
|
-
function getViolationStatistics(violations) {
|
|
226
|
-
const bySeverity = {};
|
|
227
|
-
const byPattern = {};
|
|
228
|
-
const byFile = {};
|
|
229
|
-
for (const v of violations) {
|
|
230
|
-
bySeverity[v.violation.severity] = (bySeverity[v.violation.severity] ?? 0) + 1;
|
|
231
|
-
byPattern[v.violation.patternId] = (byPattern[v.violation.patternId] ?? 0) + 1;
|
|
232
|
-
byFile[v.uri] = (byFile[v.uri] ?? 0) + 1;
|
|
233
|
-
}
|
|
234
|
-
return {
|
|
235
|
-
total: violations.length,
|
|
236
|
-
bySeverity,
|
|
237
|
-
byPattern,
|
|
238
|
-
byFile,
|
|
239
|
-
};
|
|
240
|
-
}
|
|
241
|
-
/**
|
|
242
|
-
* Get severity icon
|
|
243
|
-
*/
|
|
244
|
-
function getSeverityIcon(severity) {
|
|
245
|
-
switch (severity) {
|
|
246
|
-
case 'error': return '🔴';
|
|
247
|
-
case 'warning': return '🟡';
|
|
248
|
-
case 'info': return '🔵';
|
|
249
|
-
case 'hint': return '💡';
|
|
250
|
-
default: return '⚪';
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
/**
|
|
254
|
-
* Get file name from URI
|
|
255
|
-
*/
|
|
256
|
-
function getFileName(uri) {
|
|
257
|
-
return uri.split('/').pop() ?? uri;
|
|
258
|
-
}
|
|
259
|
-
//# sourceMappingURL=show-violations.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"show-violations.js","sourceRoot":"","sources":["../../src/commands/show-violations.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Code Actions Handler
|
|
3
|
-
*
|
|
4
|
-
* Provides code actions (quick fixes) for pattern violations.
|
|
5
|
-
* Supports quick fixes, refactoring actions, and source actions.
|
|
6
|
-
*
|
|
7
|
-
* @requirements 27.4 - THE LSP_Server SHALL provide code actions for quick fixes
|
|
8
|
-
*/
|
|
9
|
-
import type { Connection, TextDocuments, CodeAction, CodeActionParams } from 'vscode-languageserver';
|
|
10
|
-
import type { TextDocument } from 'vscode-languageserver-textdocument';
|
|
11
|
-
import type { DiagnosticsHandler } from './diagnostics.js';
|
|
12
|
-
interface Logger {
|
|
13
|
-
error(message: string): void;
|
|
14
|
-
warn(message: string): void;
|
|
15
|
-
info(message: string): void;
|
|
16
|
-
debug(message: string): void;
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Code actions handler interface
|
|
20
|
-
*/
|
|
21
|
-
export interface CodeActionsHandler {
|
|
22
|
-
/** Handle code action request */
|
|
23
|
-
onCodeAction(params: CodeActionParams): CodeAction[] | null;
|
|
24
|
-
/** Handle code action resolve request */
|
|
25
|
-
onCodeActionResolve(codeAction: CodeAction): CodeAction;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Create the code actions handler
|
|
29
|
-
*/
|
|
30
|
-
export declare function createCodeActionsHandler(_connection: Connection, _documents: TextDocuments<TextDocument>, diagnosticsHandler: DiagnosticsHandler, logger: Logger): CodeActionsHandler;
|
|
31
|
-
export {};
|
|
32
|
-
//# sourceMappingURL=code-actions.d.ts.map
|