{"id":13434107,"url":"https://github.com/es-analysis/plato","last_synced_at":"2026-02-21T02:01:26.223Z","repository":{"id":6173395,"uuid":"7403331","full_name":"es-analysis/plato","owner":"es-analysis","description":"JavaScript source code visualization, static analysis, and complexity tool","archived":false,"fork":false,"pushed_at":"2022-02-11T05:47:35.000Z","size":9948,"stargazers_count":4569,"open_issues_count":83,"forks_count":318,"subscribers_count":124,"default_branch":"master","last_synced_at":"2025-10-22T18:48:15.418Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/es-analysis.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-MIT","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-01-02T07:04:27.000Z","updated_at":"2025-10-14T16:40:53.000Z","dependencies_parsed_at":"2022-08-02T22:01:08.396Z","dependency_job_id":null,"html_url":"https://github.com/es-analysis/plato","commit_stats":null,"previous_names":[],"tags_count":25,"template":false,"template_full_name":null,"purl":"pkg:github/es-analysis/plato","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/es-analysis%2Fplato","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/es-analysis%2Fplato/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/es-analysis%2Fplato/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/es-analysis%2Fplato/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/es-analysis","download_url":"https://codeload.github.com/es-analysis/plato/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/es-analysis%2Fplato/sbom","scorecard":{"id":382093,"data":{"date":"2025-08-11","repo":{"name":"github.com/es-analysis/plato","commit":"a944bb9313785bcc47fb27b257bb2518c86174bd"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.4,"checks":[{"name":"Code-Review","score":3,"reason":"Found 6/19 approved changesets -- score normalized to 3","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE-MIT:0","Info: FSF or OSI recognized license: MIT License: LICENSE-MIT:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 17 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-18T15:42:01.349Z","repository_id":6173395,"created_at":"2025-08-18T15:42:01.349Z","updated_at":"2025-08-18T15:42:01.349Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29671513,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-21T00:11:43.526Z","status":"online","status_checked_at":"2026-02-21T02:00:07.432Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-31T02:01:46.159Z","updated_at":"2026-02-21T02:01:26.204Z","avatar_url":"https://github.com/es-analysis.png","language":"JavaScript","readme":"# plato\n\n## Needs active maintainer\n\nplato was updated to support es6 by @devcrust, but needs an active maintainer to keep it moving forward.\n\n[![Build Status](https://travis-ci.org/es-analysis/plato.png?branch=master)](https://travis-ci.org/es-analysis/plato)\n\nVisualize JavaScript source complexity with plato.\n\n## Example report on popular projects\n\n - [jquery](http://es-analysis.github.com/plato/examples/jquery/)\n - [hapi](http://es-analysis.github.com/plato/examples/hapi/)\n - [marionettejs](http://es-analysis.github.com/plato/examples/marionette/)\n\n## Installation\nInstall the module with: `npm install -g plato`\n\n## Usage\n\n### From the commandline\n\n```\nUsage : plato [options] -d \u003coutput_dir\u003e \u003cinput files\u003e\n  -h, --help\n      Display this help text.\n  -q, --quiet\n      Reduce output to errors only\n  -v, --version\n      Print the version.\n  -x, --exclude : String\n      File exclusion regex\n  -d, --dir : String *required*\n      The output directory\n  -r, --recurse\n      Recursively search directories\n  -l, --jshint : String\n      Specify a jshintrc file for JSHint linting\n  -e, --eslint : String\n      Specify a eslintrc file for ESLint linting\n  -t, --title : String\n      Title of the report\n  -D, --date : String\n      Time to use as the report date (seconds, \u003e 9999999999 assumed to be ms)\n  -n, --noempty\n      Skips empty lines from line count\n```\n\n__Example__\n\n```shell\nplato -r -d report src\n```\n\n__Extended example__\n\n```\nplato -r -d report -l .jshintrc -t \"My Awesome App\" -x .json routes/*.js\n```\n\n### From scripts\n\n```\nvar plato = require('plato');\n\nvar files = [\n  'path/to/javascript/file1.js',\n  ...\n  'path/to/javascript/fileN.js'\n];\n\nvar outputDir = './output/dir';\n// null options for this example\nvar options = {\n  title: 'Your title here'\n};\n\nvar callback = function (report){\n// once done the analysis,\n// execute this\n};\n\nplato.inspect(files, outputDir, options, callback);\n```\n\n## Data sources\n\n  - Complexity data by [Phil Booth](https://github.com/philbooth)'s [complexity-report](https://github.com/philbooth/complexityReport.js)\n  - Lint data from [jshint](https://github.com/jshint/jshint/) and [eslint](https://github.com/eslint/eslint)\n\n## Contributors\n  - [Jarrod Overson](https://github.com/jsoverson)\n  - [Craig Davis](https://github.com/there4)\n  - [David Linse](https://github.com/davidlinse)\n\n## Release History\n\n  - 1.6.0 Support es6 by updating eslint and using fork of escomplex\n  - 1.3.0 Merged 107,130,128,119,114. Numerous bug fixed.\n    - Minor bumped for changes to parsing of files passed. Technically a breaking change but effectively a bug fix + feature so bumping minor.\n  - 1.2.1 Bumping versions for jshint and lodash\n  - 1.2.0 add ability to disable jshint\n  - 1.1.0 fix issue with running casperjs tests\n  - 1.0.1 fix issue with first line hashbang\n  - 1.0.0 promote to 1.0.0 with bug fixes\n  - 0.6.2 Added sortable file list, updated to bootstrap 3\n  - 0.6.1 Fixed width overflow issues in file reports\n  - 0.6.0 updated major dependency complexity-report\n  - 0.5.0 Added historical reports\n  - 0.4.7 Updated jshint to 1.1.0 (via #22) to jshint to address #16\n  - 0.4.6 Performance improvements on file view\n  - 0.4.5 Updated complexity-report to 0.7.0 to prefer the 0-100 based maintainability index\n  - 0.4.4 Added quiet mode, exclusion regex, description popovers\n  - 0.4.3 Updated dependencies to fix reporting issues\n  - 0.4.2 Fixed overview links to files\n  - 0.4.1 Fixed jshint option passing\n  - 0.4.0 Added summary stats, Casper tests, nodunit tests\n    - Breaking : plato api\n  - 0.3.1 Added graphs\n  - 0.3.0 Formatting changes, refactoring.\n    - Breaking : jshint reporting api\n  - 0.2.0 added jshint reporting.\n    - Breaking : options api, cli api\n  - 0.1.0 initial release\n\n## License\nCopyright (c) 2012 Jarrod Overson\nLicensed under the MIT license.\n\n\n[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/es-analysis/plato/trend.png)](https://bitdeli.com/free \"Bitdeli Badge\")\n\n","funding_links":[],"categories":["JavaScript","others","开发工具和库"],"sub_categories":["调试、性能与安全"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fes-analysis%2Fplato","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fes-analysis%2Fplato","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fes-analysis%2Fplato/lists"}