/** * @param string $composer * @param string $lib * @param array $info * @param string $level * @return Result */ private function createIssues($composer, $lib, array $info, $level) { $result = new Result(); foreach ($info['advisories'] as $advisory) { $result->addIssue($this->createIssue($composer, $lib, $info['version'], $advisory, $level)); } return $result; }
/** * @param string $message * @param Node $node * @param string $level */ private function addIssue($message, Node $node = null, $level = Issue::LEVEL_ERROR) { $issue = new Issue($this->gadget, $message); $issue->setLevel($level); $issue->setFile($this->currentFile); if ($node) { $issue->setLine($node->getLine()); } $this->result->addIssue($issue); }
/** * @param string $path * @param array $options * @param AbstractLogger $logger * @return Result */ public function run($path, array $options, AbstractLogger $logger) { $result = new Result(); $files = FilesystemHelper::findFiles($path, $options['files'], '*.twig'); foreach ($files as $file) { try { $this->twig->parse($this->twig->tokenize(file_get_contents($file), $file)); } catch (\Twig_Error $e) { $message = get_class($e) . ': ' . $e->getRawMessage(); $issue = new Issue($this, $message); $issue->setLevel($options['error_level']); $issue->setFile($file); $issue->setLine($e->getTemplateLine()); $result->addIssue($issue); } } return $result; }
/** * @param string $path * @param array $options * @param AbstractLogger $logger * @return Result */ public function run($path, array $options, AbstractLogger $logger) { $processBuilder = new ProcessBuilder([$this->bin, '--report=csv']); foreach ($options['standards'] as $standard) { $processBuilder->add('--standard=' . $standard); } $processBuilder->add('--extensions=' . implode(',', $options['extensions'])); foreach ($options['files'] as $file) { $processBuilder->add($file); } $processBuilder->setWorkingDirectory($path); $output = $processBuilder->run($logger); $rawIssues = $this->convertFromCsvToArray($output); $result = new Result(); foreach ($rawIssues as $info) { $result->addIssue($this->createIssue($info)); } return $result; }
/** * @param array $options * @param array $method * @param string $className * @param string $file * * @return Result */ private function processMethod(array $options, array $method, $className, $file) { $result = new Result(); if ($method['docblock'] === null) { if ($options['missing_docblock'] !== null) { $result->addIssue($this->issueFactory->createIssueForMissingDocblock($options, $method, $className, $file)); } return $result; } $docBlock = new DocBlock($method['docblock']); $tagsInDocblock = $docBlock->getTags(); $signature = new FunctionSignature($method['signature']); if ($options['type_missmatch'] !== null) { foreach ($this->differ->inDocBlockAndSignature($tagsInDocblock, $signature) as $params) { /** @var DocBlock\Tag\ParamTag $docBlockParam */ $docBlockParam = $params[0]; /** @var FunctionParameter $functionParameter */ $functionParameter = $params[1]; if (!$this->differ->equalTypes($functionParameter, $docBlockParam)) { if (!$functionParameter->type) { $result->addIssue($this->issueFactory->createIssueForMissingTypeInSignature($options, $method, $className, $file, $functionParameter)); } elseif (!$docBlockParam->getType()) { $result->addIssue($this->issueFactory->createIssueForMissingTypeInDocBlock($options, $method, $className, $file, $docBlockParam)); } else { $result->addIssue($this->issueFactory->createIssueForMismatchingTypes($options, $method, $className, $file, $functionParameter, $docBlockParam)); } } } } if ($options['obsolete_variable'] !== null) { foreach ($this->differ->inDocblockOnly($tagsInDocblock, $signature) as $param) { $result->addIssue($this->issueFactory->createIssueForObsoleteVariable($options, $method, $className, $file, $param->getContent())); } } if ($options['missing_variable'] !== null) { foreach ($this->differ->inSignatureOnly($tagsInDocblock, $signature) as $param) { $result->addIssue($this->issueFactory->createIssueForMissingVariable($options, $method, $className, $file, $param)); } } return $result; }
/** * @param string $path * @param array $options * @param AbstractLogger $logger * @return Result */ public function run($path, array $options, AbstractLogger $logger) { $processBuilder = new ProcessBuilder([$this->bin]); $processBuilder->add(implode(',', $options['files'])); $processBuilder->add('xml'); $processBuilder->add(implode(',', $options['rulesets'])); $processBuilder->setWorkingDirectory($path); $output = $processBuilder->run($logger); $data = $this->convertFromXmlToArray($output); $result = new Result(); if (!isset($data['file']) || !is_array($data['file'])) { return $result; } $files = isset($data['file'][0]) ? $data['file'] : [$data['file']]; foreach ($files as $file) { $violations = isset($file['violation'][0]) ? $file['violation'] : [$file['violation']]; foreach ($violations as $violation) { $result->addIssue($this->createIssue($file['@name'], $violation)); } } return $result; }
/** * @param string $filename * @param array $options * @param string $comment * @return Result */ private function processComment($filename, array $options, $comment) { $result = new Result(); foreach (explode("\n", $comment['content']) as $lineOffset => $line) { foreach ($options['blacklist'] as $blacklistedWord => $errorLevel) { if (stristr($line, $blacklistedWord) === false) { continue; } $issue = new Issue($this, sprintf('found "%s" in a comment', $blacklistedWord)); $issue->setLevel($errorLevel); $issue->setFile($filename); $issue->setLine($comment['line'] + $lineOffset); $result->addIssue($issue); } } return $result; }