analyze method

Future<List<Diagnostic>> analyze(
  1. String filePath, {
  2. String? content,
})

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;
}