private function createIssue(GadgetInterface $gadget, $path, $message, $line, $level)
 {
     $issue = new Issue($gadget, $message);
     $issue->setLevel($level);
     $issue->setFile($path . '/foo.php');
     $issue->setLine($line);
     return $issue;
 }
Exemplo n.º 2
0
 /**
  * @param MarkdownBuilder $markdown
  * @param Issue $issue
  */
 protected function renderIssue(MarkdownBuilder $markdown, Issue $issue)
 {
     $header = $issue->getTitle();
     if ($issue->getLine()) {
         $header .= ' on line ' . $issue->getLine();
     }
     $markdown->h3($header);
     $markdown->p($issue->getDescription());
 }
Exemplo n.º 3
0
 /**
  * @param string $file
  * @param array $data
  * @return Issue
  */
 private function createIssue($file, array $data)
 {
     $issue = new Issue($this, trim($data['#']));
     $issue->setLevel(Issue::LEVEL_WARNING);
     $issue->setFile($file);
     $issue->setLine($data['@beginline']);
     $issue->setExtraInformation(['rule' => $data['@rule'], 'ruleset' => $data['@ruleset'], 'externalInfoUrl' => $data['@externalInfoUrl'], 'priority' => $data['@priority']]);
     return $issue;
 }
 /**
  * @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;
 }
Exemplo n.º 5
0
 /**
  * @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;
 }
Exemplo n.º 6
0
 /**
  * @param string $path
  * @param Issue $issue
  * @param int $around
  * @param bool $attr
  * @return string
  */
 public static function createCodeSnippet($path, Issue $issue, $around = 5, $attr = false)
 {
     $snippet = SnippetHelper::createSnippetByFile(Path::join($path, $issue->getFile()), $issue->getLine(), $around);
     $extension = pathinfo($issue->getFile(), PATHINFO_EXTENSION);
     $offset = max($issue->getLine() - $around, 1);
     $options = [];
     if ($attr) {
         $options = ['file' => $issue->getFile(), 'line' => $issue->getLine(), 'offset' => $offset];
     }
     return (new MarkdownBuilder())->code($snippet, $extension, $options)->getMarkdown();
 }
Exemplo n.º 7
0
 /**
  * @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);
 }
Exemplo n.º 8
0
 /**
  * @param array $data
  * @return Issue
  */
 private function createIssue(array $data)
 {
     $issue = new Issue($this, $data['message']);
     $issue->setFile($data['file']);
     $issue->setLine($data['line']);
     switch ($data['type']) {
         case 'error':
             $issue->setLevel(Issue::LEVEL_ERROR);
             break;
         case 'warning':
             $issue->setLevel(Issue::LEVEL_WARNING);
             break;
     }
     $issue->setExtraInformation(['source' => $data['source'], 'severity' => $data['severity'], 'column' => $data['column']]);
     return $issue;
 }
Exemplo n.º 9
0
 /**
  * @param string $path
  * @param string $message
  * @param int $line
  * @param string $level
  *
  * @return Issue
  */
 private function createIssue($path, $message, $line, $level)
 {
     $issue = new Issue($this->OUT, $message);
     $issue->setLevel($level);
     $issue->setFile($path . '/Foo.php');
     $issue->setLine($line);
     return $issue;
 }
Exemplo n.º 10
0
 /**
  * @param array $options
  * @param array $method
  * @param string $className
  * @param string $file
  * @param DocBlock\Tag\ParamTag $docBlockParam
  *
  * @return Issue
  */
 public function createIssueForMissingTypeInDocBlock(array $options, array $method, $className, $file, DocBlock\Tag\ParamTag $docBlockParam)
 {
     $issue = new Issue($this->gadget, sprintf('Missing type for variable %s in docblock of "%s"', $docBlockParam->getName(), $className));
     $issue->setLevel($options['missing_type_in_docblock']);
     $issue->setLine($method['startLine']);
     $issue->setFile($file);
     return $issue;
 }
Exemplo n.º 11
0
 /**
  * @param string $composer
  * @param string $lib
  * @param string $version
  * @param array $advisory
  * @param string $level
  * @return Issue
  */
 private function createIssue($composer, $lib, $version, array $advisory, $level)
 {
     $message = sprintf('package "%s" with the version "%s" have known vulnerabilities', $lib, $version);
     $issue = new Issue($this, $message);
     $issue->setDescription($this->createDescription($advisory['title'], $advisory['cve'], $advisory['link']));
     $issue->setFile($composer);
     $issue->setLevel($level);
     $issue->setExtraInformation(['lib' => $lib, 'version' => $version, 'link' => $advisory['link'], 'cve' => $advisory['cve']]);
     return $issue;
 }
Exemplo n.º 12
0
 /**
  * @param AnalyseIssue $issue
  * @return string
  */
 private function hash(AnalyseIssue $issue)
 {
     return md5($issue->getGadget() . $issue->getFile() . $issue->getLine() . $issue->getTitle());
 }