![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/cartforge.co/vendor/phpmd/phpmd/src/main/php/PHPMD/ |
<?php /** * This file is part of PHP Mess Detector. * * Copyright (c) Manuel Pichler <[email protected]>. * All rights reserved. * * Licensed under BSD License * For full copyright and license information, please see the LICENSE file. * Redistributions of files must retain the above copyright notice. * * @author Manuel Pichler <[email protected]> * @copyright Manuel Pichler. All rights reserved. * @license https://opensource.org/licenses/bsd-license.php BSD License * @link http://phpmd.org/ */ namespace PHPMD; use PDepend\Application; use PDepend\Engine; use PDepend\Input\ExcludePathFilter; use PDepend\Input\ExtensionFilter; use PHPMD\Cache\CacheFileFilter; /** * Simple factory that is used to return a ready to use PDepend instance. */ class ParserFactory { /** @var string The default config file name */ const PDEPEND_CONFIG_FILE_NAME = '/pdepend.xml'; /** @var string The distribution config file name */ const PDEPEND_CONFIG_FILE_NAME_DIST = '/pdepend.xml.dist'; /** * Mapping between phpmd option names and those used by pdepend. * * @var array */ private $phpmd2pdepend = array( 'coverage' => 'coverage-report', ); /** * Creates the used {@link \PHPMD\Parser} analyzer instance. * * @param \PHPMD\PHPMD $phpmd * @return \PHPMD\Parser */ public function create(PHPMD $phpmd) { $pdepend = $this->createInstance(); $pdepend = $this->init($pdepend, $phpmd); return new Parser($pdepend); } /** * Creates a clean php depend instance with some base settings. * * @return \PDepend\Engine */ private function createInstance() { $application = new Application(); $workingDirectory = getcwd(); if (file_exists($workingDirectory . self::PDEPEND_CONFIG_FILE_NAME)) { $application->setConfigurationFile($workingDirectory . self::PDEPEND_CONFIG_FILE_NAME); } elseif (file_exists($workingDirectory . self::PDEPEND_CONFIG_FILE_NAME_DIST)) { $application->setConfigurationFile($workingDirectory . self::PDEPEND_CONFIG_FILE_NAME_DIST); } return $application->getEngine(); } /** * Configures the given PDepend\Engine instance based on some user settings. * * @param \PDepend\Engine $pdepend * @param \PHPMD\PHPMD $phpmd * @return \PDepend\Engine */ private function init(Engine $pdepend, PHPMD $phpmd) { $this->initOptions($pdepend, $phpmd); $this->initInput($pdepend, $phpmd); $this->initIgnores($pdepend, $phpmd); $this->initExtensions($pdepend, $phpmd); $this->initResultCache($pdepend, $phpmd); return $pdepend; } /** * Configures the input source. * * @param \PDepend\Engine $pdepend * @param \PHPMD\PHPMD $phpmd * @return void */ private function initInput(Engine $pdepend, PHPMD $phpmd) { foreach (explode(',', $phpmd->getInput()) as $path) { $trimmedPath = trim($path); if (is_dir($trimmedPath)) { $pdepend->addDirectory($trimmedPath); continue; } $pdepend->addFile($trimmedPath); } } /** * Initializes the ignored files and path's. * * @param \PDepend\Engine $pdepend * @param \PHPMD\PHPMD $phpmd * @return void */ private function initIgnores(Engine $pdepend, PHPMD $phpmd) { if (count($phpmd->getIgnorePatterns()) > 0) { $pdepend->addFileFilter( new ExcludePathFilter($phpmd->getIgnorePatterns()) ); } } /** * Initializes the accepted php source file extensions. * * @param \PDepend\Engine $pdepend * @param \PHPMD\PHPMD $phpmd * @return void */ private function initExtensions(Engine $pdepend, PHPMD $phpmd) { if (count($phpmd->getFileExtensions()) > 0) { $pdepend->addFileFilter( new ExtensionFilter($phpmd->getFileExtensions()) ); } } /** * Cache result hook to filter cached files */ private function initResultCache(Engine $pdepend, PHPMD $phpmd) { $resultCache = $phpmd->getResultCache(); if ($resultCache !== null) { $pdepend->addFileFilter($resultCache->getFileFilter()); } } /** * Initializes additional options for pdepend. * * @param \PDepend\Engine $pdepend * @param \PHPMD\PHPMD $phpmd * @return void */ private function initOptions(Engine $pdepend, PHPMD $phpmd) { $options = array(); foreach (array_filter($phpmd->getOptions()) as $name => $value) { if (isset($this->phpmd2pdepend[$name])) { $options[$this->phpmd2pdepend[$name]] = $value; } } $pdepend->setOptions($options); } }