Changeset View
Changeset View
Standalone View
Standalone View
src/lint/linter/ArcanistClosureLinter.php
- This file was added.
| <?php | |||||
| /** | |||||
| * Uses gJSLint to detect errors and potential problems in JavaScript code. | |||||
| */ | |||||
| final class ArcanistClosureLinter extends ArcanistExternalLinter { | |||||
| public function getInfoName() { | |||||
| return 'Closure Linter'; | |||||
| } | |||||
| public function getInfoURI() { | |||||
| return 'https://developers.google.com/closure/utilities/'; | |||||
| } | |||||
| public function getInfoDescription() { | |||||
| return pht( | |||||
| 'Uses Google\'s Closure Linter to check Javascript code.'); | |||||
| } | |||||
| public function getLinterName() { | |||||
| return 'Closure Linter'; | |||||
| } | |||||
| public function getLinterConfigurationName() { | |||||
| return 'gjslint'; | |||||
| } | |||||
| protected function getDefaultMessageSeverity($code) { | |||||
| return ArcanistLintSeverity::SEVERITY_ERROR; | |||||
| } | |||||
epriestley: The regex below hard-codes `E:`, can this actually emit `W:` codes? | |||||
| public function getDefaultBinary() { | |||||
| return 'gjslint'; | |||||
| } | |||||
| public function getInstallInstructions() { | |||||
| return pht('Install gJSLint using `sudo easy_install http://closure-linter'. | |||||
| '.googlecode.com/files/closure_linter-latest.tar.gz`'); | |||||
| } | |||||
| public function shouldExpectCommandErrors() { | |||||
| return true; | |||||
| } | |||||
| public function supportsReadDataFromStdin() { | |||||
| return false; | |||||
Not Done Inline ActionsJust return 'gjslint', instead of adding new deprecated config options. The bin option in .arclint will let you set this. epriestley: Just return `'gjslint'`, instead of adding new deprecated config options. The `bin` option in `. | |||||
| } | |||||
| protected function parseLinterOutput($path, $err, $stdout, $stderr) { | |||||
| // Each line looks like this: | |||||
| // Line 46, E:0110: Line too long (87 characters). | |||||
| $regex = '/^Line (\d+), (E:\d+): (.*)/'; | |||||
| $severity_code = ArcanistLintSeverity::SEVERITY_ERROR; | |||||
| $lines = explode("\n", $stdout); | |||||
| $messages = array(); | |||||
| foreach ($lines as $line) { | |||||
| $line = trim($line); | |||||
| $matches = null; | |||||
| if (!preg_match($regex, $line, $matches)) { | |||||
| continue; | |||||
| } | |||||
| foreach ($matches as $key => $match) { | |||||
| $matches[$key] = trim($match); | |||||
| } | |||||
| $message = new ArcanistLintMessage(); | |||||
| $message->setPath($path); | |||||
| $message->setLine($matches[1]); | |||||
| $message->setName($matches[2]); | |||||
| $message->setCode($this->getLinterName()); | |||||
| $message->setDescription($matches[3]); | |||||
| $message->setSeverity($severity_code); | |||||
Not Done Inline ActionsJust remove, flags should cover this now. epriestley: Just remove, `flags` should cover this now. | |||||
| $messages[] = $message; | |||||
| } | |||||
| return $messages; | |||||
| } | |||||
| } | |||||
The regex below hard-codes E:, can this actually emit W: codes?