
15 рд╕реЗ рдЕрдзрд┐рдХ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдХрд▓ рдЪрд░рд┐рддреНрд░ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдо рдЖрдо рд╣реИрдВред рд╕рдмрд╕реЗ рдЖрдо
6-рд╡рд░реНрдг рдХреЗ рдирд╛рдоред рдЗрд╕ рддрд░рд╣ рдХреЗ рдкрд░рд┐рдгрд╛рдо Esprima рджреНрд╡рд╛рд░рд╛
рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЧрдП рдереЗ,
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ
рдкрд╛рд░реНрд╕рд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд▓рд┐рдЦрд╛ рдерд╛ , рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдХреЗ рдЬреИрд╕реЗ рдХрд┐ jQuery, рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк, MooTools, Underscore, рдФрд░ рдХреБрдЫ рдЕрдиреНрдпред
рдкрд╛рдВрдЪ рд╕рдмрд╕реЗ рд▓рдВрдмреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреЗ рд╣реИрдВ:
рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк-1.7.0.0.js | SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING |
рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк-1.7.0.0.js | MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED |
jQuery-1.7.1.js | subtractsBorderForOverflowNotVisible |
jquery.mobile-1.0.js | getClosestElementWithVirtualBinding |
рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк-1.7.0.0.js | HAS_EXTENDED_CREATE_ELEMENT_SYNTAX |
Node.js рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЖрдк рдЕрддреНрдпрдзрд┐рдХ рдХреНрд░рд┐рдпрд╛рд╢реАрд▓рддрд╛ рдпрд╛ рдЕрддреНрдпрдзрд┐рдХ рдХрдареЛрд░ рд╕рд╣рдорддрд┐ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рд╕рд┐рдХ рдирдореВрдиреЛрдВ рдХреЗ рд╕рд╛рде рдЪрд░ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдирд╛рдордХрд░рдг рдХреА рдЕрдкрдиреА рд╢реИрд▓реА рдХреА рддреБрд▓рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
var fs = require('fs'), esprima = require('esprima'), files = process.argv.splice(2); files.forEach(function (filename) { var identifiers = {}, content = fs.readFileSync(filename, 'utf-8'), syntax = esprima.parse(content); JSON.stringify(syntax, function (key, value) { if (key === 'name' && typeof identifiers[value] === 'undefined') { identifiers[value] = value.length; } return value; }); for (var key in identifiers) { if (identifiers.hasOwnProperty(key)) { console.log(identifiers[key]); } } });
рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЪрд▓рд╛рдПрдВ:
node idlen.js /path/to/some/*.js | sort -n | uniq -c