getInstalledStandardPaths() public static method

Get a list paths where standards are installed.
public static getInstalledStandardPaths ( ) : array
return array
 /**
  * Add all sniff unit tests into a test suite.
  *
  * Sniff unit tests are found by recursing through the 'Tests' directory
  * of each installed coding standard.
  *
  * @return PHPUnit_Framework_TestSuite
  */
 public static function suite()
 {
     $suite = new PHPUnit_Framework_TestSuite('PHP CodeSniffer Standards');
     $isInstalled = !is_file(dirname(__FILE__) . '/../../CodeSniffer.php');
     $installedPaths = PHP_CodeSniffer::getInstalledStandardPaths();
     foreach ($installedPaths as $path) {
         $path = realpath($path);
         $origPath = $path;
         $standards = PHP_CodeSniffer::getInstalledStandards(true, $path);
         // If the test is running PEAR installed, the built-in standards
         // are split into different directories; one for the sniffs and
         // a different file system location for tests.
         if ($isInstalled === true && is_dir($path . DIRECTORY_SEPARATOR . 'Generic') === true) {
             $path = dirname(__FILE__);
         }
         foreach ($standards as $standard) {
             $testsDir = $path . DIRECTORY_SEPARATOR . $standard . DIRECTORY_SEPARATOR . 'Tests' . DIRECTORY_SEPARATOR;
             if (is_dir($testsDir) === false) {
                 // No tests for this standard.
                 continue;
             }
             $di = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($testsDir));
             foreach ($di as $file) {
                 // Skip hidden files.
                 if (substr($file->getFilename(), 0, 1) === '.') {
                     continue;
                 }
                 // Tests must have the extension 'php'.
                 $parts = explode('.', $file);
                 $ext = array_pop($parts);
                 if ($ext !== 'php') {
                     continue;
                 }
                 $filePath = $file->getPathname();
                 $className = str_replace($path . DIRECTORY_SEPARATOR, '', $filePath);
                 $className = substr($className, 0, -4);
                 $className = str_replace(DIRECTORY_SEPARATOR, '_', $className);
                 // Include the sniff here so tests can use it in their setup() methods.
                 $parts = explode('_', $className);
                 $sniffPath = $origPath . DIRECTORY_SEPARATOR . $parts[0] . DIRECTORY_SEPARATOR . 'Sniffs' . DIRECTORY_SEPARATOR . $parts[2] . DIRECTORY_SEPARATOR . $parts[3];
                 $sniffPath = substr($sniffPath, 0, -8) . 'Sniff.php';
                 include_once $sniffPath;
                 include_once $filePath;
                 $GLOBALS['PHP_CODESNIFFER_STANDARD_DIRS'][$className] = $path;
                 $suite->addTestSuite($className);
             }
             //end foreach
         }
         //end foreach
     }
     //end foreach
     return $suite;
 }
示例#2
0
 /**
  * Autoload static method for loading classes and interfaces.
  *
  * @param string $className The name of the class or interface.
  *
  * @return void
  */
 public static function autoload($className)
 {
     if (substr($className, 0, 4) === 'PHP_') {
         $newClassName = substr($className, 4);
     } else {
         $newClassName = $className;
     }
     $path = str_replace(array('_', '\\'), DIRECTORY_SEPARATOR, $newClassName) . '.php';
     if (is_file(dirname(__FILE__) . DIRECTORY_SEPARATOR . $path) === true) {
         // Check standard file locations based on class name.
         include dirname(__FILE__) . DIRECTORY_SEPARATOR . $path;
         return;
     } else {
         // Check for included sniffs.
         $installedPaths = PHP_CodeSniffer::getInstalledStandardPaths();
         foreach ($installedPaths as $installedPath) {
             if (is_file($installedPath . DIRECTORY_SEPARATOR . $path) === true) {
                 include $installedPath . DIRECTORY_SEPARATOR . $path;
                 return;
             }
         }
         // Check standard file locations based on the loaded rulesets.
         foreach (self::$rulesetDirs as $rulesetDir) {
             if (is_file(dirname($rulesetDir) . DIRECTORY_SEPARATOR . $path) === true) {
                 include_once dirname($rulesetDir) . DIRECTORY_SEPARATOR . $path;
                 return;
             }
         }
     }
     //end if
     // Everything else.
     @(include $path);
 }