X-Git-Url: http://git.cyclocoop.org/%22%20.%20generer_url_ecrire%28%22articles%22%2C%22id_article=%24id_article%22%29%20.%20%22?a=blobdiff_plain;f=maintenance%2FcheckAutoLoader.php;h=ea6c09f2bb2ac4233f260c995091297d7283f708;hb=392af46809d831514f49618cdef1e1529d7fddf4;hp=c2909ef7e38cce6de23aa6b65a155fa2e2078944;hpb=c6b902f180a39b12c2f53125a73c79e70b8968e9;p=lhc%2Fweb%2Fwiklou.git diff --git a/maintenance/checkAutoLoader.php b/maintenance/checkAutoLoader.php index c2909ef7e3..ea6c09f2bb 100644 --- a/maintenance/checkAutoLoader.php +++ b/maintenance/checkAutoLoader.php @@ -1,22 +1,63 @@ '$file',\n"; - } elseif ( AutoLoader::$localClasses[$class] !== $file ) { - echo "$class: Wrong file: found in $file, listed in " . AutoLoader::$localClasses[$class] . "\n"; - } +/** + * Maintenance script to check classes definitions in the autoloader. + * + * @ingroup Maintenance + */ +class CheckAutoLoader extends Maintenance { + public function __construct() { + parent::__construct(); + $this->mDescription = "AutoLoader sanity checks"; } + public function execute() { + global $wgAutoloadLocalClasses, $IP; + $files = array_unique( $wgAutoloadLocalClasses ); + foreach ( $files as $file ) { + if ( function_exists( 'parsekit_compile_file' ) ) { + $parseInfo = parsekit_compile_file( "$IP/$file" ); + $classes = array_keys( $parseInfo['class_table'] ); + } else { + $contents = file_get_contents( "$IP/$file" ); + $m = array(); + preg_match_all( '/\n\s*class\s+([a-zA-Z0-9_]+)/', $contents, $m, PREG_PATTERN_ORDER ); + $classes = $m[1]; + } + foreach ( $classes as $class ) { + if ( !isset( $wgAutoloadLocalClasses[$class] ) ) { + // printf( "%-50s Unlisted, in %s\n", $class, $file ); + $this->output( "\t'$class' => '$file',\n" ); + } elseif ( $wgAutoloadLocalClasses[$class] !== $file ) { + $this->output( "$class: Wrong file: found in $file, listed in " . $wgAutoloadLocalClasses[$class] . "\n" ); + } + } + } + } } - +$maintClass = "CheckAutoLoader"; +require_once( RUN_MAINTENANCE_IF_MAIN );