Shared utilities, SDK discovery, Git diff integration, and AST analysis helpers for Dart CLI tools and analyzers.

Note

This package provides foundational infrastructure for tools in the analytica.dart monorepo (such as pkg:cognitive_complexity and pkg:undead). APIs are primarily tailored for internal tool composition and may evolve with tool requirements.

✨ Features

  • SDK & Tool Discovery (package:analytica/sdk_discovery.dart):
    • Resolves Dart SDK and Flutter SDK installation roots deterministically.
    • Locates dart / flutter executables across system paths, Flutter caches, and AOT snapshot runtimes.
    • Discovers .dart_tool/package_config.json across parent directories and Pub Workspaces.
  • AST & Analysis Utilities (package:analytica/analyzer.dart):
    • AnalysisContextHelper: Lightweight setup for package:analyzer analysis contexts.
    • CommentDirectiveParser: Parses file-level and declaration-level ignore directives.
    • AstHelpers: Traversal utilities for enclosing declarations and token spans.
    • WildcardPattern: Zero-dependency glob-like pattern matcher (*, ?).
  • Git Integration (package:analytica/git.dart):
    • GitDiffService: Executes git diff against base refs.
    • DiffParser: Parses unified diffs into structured file/hunk models.
    • AstLineMapper: Maps AST declaration node line ranges to modified diff lines.
  • CLI & CI Utilities (package:analytica/cli.dart, package:analytica/analytica.dart):
    • Standardized console formatting, color utilities, and error handling.
    • GitHub Actions workflow command integration (error/warning annotations).

⚡ Usage

SDK Discovery

import 'package:analytica/sdk_discovery.dart';

void main() {
  final sdkPath = findSdkPath();
  final dartExec = findDartExecutable(sdkPath: sdkPath);
  print('Dart SDK: $sdkPath');
  print('Dart Binary: $dartExec');
}

Git Diff Parsing & AST Mapping

import 'package:analytica/git.dart';

void main() async {
  final diffs = await GitDiffService().getParsedDiff('origin/main');

  for (final fileDiff in diffs) {
    print('Modified file: ${fileDiff.path}');
    print('Changed ranges: ${fileDiff.addedOrModifiedLineRanges}');
  }
}

Libraries

analytica
Core infrastructure and shared utilities for the Analytica tooling ecosystem.
analyzer
Static analysis and AST inspection utilities for Dart code tools.
cli
Common CLI arguments, formatting, and GitHub Actions utilities.
git
Git operations, unified diff parsing, and AST line mapping utilities.
sdk_discovery
SDK discovery utilities for Dart tools and AOT executables.