or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

cli-api.mdindex.mdmodels.mdprogrammatic-api.mdreporters.mdutilities.md
tile.json

tessl/npm-plato

JavaScript source analysis and visualizer that generates detailed complexity reports

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
npmpkg:npm/plato@1.7.x

To install, run

npx @tessl/cli install tessl/npm-plato@1.7.0

index.mddocs/

Plato

Plato is a JavaScript source analysis and visualizer that generates detailed complexity reports for JavaScript projects. It analyzes JavaScript files to calculate cyclomatic complexity, Halstead metrics, maintainability indices, and other code quality measurements, then produces interactive HTML reports with visualizations including charts and graphs.

Package Information

  • Package Name: plato
  • Package Type: npm
  • Language: JavaScript
  • Installation: npm install plato

Core Imports

const plato = require('plato');

For individual functions:

const { inspect, getOverviewReport } = require('plato');

Basic Usage

const plato = require('plato');

// Analyze JavaScript files and generate HTML reports
plato.inspect(['src/**/*.js'], 'reports', {
  title: 'My Project Analysis',
  recurse: true,
  jshint: {
    node: true,
    browser: true
  }
}, function(reports) {
  console.log('Analysis complete!');
  console.log(`Analyzed ${reports.length} files`);
  
  // Generate overview report
  const overview = plato.getOverviewReport(reports);
  console.log('Overall maintainability:', overview.summary.average.maintainability);
});

Architecture

Plato is built around several key components:

  • Core Analysis Engine: Main inspect() function orchestrates file analysis and report generation
  • Reporters: Pluggable analysis modules for complexity, JSHint, and ESLint integration
  • History Tracking: Models for tracking code quality metrics over time
  • CLI Interface: Command-line tool for CI/CD integration and batch processing
  • Utility Functions: Common operations for file handling, JSON processing, and output formatting

Capabilities

Programmatic Analysis API

Core analysis functions for integrating Plato into custom workflows and applications.

function inspect(files, outputDir, options, done);
function getOverviewReport(reports);

Programmatic API

Command Line Interface

Complete CLI for batch analysis, CI/CD integration, and automated reporting workflows.

function exec(options, done);

CLI API

Utility Functions

Helper functions for file operations, JSON processing, and output formatting.

function findCommonBase(files);
function formatJSON(report);
function readJSON(file, options);
function stripComments(str);
function escapeHTML(html);

Utilities

History and Models

Data models for tracking code quality metrics over time and maintaining historical analysis data.

class History
class OverviewHistory extends History
class FileHistory extends History

Models

Analysis Reporters

Specialized analysis modules for different code quality metrics and linting integration.

// Complexity Reporter
function process(source, options, reportInfo);

// JSHint Reporter  
function process(source, options);

// ESLint Reporter
function process(source, options);

Reporters

Configuration Options

Analysis Options

interface AnalysisOptions {
  /** Recursively search directories */
  recurse?: boolean;
  /** Quiet mode (errors only) */
  q?: boolean;
  /** Report title */
  title?: string;
  /** File exclusion regex */
  exclude?: RegExp;
  /** Custom report date */
  date?: Date;
  /** JSHint configuration */
  jshint?: Object;
  /** ESLint configuration */
  eslint?: Object;
  /** Skip empty lines from line count */
  noempty?: boolean;
}

Logger Configuration

class Logger {
  constructor(level: number);
  
  static TRACE: 0;
  static DEBUG: 1;
  static INFO: 2;
  static WARNING: 3;
  static ERROR: 4;
  
  trace(...args: any[]): void;
  debug(...args: any[]): void;
  info(...args: any[]): void;
  warning(...args: any[]): void;
  error(...args: any[]): void;
}