Example #1
0
 /**
  * Executes PHPMD against PhingFile or a FileSet
  *
  * @throws BuildException - if the phpmd classes can't be loaded.
  */
 public function main()
 {
     /**
      * Find PHPMD
      */
     if (false === stream_resolve_include_path("PHP/PMD.php")) {
         @(include_once 'PHPMD/PHPMD.php');
         $class_name = '\\PHPMD\\PHPMD';
         $new = true;
     } else {
         @(include_once 'PHP/PMD.php');
         $class_name = "PHP_PMD";
         $new = false;
     }
     if (!class_exists($class_name)) {
         throw new BuildException('PHPMDTask depends on PHPMD being installed and on include_path.', $this->getLocation());
     }
     if ($new) {
         require_once 'PHPMD/AbstractRule.php';
         //weird syntax to allow 5.2 parser compatability
         $minPriority = constant('\\PHPMD\\AbstractRule::LOWEST_PRIORITY');
     } else {
         require_once 'PHP/PMD/AbstractRule.php';
         $minPriority = PHP_PMD_AbstractRule::LOWEST_PRIORITY;
     }
     if (!$this->minimumPriority) {
         $this->minimumPriority = $minPriority;
     }
     if (!isset($this->file) and count($this->filesets) == 0) {
         throw new BuildException('Missing either a nested fileset or attribute "file" set');
     }
     if (count($this->formatters) == 0) {
         // turn legacy format attribute into formatter
         $fmt = new PHPMDFormatterElement();
         $fmt->setType($this->format);
         $fmt->setUseFile(false);
         $this->formatters[] = $fmt;
     }
     $reportRenderers = array();
     foreach ($this->formatters as $fe) {
         if ($fe->getType() == '') {
             throw new BuildException('Formatter missing required "type" attribute.');
         }
         if ($fe->getUsefile() && $fe->getOutfile() === null) {
             throw new BuildException('Formatter requires "outfile" attribute when "useFile" is true.');
         }
         $reportRenderers[] = $fe->getRenderer();
     }
     // Create a rule set factory
     if ($new) {
         @(require_once "PHPMD/RuleSetFactory.php");
         $ruleSetClass = '\\PHPMD\\RuleSetFactory';
         $ruleSetFactory = new $ruleSetClass();
         //php 5.2 parser compatability
     } else {
         $ruleSetFactory = new PHP_PMD_RuleSetFactory();
     }
     $ruleSetFactory->setMinimumPriority($this->minimumPriority);
     $phpmd = new $class_name();
     $phpmd->setFileExtensions($this->allowedFileExtensions);
     $phpmd->setIgnorePattern($this->ignorePatterns);
     $filesToParse = array();
     if ($this->file instanceof PhingFile) {
         $filesToParse[] = $this->file->getPath();
     } else {
         // append any files in filesets
         foreach ($this->filesets as $fs) {
             foreach ($fs->getDirectoryScanner($this->project)->getIncludedFiles() as $filename) {
                 $f = new PhingFile($fs->getDir($this->project), $filename);
                 $filesToParse[] = $f->getAbsolutePath();
             }
         }
     }
     if (count($filesToParse) > 0) {
         $inputPath = implode(',', $filesToParse);
         $this->log('Processing files...');
         $phpmd->processFiles($inputPath, $this->rulesets, $reportRenderers, $ruleSetFactory);
         $this->log('Finished processing files');
     } else {
         $this->log('No files to process');
     }
 }
 /**
  * Executes PHPMD against PhingFile or a FileSet
  *
  * @throws BuildException - if the phpmd classes can't be loaded.
  */
 public function main()
 {
     $className = $this->loadDependencies();
     if (!isset($this->file) and count($this->filesets) == 0) {
         throw new BuildException('Missing either a nested fileset or attribute "file" set');
     }
     if (count($this->formatters) == 0) {
         // turn legacy format attribute into formatter
         $fmt = new PHPMDFormatterElement();
         $fmt->setType($this->format);
         $fmt->setUseFile(false);
         $this->formatters[] = $fmt;
     }
     $reportRenderers = array();
     foreach ($this->formatters as $fe) {
         if ($fe->getType() == '') {
             throw new BuildException('Formatter missing required "type" attribute.');
         }
         if ($fe->getUsefile() && $fe->getOutfile() === null) {
             throw new BuildException('Formatter requires "outfile" attribute when "useFile" is true.');
         }
         $reportRenderers[] = $fe->getRenderer();
     }
     // Create a rule set factory
     if ($this->newVersion) {
         $ruleSetClass = '\\PHPMD\\RuleSetFactory';
         $ruleSetFactory = new $ruleSetClass();
         //php 5.2 parser compatability
     } else {
         if (!class_exists("PHP_PMD_RuleSetFactory")) {
             @(include 'PHP/PMD/RuleSetFactory.php');
         }
         $ruleSetFactory = new PHP_PMD_RuleSetFactory();
     }
     $ruleSetFactory->setMinimumPriority($this->minimumPriority);
     $phpmd = new $className();
     $phpmd->setFileExtensions($this->allowedFileExtensions);
     $phpmd->setIgnorePattern($this->ignorePatterns);
     $filesToParse = array();
     if ($this->file instanceof PhingFile) {
         $filesToParse[] = $this->file->getPath();
     } else {
         // append any files in filesets
         foreach ($this->filesets as $fs) {
             foreach ($fs->getDirectoryScanner($this->project)->getIncludedFiles() as $filename) {
                 $f = new PhingFile($fs->getDir($this->project), $filename);
                 $filesToParse[] = $f->getAbsolutePath();
             }
         }
     }
     if (count($filesToParse) > 0) {
         $inputPath = implode(',', $filesToParse);
         $this->log('Processing files...');
         $phpmd->processFiles($inputPath, $this->rulesets, $reportRenderers, $ruleSetFactory);
         $this->log('Finished processing files');
     } else {
         $this->log('No files to process');
     }
 }
Example #3
0
 /**
  * Executes PHPMD against PhingFile or a FileSet
  *
  * @throws BuildException - if the phpmd classes can't be loaded.
  * @return void
  */
 public function main()
 {
     /**
      * Find PHPMD
      */
     @(include_once 'PHP/PMD.php');
     if (!class_exists('PHP_PMD')) {
         throw new BuildException('PHPMDTask depends on PHPMD being installed and on include_path.', $this->getLocation());
     }
     require_once 'PHP/PMD/AbstractRule.php';
     if (!$this->minimumPriority) {
         $this->minimumPriority = PHP_PMD_AbstractRule::LOWEST_PRIORITY;
     }
     if (!isset($this->file) and count($this->filesets) == 0) {
         throw new BuildException("Missing either a nested fileset or attribute 'file' set");
     }
     if (count($this->formatters) == 0) {
         // turn legacy format attribute into formatter
         $fmt = new PHPMDFormatterElement();
         $fmt->setType($this->format);
         $fmt->setUseFile(false);
         $this->formatters[] = $fmt;
     }
     $reportRenderers = array();
     foreach ($this->formatters as $fe) {
         if ($fe->getType() == '') {
             throw new BuildException("Formatter missing required 'type' attribute.");
         }
         if ($fe->getUsefile() && $fe->getOutfile() === null) {
             throw new BuildException("Formatter requires 'outfile' attribute when 'useFile' is true.");
         }
         $reportRenderers[] = $fe->getRenderer();
     }
     // Create a rule set factory
     $ruleSetFactory = new PHP_PMD_RuleSetFactory();
     $ruleSetFactory->setMinimumPriority($this->minimumPriority);
     $phpmd = new PHP_PMD();
     $phpmd->setFileExtensions($this->allowedFileExtensions);
     $phpmd->setIgnorePattern($this->ignorePatterns);
     $filesToParse = array();
     if ($this->file instanceof PhingFile) {
         $filesToParse[] = $this->file->getPath();
     } else {
         // append any files in filesets
         foreach ($this->filesets as $fs) {
             $files = $fs->getDirectoryScanner($this->project)->getIncludedFiles();
             foreach ($files as $filename) {
                 $f = new PhingFile($fs->getDir($this->project), $filename);
                 $filesToParse[] = $f->getAbsolutePath();
             }
         }
     }
     if (count($filesToParse) > 0) {
         $inputPath = implode(',', $filesToParse);
         $this->log('Processing files...');
         $phpmd->processFiles($inputPath, $this->rulesets, $reportRenderers, $ruleSetFactory);
         $this->log('Finished processing files');
     } else {
         $this->log('No files to process');
     }
 }
Example #4
0
 /**
  * Executes PHPMD against PhingFile or a FileSet
  *
  * @throws BuildException - if the phpmd classes can't be loaded.
  */
 public function main()
 {
     $className = $this->loadDependencies();
     if (!isset($this->file) and count($this->filesets) == 0) {
         throw new BuildException('Missing either a nested fileset or attribute "file" set');
     }
     if (count($this->formatters) == 0) {
         // turn legacy format attribute into formatter
         $fmt = new PHPMDFormatterElement();
         $fmt->setType($this->format);
         $fmt->setUseFile(false);
         $this->formatters[] = $fmt;
     }
     $reportRenderers = array();
     foreach ($this->formatters as $fe) {
         if ($fe->getType() == '') {
             throw new BuildException('Formatter missing required "type" attribute.');
         }
         if ($fe->getUsefile() && $fe->getOutfile() === null) {
             throw new BuildException('Formatter requires "outfile" attribute when "useFile" is true.');
         }
         $reportRenderers[] = $fe->getRenderer();
     }
     if ($this->newVersion && $this->cache) {
         $reportRenderers[] = new PHPMDRendererRemoveFromCache($this->cache);
     } else {
         $this->cache = null;
         // cache not compatible to old version
     }
     // Create a rule set factory
     if ($this->newVersion) {
         $ruleSetClass = '\\PHPMD\\RuleSetFactory';
         $ruleSetFactory = new $ruleSetClass();
         //php 5.2 parser compatibility
     } else {
         if (!class_exists("PHP_PMD_RuleSetFactory")) {
             @(include 'PHP/PMD/RuleSetFactory.php');
         }
         $ruleSetFactory = new PHP_PMD_RuleSetFactory();
     }
     $ruleSetFactory->setMinimumPriority($this->minimumPriority);
     /**
      * @var PHPMD\PHPMD $phpmd
      */
     $phpmd = new $className();
     $phpmd->setFileExtensions($this->allowedFileExtensions);
     $phpmd->setIgnorePattern($this->ignorePatterns);
     $filesToParse = $this->getFilesToParse();
     if (count($filesToParse) > 0) {
         $inputPath = implode(',', $filesToParse);
         $this->log('Processing files...');
         $phpmd->processFiles($inputPath, $this->rulesets, $reportRenderers, $ruleSetFactory);
         if ($this->cache) {
             $this->cache->commit();
         }
         $this->log('Finished processing files');
     } else {
         $this->log('No files to process');
     }
 }