CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/npm-plato

JavaScript source analysis and visualizer that generates detailed complexity reports

Pending

Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

Overview
Eval results
Files

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;
}

Install with Tessl CLI

npx tessl i tessl/npm-plato

docs

cli-api.md

index.md

models.md

programmatic-api.md

reporters.md

utilities.md

tile.json