/** * @param string $filename * @param array $options * @return Result */ private function processFile($filename, array $options) { $comments = $this->extract($filename); $result = new Result(); foreach ($comments as $comment) { $result->merge($this->processComment($filename, $options, $comment)); } return $result; }
/** * @param string $path * @param array $config * @param AbstractLogger $logger * @return Result */ private function executeGadgets($path, array $config, AbstractLogger $logger) { $result = new Result(); foreach ($config as $type => $options) { $gadget = $this->repository->get($type); $gadgetResult = $this->executeGadget($gadget, $path, $options, $logger); $result->merge($gadgetResult); } 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, 'security:check', '--format=json', $options['directory']]); $processBuilder->setWorkingDirectory($path); $output = $processBuilder->run($logger); $data = json_decode($output, true); $result = new Result(); if (count($data) == 0) { return $result; } foreach ($data as $lib => $info) { $result->merge($this->createIssues(trim(rtrim($options['directory'], '/') . '/composer.json', './'), $lib, $info, $options['level'])); } return $result; }
/** * @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']); foreach ($files as $file) { foreach ((new \PHP_Token_Stream($file))->getClasses() as $className => $class) { foreach ($class['methods'] as $methodName => $method) { if ($methodName === 'anonymous function') { continue; } $result->merge($this->processMethod($options, $method, $className, $file)); } } } return $result; }