Changeset View
Changeset View
Standalone View
Standalone View
resources/grep_linter.php
- This file was added.
Property | Old Value | New Value |
---|---|---|
File Mode | null | 100755 |
#!/usr/bin/env php | |||||
<?php | |||||
require_once dirname(dirname(__FILE__)).'/scripts/__init_script__.php'; | |||||
$args = new PhutilArgumentParser($argv); | |||||
$args->setTagline(pht('a grep linter')); | |||||
$args->setSynopsis(<<<EOHELP | |||||
**grep_linter.php** | |||||
Checks for the occurence of the specified words. | |||||
EOHELP | |||||
); | |||||
$args->parseStandardArguments(); | |||||
$args->parse( | |||||
array( | |||||
array( | |||||
'name' => 'advice', | |||||
'param' => 'word', | |||||
'help' => pht('TODO'), | |||||
), | |||||
array( | |||||
'name' => 'warning', | |||||
'param' => 'word', | |||||
'help' => pht('TODO'), | |||||
), | |||||
array( | |||||
'name' => 'error', | |||||
'param' => 'word', | |||||
'help' => pht('TODO'), | |||||
), | |||||
array( | |||||
'name' => 'path', | |||||
'wildcard' => true, | |||||
), | |||||
)); | |||||
$paths = $args->getArg('path'); | |||||
if (!$paths) { | |||||
$args->printHelpAndExit(); | |||||
} | |||||
$advice = $args->getArg('advice'); | |||||
$warning = $args->getArg('warning'); | |||||
$error = $args->getArg('error'); | |||||
function get_regex($args, $severity) { | |||||
if (!$args->getArg($severity)) { | |||||
return null; | |||||
} | |||||
return '/('.preg_quote(implode('|', explode(',', $args->getArg($severity)))).')/'; | |||||
} | |||||
$regexes = array_filter(array( | |||||
'advice' => get_regex($args, 'advice'), | |||||
'warning' => get_regex($args, 'warning'), | |||||
'error' => get_regex($args, 'error'), | |||||
)); | |||||
foreach ($paths as $path) { | |||||
$data = Filesystem::readFile($path); | |||||
foreach ($regexes as $severity => $regex) { | |||||
$matches = null; | |||||
$preg = preg_match_all($regex, $data, $matches, PREG_OFFSET_CAPTURE); | |||||
if (!$preg) { | |||||
continue; | |||||
} | |||||
foreach ($matches[0] as $match) { | |||||
list($string, $offset) = $match; | |||||
echo $severity.':'.$offset."\n"; | |||||
} | |||||
} | |||||
} |