or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

analysis.mdconfiguration.mdeditor-integration.mdformatting.mdindex.mdutilities.md
tile.json

analysis.mddocs/

Analysis Commands

Commands for analyzing file patterns, configuration resolution, and performance timing. These commands provide insights into dprint's operation and help with debugging and optimization.

Capabilities

File Path Analysis

Output the list of files that would be processed by formatting commands, useful for verifying pattern matching and debugging file discovery.

# Output files that would be formatted
dprint output-file-paths [OPTIONS] [FILES...]

# Uses same pattern matching as fmt/check commands
--includes <PATTERNS>     # Include file patterns
--excludes <PATTERNS>     # Exclude file patterns  
--allow-node-modules      # Include node_modules files

Usage Examples:

# List all files that would be formatted
dprint output-file-paths

# Check specific patterns
dprint output-file-paths --includes "src/**/*.ts"

# Verify exclude patterns
dprint output-file-paths --excludes "**/*.generated.ts"

# Complex pattern analysis
dprint output-file-paths \
  --includes "src/**/*.{ts,js}" \
  --includes "tests/**/*.{ts,js}" \
  --excludes "**/*.min.js" \
  --excludes "node_modules/**"

# Check if specific file would be included
dprint output-file-paths src/main.ts

Output Format:

src/main.ts
src/utils/helper.ts
src/components/Button.tsx
tests/main.test.ts

Configuration Resolution

Output the complete resolved configuration as JSON, showing how dprint interprets configuration files, plugin settings, and environment variables.

# Output resolved configuration as JSON
dprint output-resolved-config

Usage Examples:

# View complete resolved configuration
dprint output-resolved-config

# Pipe to jq for formatted output
dprint output-resolved-config | jq '.'

# Save configuration for analysis
dprint output-resolved-config > resolved-config.json

# Check specific configuration path
dprint --config ./custom.json output-resolved-config

Example Output:

{
  "configPath": "/project/dprint.json",
  "plugins": [
    {
      "name": "typescript",
      "version": "0.88.0",
      "url": "https://plugins.dprint.dev/typescript-0.88.0.wasm",
      "config": {
        "indentWidth": 2,
        "lineWidth": 120,
        "useTabs": false,
        "semiColons": "always",
        "quoteStyle": "alwaysDouble"
      }
    }
  ],
  "includes": ["**/*.{ts,tsx,js,jsx}"],
  "excludes": ["node_modules/**", "dist/**"],
  "incremental": true
}

Format Timing Analysis

Output detailed timing information for formatting operations, useful for performance analysis and optimization.

# Output timing information for formatting operations
dprint output-format-times [OPTIONS] [FILES...]

# Options
--allow-no-files          # Allow running with no matched files
--includes <PATTERNS>     # Include file patterns
--excludes <PATTERNS>     # Exclude file patterns

Usage Examples:

# Analyze formatting performance for all files
dprint output-format-times

# Performance analysis for specific patterns
dprint output-format-times --includes "src/**/*.ts"

# Benchmark large codebase
dprint output-format-times --includes "**/*.{ts,js,json}"

# Compare performance with/without incremental
dprint output-format-times > timing-incremental.json
dprint output-format-times --incremental false > timing-full.json

Output Format:

{
  "files": [
    {
      "filePath": "src/main.ts",
      "duration": 45,
      "formattingDuration": 38,
      "pluginName": "typescript"
    },
    {
      "filePath": "package.json", 
      "duration": 12,
      "formattingDuration": 8,
      "pluginName": "json"
    }
  ],
  "summary": {
    "totalFiles": 2,
    "totalDuration": 57,
    "averageDuration": 28.5,
    "pluginInitDuration": 120,
    "fileDiscoveryDuration": 15
  }
}

Performance Analysis

Timing Metrics

Understanding the timing output helps optimize formatting performance:

{
  "duration": 45,              // Total time for file (ms)
  "formattingDuration": 38,    // Pure formatting time (ms)
  "pluginName": "typescript",  // Plugin used
  "overhead": 7                // I/O and setup overhead (ms)
}

Performance Bottlenecks

Common performance issues identified through timing analysis:

# Plugin initialization overhead
{
  "pluginInitDuration": 2000,  // High initialization time
  "solution": "Use editor service or LSP for persistent plugins"
}

# File discovery overhead  
{
  "fileDiscoveryDuration": 500,  // Slow file pattern matching
  "solution": "Optimize include/exclude patterns"
}

# Individual file performance
{
  "filePath": "large-file.ts",
  "duration": 5000,  // Very slow formatting
  "solution": "Check plugin configuration or file complexity"
}

Optimization Strategies

# Use incremental formatting
dprint output-format-times --incremental true

# Optimize file patterns
dprint output-format-times --includes "src/**/*.ts" --excludes "**/*.d.ts"

# Compare plugin performance
dprint output-format-times > typescript-timing.json
# Switch to different plugin, then:
dprint output-format-times > biome-timing.json

Debugging Workflows

Configuration Debugging

# 1. Check resolved configuration
dprint output-resolved-config

# 2. Verify file discovery
dprint output-file-paths

# 3. Test formatting on subset
dprint fmt --diff src/main.ts

# 4. Analyze timing
dprint output-format-times src/main.ts

Pattern Matching Issues

# Debug include patterns
dprint output-file-paths --includes "**/*.ts"

# Debug exclude patterns  
dprint output-file-paths --excludes "**/*.generated.ts"

# Check specific file inclusion
dprint output-file-paths path/to/file.ts

# Verify pattern precedence
dprint output-file-paths \
  --includes "**/*.ts" \
  --excludes "**/*.d.ts"

Performance Investigation

# Baseline performance measurement
dprint output-format-times > baseline.json

# Test incremental performance
dprint output-format-times --incremental true > incremental.json

# Compare plugin performance
dprint --config typescript-config.json output-format-times > ts.json
dprint --config biome-config.json output-format-times > biome.json

# Analyze results
jq '.summary.averageDuration' baseline.json incremental.json

Integration with CI/CD

Performance Monitoring

# CI performance tracking
dprint output-format-times > performance-report.json

# Compare against baseline
performance_threshold=100
current_avg=$(jq '.summary.averageDuration' performance-report.json)
if (( $(echo "$current_avg > $performance_threshold" | bc -l) )); then
  echo "Performance regression detected: ${current_avg}ms"
  exit 1
fi

Configuration Validation

# Validate configuration in CI
dprint output-resolved-config > /dev/null || {
  echo "Configuration resolution failed"
  exit 1
}

# Verify expected files are discovered
expected_files=50
actual_files=$(dprint output-file-paths | wc -l)
if [ "$actual_files" -lt "$expected_files" ]; then
  echo "Too few files discovered: $actual_files < $expected_files"
  exit 1
fi

Automated Analysis

# Generate analysis report
{
  echo "# dprint Analysis Report"
  echo "## Configuration"
  dprint output-resolved-config | jq '.'
  
  echo "## File Discovery"
  echo "Total files: $(dprint output-file-paths | wc -l)"
  
  echo "## Performance"
  dprint output-format-times | jq '.summary'
} > analysis-report.md

Troubleshooting

No Files Found

# Debug file discovery
dprint output-file-paths

# Check patterns
dprint output-file-paths --includes "**/*.ts" --excludes "node_modules/**"

# Verify current directory
pwd
ls -la *.ts  # Check if files exist

Configuration Issues

# Check configuration resolution
dprint output-resolved-config

# Validate JSON syntax
cat dprint.json | jq '.'

# Test specific config path
dprint --config ./custom.json output-resolved-config

Performance Issues

# Identify slow files
dprint output-format-times | jq '.files | sort_by(.duration) | reverse | .[0:5]'

# Check plugin initialization
dprint output-format-times | jq '.summary.pluginInitDuration'

# Profile file discovery
dprint output-format-times | jq '.summary.fileDiscoveryDuration'