flutter_quality_analyzer 2.2.2
flutter_quality_analyzer: ^2.2.2 copied to clipboard
CLI analyzer for Flutter/Dart dependencies, security, coverage, and AI health summary.
Changelog #
All notable changes to flutter_quality_analyzer are documented here.
Format follows Keep a Changelog.
2.2.2 - 2026-04-01 #
Fixed #
- Shortened package description in
pubspec.yamlto satisfy pub.dev limits - Removed invalid
homepageandrepositoryURLs frompubspec.yaml - Added top-level
example/flutter_quality_analyzer_example.dartso pub.dev detects an example
2.2.1 - 2026-03-31 #
Changed #
- Completely rewrote README to showcase all v2.2.0 features: sample output table, full command reference, security / fix / discontinued / AI provider examples, API key setup links, and exit-code table
- Updated
pubspec.yamldescription to reflect the full current feature set
2.2.0 - 2026-03-31 #
Added #
- Discontinued package detection — pub.dev
isDiscontinuedflag is now checked for every package; discontinued packages are shown as⛔ Discontinuedin the table with a→ use <replacement>hint when available - Security vulnerability check (
--security/-s) — queries the free OSV API (no key needed) in a single batch request; vulnerable packages are flagged as🔒 VULN (HIGH)in the table with severity graded from CVSSv3 scores (CRITICAL / HIGH / MEDIUM / LOW); a dedicated Security section is printed in the console summary - Auto-fix outdated constraints (
--fix) — rewrites version constraints for all outdated packages inpubspec.yamlto^<latestVersion>in-place, preserving all comments and formatting; rundart pub getafterwards to apply - Dry-run mode (
--dry-run) — preview--fixchanges without writing to disk; prints exactly which constraints would be updated VulnerabilityResultandVulnerabilitymodels insrc/models/OsvClientservice insrc/services/(batch OSV API, no key required)FixServiceservice insrc/services/(in-place pubspec.yaml rewrite)- Summary now shows
⛔ Discontinuedand🔒 Vulnerablecounts - CI exit code now non-zero when discontinued or vulnerable packages are found
Changed #
ConsoleReporter.printSummarygainsdiscontinuedandvulnerablenamed paramsJsonReporter.printSummarygainsdiscontinuedandvulnerablenamed paramsJsonReporter._resultToMapincludesisDiscontinued,replacedBy,vulnerabilityCount,highestSeverityfields- Table STATUS column prioritises: Error → Discontinued → Vulnerable → Outdated → OK
2.1.1 - 2026-03-31 #
Fixed #
- Groq AI summary was failing with
error 400: switched from deprecatedllama3-70b-8192(8k context) tollama-3.3-70b-versatile(131k context) - AI prompt now trims large package lists: outdated + failed packages are always included; up-to-date packages capped at 15 to keep token usage lean across all providers
- Groq error responses now surface the actual error message from the API body instead of just the HTTP status code, making failures easier to diagnose
2.1.0 - 2026-03-31 #
Added #
- Groq AI provider support (
--ai-provider groq --groq-key YOUR_KEY) as a free alternative to Gemini — usesllama-3.3-70b-versatilevia the OpenAI-compatible API --ai-providerCLI flag (gemini|groq, default:gemini) with validation- Automatic Gemini → Groq fallback: if Gemini returns a rate-limit error and a
--groq-keyis also supplied, the summary is retried with Groq transparently AiProviderabstract interface for provider-agnostic AI callsAiProviderFactory— factory that instantiates the correct provider by nameGeminiProvider— extracted Gemini logic fromAiSummaryServiceinto its own classGroqProvider— new Groq implementation
Fixed #
- LICENSE column was always
-: pub.dev removed thelicensefield fromlatest.pubspec; license is now correctly parsed from thetagsarray in the score endpoint (e.g.license:mit→MIT,license:bsd-3-clause→BSD-3-Clause) - Popularity score (
POP) was always?:popularityScorewas removed from the pub.dev API; popularity is now derived fromdownloadCount30Days(scaled to 0–100, where 1 M+ downloads = 100%) --ai-providerflag now validates allowed values (gemini|groq); invalid values previously silently fell through to Gemini- Missing AI key now exits with code 1 instead of silently returning
Changed #
AiSummaryService.generateSummarysignature updated: replaced singleapiKeyparam withprovider,geminiKey, andgroqKeyparamsAiSummaryServiceno longer owns anhttp.Client— each provider manages its own- Removed
AiSummaryService.dispose()(no longer needed) - Banner and help text updated to reflect multi-provider support
2.0.1 - 2024-01-04 #
Fixed #
- LICENSE column now correctly fetched from
latest.pubspec.licensefield - Popularity score (
POP) now correctly parsed from pub.dev score API - Version comparison now handles build metadata (e.g.
6.1.5+1) correctly - Gemini rate limit now retries automatically (up to 3 times, 30s apart) instead of failing immediately
2.0.0 - 2024-01-03 #
Added #
- License detection — fetched from pub.dev API for every package
- pub points and popularity score columns in output table
- Like count from pub.dev
- Test coverage analyzer — counts test files vs source files, grades the project
- AI-powered health summary using Google Gemini API (free tier)
- New CLI flags:
--coverage,--ai-summary,--gemini-key VersionCheckResult.copyWith()for immutable field updates
Changed #
PubDevClient.fetchLatestVersionrenamed tofetchPackageInfo(fetches more data)- Output table now shows LICENSE, PTS (pub points), POP (popularity) columns
- Banner updated to v2.0.0