Analyze JavaScript and output usage rate of each syntax.
MIT License
Analyze JavaScript and output usage rate of each syntax.
The Analyzer parse code and process AST.
AST is defined by estree/estree: The ESTree Spec.
npm install es-usage-rate
$ es-usage-rate "src/**/*.js"
[Options]
--formatter formatter name - default: "line-by-line",
--mapper: mapper name - default: "line-by-line",
--reducer: reducer name - default: "identity"
[stdin]
$ cat file.js | es-usage-rate
Use this with distribution.
$ es-usage-rate "src/*.js" | distribution
Key|Ct (Pct) Histogram
Identifier|842 (35.47%)
MemberExpression|221 (9.31%)
CallExpression|176 (7.41%)
CommentLine|128 (5.39%)
StringLiteral|126 (5.31%)
VariableDeclarator| 95 (4.00%)
VariableDeclaration| 95 (4.00%)
BlockStatement| 78 (3.29%)
CommentBlock| 74 (3.12%)
ExpressionStatement| 69 (2.91%)
ObjectProperty| 63 (2.65%)
ThisExpression| 62 (2.61%)
TemplateElement| 35 (1.47%)
ReturnStatement| 32 (1.35%)
ObjectExpression| 26 (1.10%)
Filter by ES6 node
--reducer es6
filter by ES6 node
$ es-usage-rate --reducer es6 "src/**/*.js" | distribution --char=ba
Key|Ct (Pct) Histogram
VariableDeclaration:const|156 (44.07%)
TemplateElement| 75 (21.19%)
VariableDeclaration:let| 32 (9.04%)
TemplateLiteral| 32 (9.04%)
ArrowFunctionExpression| 29 (8.19%)
AssignmentPattern| 12 (3.39%)
ObjectPattern| 6 (1.69%)
ClassDeclaration| 6 (1.69%)
ClassBody| 6 (1.69%)
--formatter json-by-file
output results of count by group.
es-usage-rate --formatter json-by-file --reducer es6 "src/**/*.js"
[{"@file":"src/cli/cli.js","ImportDeclaration":2,"ImportSpecifier":2,"ImportDefaultSpecifier":1,"ExportNamedDeclaration":2,"VariableDeclaration:const":1},{"@file":"src/es-usage-rate.js","ImportDeclaration":5,"ImportNamespaceSpecifier":1,"ImportSpecifier":4,"VariableDeclaration:const":11,"ArrowFunctionExpression":3,"ExportNamedDeclaration":2,"AssignmentPattern":2},{"@file":"src/formatter.js","ImportDeclaration":2,"ImportDefaultSpecifier":2,"ExportNamedDeclaration":1,"VariableDeclaration:const":1,"ArrowFunctionExpression":1},{"@file":"src/formatters/json-by-all.js","ImportDeclaration":1,"ImportSpecifier":1,"VariableDeclaration:const":4,"ArrowFunctionExpression":3,"VariableDeclaration:let":4,"ExportDefaultDeclaration":1,"ObjectPattern":1},{"@file":"src/formatters/json-by-file.js","ImportDeclaration":1,"ImportSpecifier":1,"ExportDefaultDeclaration":1,"ArrowFunctionExpression":1,"VariableDeclaration:const":1,"ObjectPattern":1},{"@file":"src/formatters/line-by-line.js","ExportDefaultDeclaration":1,"VariableDeclaration:let":1,"ArrowFunctionExpression":1,"VariableDeclaration:const":1,"ObjectPattern":1},{"@file":"src/mapper.js","ImportDeclaration":2,"ImportDefaultSpecifier":2,"ExportNamedDeclaration":1,"VariableDeclaration:const":1,"ArrowFunctionExpression":1},{"@file":"src/mappers/line-by-line.js","ImportDeclaration":2,"ImportDefaultSpecifier":1,"ImportSpecifier":1,"ExportDefaultDeclaration":1,"VariableDeclaration:const":2},{"@file":"src/parser.js","ExportNamedDeclaration":1},{"@file":"src/reducer.js","ImportDeclaration":2,"ImportDefaultSpecifier":2,"ExportNamedDeclaration":1},{"@file":"src/reducers/es6.js","VariableDeclaration:const":1,"ExportDefaultDeclaration":1,"ArrowFunctionExpression":2},{"@file":"src/reducers/identity.js","ExportDefaultDeclaration":1},{"@file":"src
--formatter json-by-all
output single object that sum of count by group.
es-usage-rate --formatter json-by-all --reducer es6 "src/**/*.js"
{"@file":"src/","ImportDeclaration":17,"ImportSpecifier":9,"ImportDefaultSpecifier":8,"ExportNamedDeclaration":9,"VariableDeclaration:const":25,"ImportNamespaceSpecifier":1,"ArrowFunctionExpression":12,"AssignmentPattern":2,"VariableDeclaration:let":5,"ExportDefaultDeclaration":7,"ObjectPattern":3,"TemplateLiteral":1,"TemplateElement":3}
npm test
git checkout -b my-new-feature
git commit -am 'Add some feature'
git push origin my-new-feature
MIT