flutter_quality_analyzer 2.2.3 copy "flutter_quality_analyzer: ^2.2.3" to clipboard
flutter_quality_analyzer: ^2.2.3 copied to clipboard

CLI analyzer for Flutter/Dart dependencies, security, coverage, and AI health summary.

example/flutter_quality_analyzer_example.dart

import 'package:flutter_quality_analyzer/flutter_quality_analyzer.dart';

/// This example demonstrates how to use flutter_quality_analyzer
/// programmatically in your own Dart code.
///
/// To run this example:
///   dart run example/flutter_quality_analyzer_example.dart
///
/// Or use the CLI directly (after `dart pub global activate flutter_quality_analyzer`):
///   fqa --path /path/to/your/flutter_project
///   fqa --path . --coverage
///   fqa --path . --security
///   fqa --path . --ai-summary --gemini-key YOUR_KEY
///   fqa --path . --coverage --security --ai-summary --gemini-key YOUR_KEY
void main() async {
  // ─── 1. Read pubspec.yaml from a Flutter project ──────────────────────────
  final reader = PubspecReader();
  final result = reader.read('.'); // '.' = current directory

  if (result.isFailure) {
    Logger.error(result.error!);
    return;
  }

  final pubspec = result.value!;
  Logger.info('Project : ${pubspec.projectName}');
  Logger.info('Found   : ${pubspec.dependencies.length} dependencies');

  if (pubspec.dependencies.isEmpty) {
    Logger.warn('No dependencies to analyze.');
    return;
  }

  // ─── 2. Fetch versions + license + pub score from pub.dev ─────────────────
  final client = PubDevClient();
  final checker = VersionChecker();

  Logger.info('Checking versions, licenses & scores from pub.dev...');

  final results = await checker.checkAll(
    dependencies: pubspec.dependencies,
    client: client,
  );

  client.dispose();

  // ─── 3. Analyze test coverage ─────────────────────────────────────────────
  final coverage = CoverageAnalyzer().analyze('.');

  // ─── 4. Print results to console ──────────────────────────────────────────
  final reporter = ConsoleReporter();
  reporter.report(results);

  final outdated = results.where((r) => r.isOutdated).length;
  final upToDate =
      results.where((r) => !r.isOutdated && r.error == null).length;
  final failed = results.where((r) => r.error != null).length;

  reporter.printSummary(
    total: results.length,
    outdated: outdated,
    upToDate: upToDate,
    failed: failed,
  );

  reporter.printCoverage(coverage);

  // ─── 5. Optional: check for known vulnerabilities via OSV ─────────────────
  // final osvMap = await OsvClient().checkAll(results, resolvedVersions);

  // ─── 6. Optional: AI summary via Gemini or Groq (needs a free API key) ────
  // Get a free Gemini key at: https://aistudio.google.com/app/apikey
  // Get a free Groq key at:   https://console.groq.com
  //
  // final summaryResult = await AiSummaryService().generateSummary(
  //   projectName: pubspec.projectName,
  //   results: results,
  //   coverage: coverage,
  //   provider: 'gemini',
  //   geminiKey: 'YOUR_GEMINI_API_KEY',
  // );
  //
  // if (summaryResult.isSuccess) {
  //   reporter.printAiSummary(summaryResult.value!);
  // }

  // ─── 7. Or use JsonReporter for machine-readable output ───────────────────
  // final jsonReporter = JsonReporter();
  // jsonReporter.printFullReport(
  //   projectName: pubspec.projectName,
  //   results: results,
  //   total: results.length,
  //   outdated: outdated,
  //   upToDate: upToDate,
  //   failed: failed,
  //   discontinued: 0,
  //   vulnerable: 0,
  //   coverage: coverage,
  // );
}
1
likes
150
points
56
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

CLI analyzer for Flutter/Dart dependencies, security, coverage, and AI health summary.

Repository (GitHub)
View/report issues

License

MIT (license)

Dependencies

ansi_styles, args, http, pub_semver, yaml

More

Packages that depend on flutter_quality_analyzer