fcheck 1.0.8 copy "fcheck: ^1.0.8" to clipboard
fcheck: ^1.0.8 copied to clipboard

Code quality analysis for Flutter and Dart projects with architecture, maintainability, and safety checks, deterministic reports, and compliance scoring.

Changelog #

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

1.0.8 - 2026-03-06 #

Added #

  • Dashboard now reports test inventory metrics including touched app souce targets, test cases.

Changed #

  • Reworked dashboard presentation to include platform support and test-metrics sections with clearer report grouping.
  • Expanded literals reporting and console formatting for --literals, including full listing support and improved colorized output readability.
  • Refined project metrics and pubspec parsing to improve release-facing report accuracy.

1.0.7 - 2026-03-05 #

Changed #

  • Updated pubspec.yaml description to a search-friendly length.
  • Simplified ignore-inventory console formatting by replacing embedded newline literals with explicit blank-line prints.
    • removed text block Type: Analyzer skips (legacy ignores.*: true)
    • removed legacyIgnores from ignore-inventory JSON payload sections (config, groupedByType, totals)
  • Fixed --ignores file discovery to respect default analysis exclusions (for example .dart_tool/) and configured .fcheck excludes.
  • Auto-excluded generated localization root file app_localizations.dart from documentation and code-size analyzers.
  • Simplified suppressions console output for ignore directives:
    • compact one-line output for ignore-only suppressions
    • added inline guidance: use arg --ignores for details
  • Suppressed passive hardcoded-strings summary when localization is OFF and detected count is 0 (omit 0 hardcoded strings detected ... line).

1.0.6 - 2026-03-05 #

Changed #

  • Updated README.md description to highlight 0-100% compliance scoring system and improve marketing appeal for Pub.dev
  • Enhanced main description to emphasize scoring system and CI/CD pipeline value for Flutter engineers

Added #

  • Ignore Inventory Analysis: New --ignores CLI flag to inspect and analyze all ignore/suppression mechanisms in the project
  • Comprehensive Suppression Reporting: Groups results by suppression type (exclude, analyzer skips, and Dart comment directive type) for better cleanup prioritization
  • JSON Support for Ignore Analysis: Full JSON output support for ignore inventory with --ignores --json

1.0.5 - 2026-03-02 #

Added #

  • Dashboard now reports test coverage discovery metrics (test directories/files/Dart files/cases).
  • Dashboard now reports detected platform support (Android, iOS, macOS, Windows, Linux, Web).

Changed #

  • Reorganized dashboard layout to improve metrics readability.
  • Improved dead-code detection to better handle interpolation usage and reduce false positives for exported library APIs.

1.0.4 - 2026-03-01 #

Added #

  • Dashboard now reports the total number of widgets (Stateless | Stateful)

Changed #

  • Upgraded analyzer dependency to analyzer: ^11.0.0.
  • Improved parsing for // ignore: ... fcheck_* ... directives.
  • Increased overall automated test coverage.

1.0.3 - 2026-02-27 #

Added #

  • --literals CLI mode to print a focused literals inventory (console and JSON).

Changed #

  • Literals console section was redesigned for readability:
    • Shows aligned summary rows for strings and numbers.
    • Uses "Unique strings found" and "Unique numbers found" headings for inventory lists.
    • Lists hardcoded strings first, including file:line locations.
  • String literal inventory now ignores directive URIs (import, export, part, library).
  • Duplicate-number ratio now excludes allowed values -1, 0, and 1.
  • Number literal list ordering is now deterministic and numeric-aware for equal-frequency entries.

Fixed #

  • Discovers more cases of Magic Numbers

1.0.2 - 2026-02-26 #

Changed #

  • Dead code analyzer now treats Flutter @Preview functions/methods (including prefixed annotations like @ui.Preview) as externally used, so they are not reported as dead functions.

1.0.1 - 2026-02-25 #

Changed #

  • Exclude app_localization*.dart from large code file analyzer.
  • Softer Orange and Red overlay in the SVG diagrams.
  • update package "analyzer 10.2.0"

1.0.0 - 2026-02-24 #

Changed #

  • ๐Ÿ’ฅ BREAKING CLI Arguments: Replaced legacy graph/export flags with normalized names:
    • --svgfiles -> --svg-files
    • --svgfolder -> --svg-folders
    • --svgloc -> --svg-loc
    • --out -> --output
    • --out-svg-files -> --output-svg-files
    • --out-svg-folders -> --output-svg-folders
    • --out-svg-loc -> --output-svg-loc
    • --out-mermaid -> --output-mermaid
    • --out-plantuml -> --output-plantuml
  • ๐Ÿ“„ Output Filenames: Default generated artifact names are unchanged in 1.0.0:
    • fcheck_files.svg
    • fcheck_folders.svg
    • fcheck_loc.svg
    • fcheck.mmd
    • fcheck.puml
  • ๐Ÿ“ Docs/Tests Alignment: Updated README, RULES docs, and CLI parsing tests for the v1.0.0 contract.

0.9.17 - 2026-02-23 #

Changed #

  • ๐Ÿ“ฅ Source Sorting Auto-fix: Improved import directive normalization during --fix by rewriting relative imports under lib/ to package:<current-package>/... before sorting, while preserving directive suffixes.
  • ๐Ÿงญ Layers Console Reporting: Refined layers output so cycle issues remain failures while non-cycle folder-layer upward dependencies are reported as warnings with clearer, colorized path details.

0.9.16 - 2026-02-21 #

Added #

  • ๐Ÿ”ง Source Sorting Auto-fix: --fix now also reorders import directives using analyzer-style grouping and alphabetical ordering.

Changed #

  • ๐Ÿšซ Generated Dart Handling: *.g.dart files are now automatically excluded from non-actionable analyzer findings while still contributing where required for project-wide analysis.
  • ๐Ÿ“ Default Exclusions: Added integration_test to default excluded directories for file discovery and metrics scanning.

0.9.15 - 2026-02-19 #

Added #

  • ๐Ÿ“ Code Size Analyzer: New analyzer for LOC threshold violations across files, classes, functions, and methods.
  • โš™๏ธ Configurable Code Size Thresholds: Added .fcheck options under analyzers.options.code_size:
    • max_file_loc (default: 900)
    • max_class_loc (default: 800)
    • max_function_loc (default: 700)
    • max_method_loc (default: 500)
  • ๐Ÿ–ผ๏ธ Code Size SVG Export: Added --svgsize CLI flag to generate fcheck_code_size.svg treemap output.

Changed #

  • ๐Ÿ“ˆ Compliance Scoring: Code size now contributes to analyzer scoring and focus area suggestions.

0.9.14 - 2026-02-18 #

Added #

  • ๐Ÿ“Š Dashboard now reports
    • class, method, and function counts.
    • pubspec dependency counts.

Changed #

  • ๐Ÿ–ฅ๏ธ Improved CLI output readability with better path and filename coloring.
  • ๐Ÿ”ข --list now accepts values from 0 to 999.

Fixed #

  • ๐Ÿ› Corrected line reporting in "one class per file" output.
  • ๐Ÿงน Resolved all fcheck warnings reported by fcheck on this codebase.

0.9.13 - 2026-02-17 #

Added #

  • ๐Ÿงน Dead Code Method Detection: Extended dead code analysis to detect unused methods in classes, mixins, enums, and extensions - not just top-level functions.
  • ๐Ÿ“ Documentation: Updated README.md and RULES_DEAD_CODE.md to reflect the new method detection capability.

Changed #

  • ๐Ÿ–ผ๏ธ SVG Folder Improvements: Enhanced folder dependency visualization with snug gutters and improved edge positioning for cleaner graphs.

0.9.12 - 2026-02-16 #

Fixed #

  • ๐Ÿ› Layers Analyzer False Positives: Fixed incorrect folder layer violation detection that was flagging valid parent-child folder dependencies as violations.
    • Changed folder layer computation from MIN to MAX to represent the deepest position of any file in a folder
    • Added logic to allow parent folders to depend on their child subfolders without triggering violations
    • Removed false cross-layer dependency violations that were causing incorrect warnings

Changed #

  • ๐Ÿ“ Documentation: Updated RULES_LAYERS.md to document the new folder layer assignment behavior and violation detection rules
  • ๐Ÿ”„ Terminology: Changed "higher/lower layers" to "above/below" for clearer understanding of layer hierarchy

0.9.11 - 2026-02-16 #

Added #

  • ๐Ÿ“Š Enhanced Metrics Analyzer: New MetricsAnalyzer class with scoring logic, focus area detection, and compliance score calculation.
  • ๐Ÿ“ App Strings Analysis: New AppStrings class to extract and analyze application string constants for better code understanding.
  • ๐Ÿงช Improved Test Performance: Optimized test execution with faster test setup and teardown.

Changed #

  • ๐Ÿ–ฅ๏ธ Console Layer Violations: Improved console reporting for layer folder violations with detailed violation information.
  • ๐Ÿ”ง Hardcoded Strings Logic: Improved hardcoded string detection to also work for Dart CLI applications (not just Flutter).
  • ๐Ÿ› ๏ธ Publish Script: Updated tool/publish.sh to use Flutter test instead of Dart test for better compatibility.
  • โœ… Code Coverage: Increased test coverage to 87%.

0.9.10 - 2026-02-12 #

Added #

  • ๐Ÿ“š Added a documentation analyzer to detect missing docs for public APIs and complex private functions.

Changed #

  • ๐ŸŽจ Updated dashboard ordering and styling, including swapped duplicate-code/dependencies columns and red rendering for comment ratios below 10%.

0.9.9 - 2026-02-12 #

Added #

  • ๐ŸŽฏ Added a deterministic compliance scorecard with overall score, focus area, and suggested next investment area.
  • ๐Ÿ“Š Included compliance score details in JSON output (summary.complianceScore and compliance block).
  • ๐Ÿ†˜ Added --help-score CLI flag to show compliance scoring guidance.

Changed #

  • ๐Ÿ–ฅ๏ธ Refined CLI console output layout to include a scorecard section and a denser dashboard summary.
  • โœ… Expanded scoring-focused CLI and metrics test coverage.

Fixed #

  • ๐Ÿ“ Corrected the dashboard typos.

0.9.8 - 2026-02-10 #

Added #

  • ๐Ÿ†˜ Added --help-ignore CLI flag to show per-analyzer ignore directives and .fcheck ignore setup guidance.

Changed #

  • โ™ป๏ธ Reused layers analysis results from the main analysis pass when generating graph outputs, instead of running a second layers-analysis traversal.

Fixed #

  • โšก Removed redundant CLI layers-analysis work during regular runs, reducing unnecessary overhead while preserving output behavior.

0.9.7 - 2026-02-10 #

Added #

  • ๐Ÿงฉ Shared dependency URI utilities for consistent project import/export resolution across analyzers.

Changed #

  • ๐Ÿ–ฅ๏ธ Improved console list formatting for issue lines and duplicate-code alignment.
  • ๐Ÿ”ง Refactored analyzer, graph, and config internals to remove duplicated logic and keep behavior consistent.

Fixed #

  • ๐Ÿงญ Project metadata resolution now correctly infers package name/version/type when analyzing from folders without a root pubspec.yaml, and returns unknown for ambiguous multi-pubspec workspaces.
  • โœ… Updated duplicate-code output test expectations after formatting improvements.

0.9.6 - 2026-02-10 #

Added #

  • ๐Ÿงฌ Code Duplication Detection
    • Duplicate-code analysis for similar executable blocks (functions/methods/constructors) using normalized token comparison.
    • Added file-level ignore support with // ignore: fcheck_duplicate_code.
    • Support for .fcheck options for similarity_threshold, min_tokens, and min_non_empty_lines.

Changed #

  • README positioning as an 8-in-1 deterministic workflow.

Fixed #

  • removed remaining magic-number literals in duplicate-code analyzer utilities by introducing named constants

0.9.5 - 2026-02-09 #

Added #

  • support for .fcheck config file

Fixed #

  • normalize input path

0.9.4 - 2026-02-09 #

Added #

  • โœ… Added more test, code coverage is now at 81%

Changed #

  • ๐Ÿงญ Layers Analyzer now runs through the unified single directory pass for more consistent dependency analysis.
  • ๐Ÿ“˜ Updated RULES_LAYERS.md guidance to match the latest layers analysis behavior.
  • ๐Ÿ–ฅ๏ธ Refactored CLI console input/output into focused modules and simplified output rendering paths.
  • ๐ŸŽจ SVG graph exports now use adaptive text sizing to keep labels and titles readable across different graph densities.

0.9.3 - 2026-02-08 #

Added #

  • ๐Ÿงพ Control list output (console only)
fcheck --list none       # summary only
fcheck --list partial    # top 10 per list (default)
fcheck --list full       # full lists
fcheck --list filenames  # unique file names only

Changed #

  • ๐Ÿ“š Test Code Coverage now at 76%

0.9.2 - 2026-02-08 #

Fixed #

  • ๐Ÿงฐ Dead Code Analyzer: Treat generic class declarations (e.g. class Box<T>) as their base class name so usages like Box<int> no longer get flagged as dead classes.

0.9.1 - 2026-02-08 #

Fixed #

  • ๐Ÿงฐ Dead Code Analyzer: Avoid flagging constructor field parameters (this.foo) as unused when they initialize class properties.
  • ๐Ÿงฉ Dead Code Analyzer: Avoid flagging parameters in @override methods or abstract/external signatures with empty bodies.

0.9.0 - 2026-02-08 #

Added #

  • ๐Ÿงน Dead Code Analyzer: Detects dead files, unused top-level classes/functions, and unused local variables using dependency reachability and symbol usage tracking.
  • ๐Ÿšซ Dead Code Ignore: New // ignore: fcheck_dead_code directive for file-level and node-level suppression.
  • ๐Ÿ“š Rules: Added RULES_DEAD_CODE.md documentation.

Changed #

  • ๐Ÿงฉ Layers Dependency Graph: Conditional imports/exports (if (dart.library...)) are now included in dependency resolution.
  • ๐Ÿ“Š Metrics Output: Added dead code counts and issue lists to CLI and JSON reports.

0.8.6 - 2026-02-07 #

Added #

  • ๐Ÿงต Hardcoded Strings: Added support for additional ignore comments (hardcoded.string, hardcoded.ok, and avoid_hardcoded_strings_in_widgets) to suppress specific string literals.

Changed #

  • ๐Ÿ”ข CLI Output: Counts now use comma separators for thousands grouping.

0.8.5 - 2026-02-06 #

Changed #

  • ๐Ÿ” Secrets Detection: Generic secrets now extract assignment values (including triple-quoted strings) and apply entropy/length checks to the value, reducing false positives on full-line scans. GH https://github.com/vteam-com/fCheck/issues/2
  • ๐Ÿงพ CLI Output: Standardized status markers ([โœ“], [!], [โœ—]) and clarified report messaging, including explicit secrets counts and always showing excluded file counts.
  • ๐Ÿ“š Docs: Updated rules and comments.

Removed #

  • ๐Ÿงน Dead Code: Dropped legacy per-analyzer classes now superseded by the unified delegate-based analyzer runner.

0.8.4 - 2026-02-06 #

Added #

  • ๐Ÿ“š Rules: Added per-domain rule documents for:
    • hardcoded strings,
    • magic numbers,
    • secrets,
    • code sorting,
    • layers

Changed #

  • ๐Ÿง  Hardcoded String Detection: Improved Flutter vs Dart project handling to make string detection rules project-aware
  • ๐Ÿงน Analyzer Refactor: Reduced duplication across analyzers and utilities.

0.8.3 - 2026-02-04 #

Added #

  • ๐Ÿ” Hidden Folder Filtering: Automatically exclude files in hidden directories (starting with '.') from analysis
  • ๐Ÿ“Š Excluded Files Listing: New --excluded/-x CLI flag to list all excluded files and directories
  • ๐Ÿ“‹ Comprehensive Exclusion Reporting: Display excluded Dart files, non-Dart files, and directories separately
  • ๐ŸŽฏ JSON Support for Exclusions: Full JSON output support for excluded files listing
  • ๐Ÿ“š Enhanced Documentation: Updated README.md with comprehensive documentation for excluded files functionality

Changed #

  • โšก Unified Directory Scanning: Enhanced scanDirectory method to return excluded file/folder counts in addition to regular metrics
  • ๐Ÿ—๏ธ File Enumeration Logic: Updated listDartFiles method to skip hidden directories consistently
  • ๐Ÿ“Š Performance Optimization: Maintained 67-72% performance improvement while adding new exclusion tracking

0.8.2 - 2026-02-03 #

Changed #

  • ๐Ÿ“˜ Clarified the README "Magic Numbers" guidance so it now explains the new definition, outlines when literals are allowed (descriptive const/static/final declarations and annotations/const expressions), and shows how to fix detections by replacing inline literals with named constants before referencing the opt-out directive.

0.8.1 - 2026-02-02 #

Added #

  • โฑ๏ธ Execution Timing: Added elapsed time display in the footer showing how long the analysis took to run
  • ๐Ÿ“Š Performance Visibility: Footer now shows "fCheck completed (X.XXs)" to help users track analysis performance
  • ๐ŸŽฏ JSON Compatibility: Timing display is automatically suppressed in JSON output mode to maintain clean format

0.8.0 - 2026-02-02 #

โšก Major Performance Optimization #

  • ๐Ÿš€ Unified Analysis Architecture: Implemented single-pass file traversal with delegate pattern, eliminating redundant file operations and AST parsing
  • ๐Ÿ“ˆ 67-77% Performance Improvement: Analysis now runs 67-77% faster by performing one file discovery and one AST parse per file shared across all analyzers
  • ๐Ÿ”„ Delegate Pattern: All analyzers (HardcodedString, MagicNumber, SourceSort, Layers, Secrets) now work from shared parsed file context
  • ๐ŸŽฏ Zero Breaking Changes: All existing functionality preserved with dramatic performance improvements

๐Ÿ—๏ธ Architecture Refactoring #

  • ๐Ÿ“ Reorganized Analyzer Structure: Moved all analyzers to src/analyzers/ directory for better organization
  • ๐Ÿ”ง AnalyzerRunner: New unified analysis engine replaces individual analyzer traversals
  • ๐Ÿ“‹ AnalysisFileContext: Shared file context eliminates redundant I/O operations
  • ๐ŸŽจ Cleaner Codebase: Removed old individual analyzer strategy, fully migrated to unified approach

๐Ÿ” Secret Detection #

  • ๐Ÿ›ก๏ธ Advanced Secret Analyzer: Comprehensive secret detection rules
  • ๐Ÿ”‘ Multiple Secret Types: AWS keys, GitHub PATs, Stripe keys, Bearer tokens, Private keys, Email PII, High entropy strings
  • ๐Ÿ“Š Entropy-Based Detection: Advanced entropy calculation for unknown secret patterns
  • ๐ŸŽฏ Improved Accuracy: Better false positive reduction with configurable thresholds

๐Ÿงน Code Quality Improvements #

  • โœ… One Class Per File: Fixed violations in analyzer files by proper separation
  • ๐Ÿ“ Documentation: Added comprehensive documentation for all new unified analysis components

Changed #

  • โšก Default Analysis Method: analyze() now uses unified high-performance approach automatically
  • ๐Ÿ—‚๏ธ File Organization: Restructured analyzer directories for better maintainability
  • ๐Ÿ“Š Result Processing: Optimized result aggregation with type-safe handling

0.7.3 - 2026-02-01 #

Added #

  • ๐Ÿ” Enhanced pubspec.yaml Detection: Implemented parent directory traversal to find pubspec.yaml when analyzing from subdirectories, ensuring project name and version are always available regardless of analysis starting point
  • ๐Ÿ“Š Improved SVG Folder Display: Enhanced folder-based SVG visualization to show project name, version, and input folder information instead of generic "." root folder
  • ๐ŸŽจ Smart Folder Title Formatting: Implemented intelligent title display - shows only "Project vVersion" when folder name matches project name, or multi-line format "Folder\nProject vVersion" when they differ

Changed #

  • ๐Ÿ“ Folder Name Extraction: Improved folder name detection logic using proper path handling to ensure accurate folder names in SVG outputs
  • ๐ŸŽฏ SVG Text Rendering: Enhanced SVG text rendering with proper multi-line support using <tspan> elements for better visual hierarchy

0.7.2 - 2026-01-31 #

Changed #

  • ๐Ÿ›ก๏ธ Default Localization Filtering: Automatically hide generated localization files (app_localizations_*.dart) from analysis and dependency graphs by default while keeping the main entry point to avoid cyclic dependency noise.
  • ๐Ÿงน Code Cleanup: Removed magic number violations across the codebase by introducing named constants for better maintainability.

0.7.1 - 2026-01-31 #

Added #

  • ๐ŸŽจ SVG Style Improvements: Enhanced CSS styles for SVG exports
  • ๐Ÿท๏ธ Badge Tooltips: Improved tooltip text for better clarity
  • ๐Ÿ“ Folder Layout: Refined virtual sub-folder logic for folder dependency graphs
  • ๐Ÿ“ Code Documentation: Updated internal comments for better maintainability

0.7.0 - 2026-01-30 #

Breaking change #

  • Unified Ignore Directive System: Replaced inconsistent ignore patterns with a standardized // ignore: fcheck_<domain> format across all analysis domains

Added #

  • ๐ŸŽฏ Generic Ignore Pattern: New standardized format // ignore: fcheck_<domain> for all ignore directives
  • ๐Ÿ”ง One Class Per File Ignore: Support for // ignore: fcheck_one_class_per_file to skip one-class-per-file rule for individual files
  • ๐Ÿงฎ Magic Number Ignore: Enhanced support for // ignore: fcheck_magic_numbers with consistent pattern matching
  • ๐Ÿ“ Hardcoded String Ignore: Improved `` directive handling
  • ๐Ÿ—๏ธ Layers Ignore: Added // ignore: fcheck_layers for layer architecture violations
  • ๐Ÿ“š Comprehensive Documentation: Updated all ignore directive examples and documentation

0.6.2 - 2026-01-29 #

Added #

  • ๐Ÿงฎ Magic Number Ignore: Support for // fcheck - ignore magic numbers comment directive to skip magic number analysis for individual files.

0.6.1 - 2026-01-29 #

Added #

  • ๐Ÿท๏ธ Tooltip Consistency: Standardized all edge tooltips to use "Source โ–ถ Target" format across all graph export formats

Changed #

  • โšก Performance: Reduced code duplication and improved maintainability of edge rendering logic

0.6.0 - 2026-01-29 #

Added #

  • ๐Ÿ”บ Triangular Directional Badges: New BadgeModel class with triangular badges that indicate dependency direction (incoming blue pointing west, outgoing green pointing east)
  • ๐Ÿ“ Enhanced Badge Design: Triangular badges with rounded corners, improved text positioning, and better visual alignment with dependency edges
  • ๐Ÿ“š Comprehensive Documentation: Added detailed DartDoc comments to BadgeModel class and all its methods
  • ๐Ÿ”„ Edge Alignment Fix: Updated SVG edge rendering to properly connect to triangular badge centers instead of old circular badge positions

Changed #

  • ๐ŸŽฏ Badge System Refactor: Complete refactor from circular badges to directional triangular badges with improved visual design
  • โšก Performance Improvements: Optimized badge rendering and edge calculations for better SVG generation

0.5.2 - 2026-01-29 #

Added #

  • ๐Ÿงฎ Magic Number Detection: New feature to detect numeric literals that should be expressed as named constants to make intent clearer

Changed #

  • ๐Ÿ”ง Replaced the build_runner-based version builder with a simple bash script that generates lib/src/models/version.dart from pubspec.yaml.

Added #

  • you can optionally add // fcheck: ignore-one-class-per-file to a file to ignore the one-class-per-file rule

0.5.1 - 2026-01-28 #

Changed #

  • ๐Ÿ”ง Replaced the build_runner-based version builder with a simple bash script that generates lib/src/models/version.dart from pubspec.yaml.

Added #

  • you can optionally add // fcheck: ignore-one-class-per-file to a file to ignore the one-class-per-file rule

0.5.0 - 2026-01-27 #

Breaking #

  • ๐Ÿ“ฆ Library API rename: package:fcheck/fcheck.dart now exposes AnalyzeFolder (old FCheck is deprecated alias). CLI flags/behavior are unchanged.

Changed #

  • ๐Ÿ“š Docs updated to reflect the public API and current source layout.
  • ๐Ÿงน Shared SVG helpers consolidated in svg_common.dart for both SVG generators (no CLI impact).

0.4.5 - 2026-01-27 #

Added #

  • ๐Ÿ“‹ Version Display: Added --version / -v flag to show fCheck CLI version
  • ๐Ÿท๏ธ Project Metadata: Analysis reports now include the project name and version from pubspec.yaml
  • ๐ŸŽฏ Enhanced CLI: Improved argument parsing with better positional vs named argument handling

0.4.4 - 2026-01-27 #

Changed #

  • โš ๏ธ/โŒ Localization-Aware Hardcoded Strings: Hardcoded strings now surface as errors (โŒ with sample listings) only when a project uses localization (l10n/AppLocalizations/.arb). Non-localized projects show a caution count (โš ๏ธ) without listing individual strings.
  • ๐Ÿ“„ Docs: README documents the new localization-aware hardcoded string behavior.

0.4.3 - 2026-01-26 #

Added #

  • Shared Diagram Helpers: Introduced graph_format_utils.dart to centralize label normalization, edge counts, and empty-graph stubs used by all diagram generators.

Changed #

  • Refactor: Mermaid and PlantUML generators now consume the shared helpers, reducing duplication and keeping node IDs/counters consistent.
  • Docs Refresh: Update comments and README visualization options for Mermaid/PlantUML outputs.

0.4.2 - 2026-01-24 #

Fixed #

  • ๐Ÿ› Dependency Detection: Fixed generator import dependencies not showing in bin/fcheck.dart by properly qualifying generator function calls with package prefixes.
  • ๐Ÿ”— SVG Visualization: Ensured all dependencies from fcheck.dart to graph exporters (export_mermaid.dart, export_plantuml.dart, export_svg.dart) are properly displayed in the dependency graph.

Changed #

  • ๐Ÿ“ฆ Import Structure: Updated generator imports in bin/fcheck.dart to use proper package prefixes for better code organization and dependency tracking.

0.4.1 - 2026-01-23 #

Fixed #

  • ๐Ÿ› Subdirectory Analysis: Fixed package import resolution when running analysis on a subdirectory (e.g., lib/) by correctly identifying the project root.

  • ๐Ÿ“ SVG Layout: Optimized column-based layout to ensure consistent grouping and correct layer ordering (Layer 1 on the left).

  • ๐ŸŽจ SVG Z-Order: Refined drawing order (Layers -> Nodes -> Edges -> Badges -> Labels) so edges are drawn on top of nodes, but behind text.

  • โœจ Visual Polish: Added outline dilate filter to node labels for superior readability against edges.

  • โœจ Visual Polish: Added white shadow filter to nodes to improve legibility against background edges.

  • ๐Ÿ“ Node Sorting: Updated intra-column sorting to prioritize Incident dependencies (Incoming descending, then Outgoing descending), and finally alphabetical.

Added #

  • โœจ JSON Output Mode: New --json flag to output all analysis results in structured JSON format.
  • ๐Ÿ—๏ธ Robust Layering Analysis: Implemented Tarjan's SCC algorithm to correctly handle circular dependencies.
  • ๐Ÿ“ Top-Down Layering Logic: Improved layering algorithm for consistent "cake" layout.

Changed #

  • ๐Ÿ“ Documentation: Major improvements to layers layout documentation and README.md.
  • โšก Model Updates: Metrics and issues now support JSON serialization.

0.3.5 - 2026-01-21 #

Added #

  • ๐Ÿ“š Comprehensive API documentation for all public constructors and methods
  • ๐Ÿ—๏ธ Private constructor for FileUtils utility class to prevent instantiation
  • ๐Ÿ“– Enhanced documentation for ClassVisitor.visitClassDeclaration method
  • ๐Ÿ”ง Added explicit constructor documentation for hardcoded string analysis
  • ๐Ÿ“‹ Complete documentation for all @override methods across the codebase

0.3.4 - 2026-01-21 #

Added #

  • ๐Ÿ› ๏ธ Global CLI executable support via executables configuration
  • ๐Ÿ“ฆ Users can now install fcheck globally: dart pub global activate fcheck
  • ๐Ÿ–ฅ๏ธ Direct command execution: fcheck ./path/ (after global activation)

0.3.3 - 2026-01-20 #

Added #

  • โœจ Support for positional path arguments (e.g., dart run fcheck ./path/)
  • ๐Ÿ†• --input/-i option replacing --path/-p for better CLI design
  • ๐Ÿ“š --help/-h flag with comprehensive usage information
  • ๐ŸŽฏ 'Explicit option wins' logic when both named and positional arguments provided

Changed #

  • ๐Ÿ”„ CLI argument parsing to support both positional and named arguments
  • ๐Ÿ“ Improved usage messages and help text

Fixed #

  • ๐Ÿ› Positional arguments now work correctly (original issue resolved)

0.3.2 - 2026-01-20 #

  • โœจ Added --fix / -f flag for automatic sorting fixes
  • ๐Ÿ”ง Automatically fixes sorting issues by writing properly sorted code back to files
  • Refactored sort_source.dart into separate files: source_sort_issue.dart, class_visitor.dart, member_sorter.dart, source_sort_analyzer.dart
  • Added silent mode to ProjectMetrics.printReport() to suppress console output during testing

0.3.1 - 2026-01-20 #

  • Improved pubspec.yaml description with detailed package information (168 characters)
  • Added comprehensive documentation for all public APIs in sort_source.dart

0.3.0 - 2026-01-20 #

Added #

  • โœจ Source Code Sorting: New feature to check if Flutter class members are properly sorted
  • ๐Ÿ“‹ Member Organization Validation: Ensures Flutter classes follow consistent member ordering
  • ๐Ÿ”ง Automatic Member Sorting: Detects when class members need reordering for better code organization

Technical Details #

  • Added sorting analyzer for analyzing class member ordering
  • Added MemberSorter class for sorting class members according to Flutter best practices
  • Integrated sorting checks into the main analysis pipeline
  • Supports proper ordering: constructors โ†’ fields โ†’ getters/setters โ†’ methods โ†’ lifecycle methods

0.2.0 - 2026-01-20 #

Changed #

  • Upgraded analyzer package to ^10.0.1 for better compatibility
  • Updated code to use new analyzer API methods (replaced deprecated name.lexeme with toString())
  • Modified file analysis to exclude example/, test/, tool/, and build directories from production code metrics
  • Migrated sort_source.dart to work with analyzer ^10.0.1 API changes
  • Updated sorting analyzer to use consistent directory exclusion filtering

Fixed #

  • Removed unused _classNode field from MemberSorter class
  • Fixed compatibility issues with analyzer package version 10.x
  • Resolved issue where example directory with intentional "bad code" was being analyzed
  • Updated deprecated analyzer API usage in sort_source.dart with appropriate ignore comments
  • Fixed dangling library doc comments in bin/fcheck.dart and project_metrics.dart

0.1.0 - 2026-01-20 #

Added #

  • Initial release of fcheck - a Flutter/Dart code quality analysis tool
  • Project structure analysis (folders, files, lines of code, comment ratios)
  • One class per file rule enforcement
  • Hardcoded string detection
  • Command-line interface with path options
  • Comprehensive test suite
  • MIT license
  • Repository information in pubspec.yaml

Features #

  • Analyze Flutter and Dart projects for code quality metrics
  • Detect violations of one class per file rule
  • Identify potential hardcoded strings
  • Generate detailed quality reports
  • CLI support with customizable paths

Technical Details #

  • Built with Dart SDK >=3.0.0 <4.0.0
  • Uses analyzer package for AST parsing
  • Supports both individual file and directory analysis
  • Cross-platform command-line tool
12
likes
160
points
2.35k
downloads

Documentation

API reference

Publisher

verified publishervteam.com

Weekly Downloads

Code quality analysis for Flutter and Dart projects with architecture, maintainability, and safety checks, deterministic reports, and compliance scoring.

Repository (GitHub)
View/report issues

Topics

#analysis #architecture #code-style #lint #compliance

License

MIT (license)

Dependencies

analyzer, args, glob, path, yaml

More

Packages that depend on fcheck