analyzeSync method

List analyzeSync(
  1. String content
)

Synchronous analysis. Note: This spawns a new process for each file.

Implementation

List<dynamic> analyzeSync(String content) {
  final binary = _getBinaryPathSync();
  if (binary == null) return [];

  Directory? tempDir;
  try {
    tempDir = Directory.systemTemp.createTempSync('rust_lint_');
    final tempFile = File(p.join(tempDir.path, 'temp.dart'));
    tempFile.writeAsStringSync(content);

    final result = Process.runSync(
      binary,
      ['--path', tempFile.path, '--format', 'json'],
      stdoutEncoding: utf8,
    );

    if (result.exitCode == 0) {
      final output = result.stdout.toString();
      if (output.trim().isNotEmpty) {
        return jsonDecode(output) as List<dynamic>;
      }
    } else {
      // print("Linter failed: ${result.stderr}");
    }
  } catch (e) {
    // print("Linter execution error: $e");
  } finally {
    try {
      tempDir?.deleteSync(recursive: true);
    } catch (_) {}
  }

  return [];
}