diff options
author | Thomas Müller <thomas.mueller@tmit.eu> | 2015-02-16 16:55:57 +0100 |
---|---|---|
committer | Thomas Müller <thomas.mueller@tmit.eu> | 2015-02-16 16:55:57 +0100 |
commit | 92710591955e4696c29628b438dbb7a173ee379c (patch) | |
tree | 1764088512cd8f36b9eedd52f5ef2069fa1c2ea8 /core | |
parent | 8eb804b1f60befd6491a8b8a1ba29247bfc8c419 (diff) | |
parent | bd994cb29464b395f60adcf2493fac218863f307 (diff) | |
download | nextcloud-server-92710591955e4696c29628b438dbb7a173ee379c.tar.gz nextcloud-server-92710591955e4696c29628b438dbb7a173ee379c.zip |
Merge pull request #13750 from owncloud/enhanced-code-checker
Implement php code checker to detect usage of not allowed private ...
Diffstat (limited to 'core')
-rw-r--r-- | core/command/app/checkcode.php | 53 | ||||
-rw-r--r-- | core/register_command.php | 1 |
2 files changed, 54 insertions, 0 deletions
diff --git a/core/command/app/checkcode.php b/core/command/app/checkcode.php new file mode 100644 index 00000000000..55c30b900b3 --- /dev/null +++ b/core/command/app/checkcode.php @@ -0,0 +1,53 @@ +<?php +/** + * Copyright (c) 2015 Thomas Müller <deepdiver@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OC\Core\Command\App; + +use Symfony\Component\Console\Command\Command; +use Symfony\Component\Console\Input\InputArgument; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; + +class CheckCode extends Command { + protected function configure() { + $this + ->setName('app:check-code') + ->setDescription('check code to be compliant') + ->addArgument( + 'app-id', + InputArgument::REQUIRED, + 'enable the specified app' + ); + } + + protected function execute(InputInterface $input, OutputInterface $output) { + $appId = $input->getArgument('app-id'); + $codeChecker = new \OC\App\CodeChecker(); + $codeChecker->listen('CodeChecker', 'analyseFileBegin', function($params) use ($output) { + $output->writeln("<info>Analysing {$params}</info>"); + }); + $codeChecker->listen('CodeChecker', 'analyseFileFinished', function($params) use ($output) { + $count = count($params); + $output->writeln(" {$count} errors"); + usort($params, function($a, $b) { + return $a['line'] >$b['line']; + }); + + foreach($params as $p) { + $line = sprintf("%' 4d", $p['line']); + $output->writeln(" <error>line $line: {$p['disallowedToken']} - {$p['reason']}</error>"); + } + }); + $errors = $codeChecker->analyse($appId); + if (empty($errors)) { + $output->writeln('<info>App is compliant - awesome job!</info>'); + } else { + $output->writeln('<error>App is not compliant</error>'); + } + } +} diff --git a/core/register_command.php b/core/register_command.php index 5aa55be3e2c..d7aaf9a41b7 100644 --- a/core/register_command.php +++ b/core/register_command.php @@ -15,6 +15,7 @@ $application->add(new OC\Core\Command\Db\ConvertType(\OC::$server->getConfig(), $application->add(new OC\Core\Command\Upgrade(\OC::$server->getConfig())); $application->add(new OC\Core\Command\Maintenance\SingleUser()); $application->add(new OC\Core\Command\Maintenance\Mode(\OC::$server->getConfig())); +$application->add(new OC\Core\Command\App\CheckCode()); $application->add(new OC\Core\Command\App\Disable()); $application->add(new OC\Core\Command\App\Enable()); $application->add(new OC\Core\Command\App\ListApps()); |