analyze method
Analyzes a file and returns LSP diagnostics.
Implementation
Future<List<Diagnostic>> analyze(String filePath, {String? content}) async {
final diagnostics = <Diagnostic>[];
// Resolve the file
final result = await _sourceLoader.resolveFile(filePath);
if (result == null) {
return diagnostics;
}
final unit = result.unit;
// 1. Metrics-based diagnostics
diagnostics.addAll(_analyzeMetrics(unit));
// 2. Abstract interpretation diagnostics
diagnostics.addAll(_analyzeAbstractInterpretation(unit));
// 3. Datalog-based diagnostics
diagnostics.addAll(_analyzeDatalog(unit));
// 4. Style rules diagnostics
diagnostics.addAll(_analyzeStyleRules(unit, filePath));
return diagnostics;
}