analyze method

  1. @override
Future<AnalysisResult> analyze(
  1. Code code
)
override

Analyzes the code and generates new list of issues.

Implementation

@override
Future<AnalysisResult> analyze(Code code) async {
  final client = http.Client();

  final response = await client.post(
    Uri.parse(_url),
    body: json.encode({
      'source': code.text,
    }),
    encoding: utf8,
  );

  final decodedResponse = jsonDecode(utf8.decode(response.bodyBytes)) as Map;
  final issueMaps = decodedResponse['issues'];

  if (issueMaps is! Iterable || (issueMaps.isEmpty)) {
    return const AnalysisResult(issues: []);
  }

  final issues = issueMaps
      .cast<Map<String, dynamic>>()
      .map(issueFromJson)
      .toList(growable: false);
  return AnalysisResult(issues: issues);
}