Created
November 12, 2011 17:58
-
-
Save co3k/1360880 to your computer and use it in GitHub Desktop.
タイプヒンティングされてるランキング
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
// You need to clone https://github.com/nikic/PHP-Parser | |
require_once __DIR__.'/PHP-Parser/lib/PHPParser/Autoloader.php'; | |
PHPParser_Autoloader::register(); | |
if (2 > $argc) { | |
var_dump('$argv[1] is needed'); | |
exit; | |
} | |
class MyNodeVisitor extends PHPParser_NodeVisitorAbstract | |
{ | |
public $classes = array(); | |
public function enterNode(PHPParser_Node $node) | |
{ | |
if ($node instanceof PHPParser_Node_Param) { | |
$type = $node->getIterator()->offsetGet('type'); | |
if ($type instanceof PHPParser_Node_Name) { | |
$name = (string)$type; | |
if (isset($this->classes[$name])) { | |
$this->classes[$name]++; | |
} else { | |
$this->classes[$name] = 1; | |
} | |
} | |
} | |
} | |
} | |
$visitor = new MyNodeVisitor(); | |
$parser = new PHPParser_Parser; | |
$traverser = new PHPParser_NodeTraverser; | |
$traverser->addVisitor($visitor); | |
$dir = $argv[1]; | |
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir)); | |
foreach ($iterator as $entry) { | |
if (!$entry->isFile()) { | |
continue; | |
} | |
$name = (string)$entry; | |
if (false !== strpos($name, '.git')) { | |
continue; | |
} | |
try { | |
$stmts = $parser->parse(new PHPParser_Lexer(file_get_contents($name))); | |
$stmts = $traverser->traverse($stmts); | |
} catch (PHPParser_Error $e) { | |
} | |
} | |
arsort($visitor->classes); | |
var_dump($visitor); |
Author
co3k
commented
Nov 12, 2011
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment