diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -89,6 +89,8 @@ 'ArcanistGoLintLinterTestCase' => 'lint/linter/__tests__/ArcanistGoLintLinterTestCase.php', 'ArcanistGoTestResultParser' => 'unit/parser/ArcanistGoTestResultParser.php', 'ArcanistGoTestResultParserTestCase' => 'unit/parser/__tests__/ArcanistGoTestResultParserTestCase.php', + 'ArcanistGoVetLinter' => 'lint/linter/ArcanistGoVetLinter.php', + 'ArcanistGoVetLinterTestCase' => 'lint/linter/__tests__/ArcanistGoVetLinterTestCase.php', 'ArcanistHLintLinter' => 'lint/linter/ArcanistHLintLinter.php', 'ArcanistHLintLinterTestCase' => 'lint/linter/__tests__/ArcanistHLintLinterTestCase.php', 'ArcanistHelpWorkflow' => 'workflow/ArcanistHelpWorkflow.php', @@ -289,6 +291,8 @@ 'ArcanistGoLintLinterTestCase' => 'ArcanistExternalLinterTestCase', 'ArcanistGoTestResultParser' => 'ArcanistTestResultParser', 'ArcanistGoTestResultParserTestCase' => 'ArcanistTestCase', + 'ArcanistGoVetLinter' => 'ArcanistExternalLinter', + 'ArcanistGoVetLinterTestCase' => 'ArcanistExternalLinterTestCase', 'ArcanistHLintLinter' => 'ArcanistExternalLinter', 'ArcanistHLintLinterTestCase' => 'ArcanistExternalLinterTestCase', 'ArcanistHelpWorkflow' => 'ArcanistWorkflow', diff --git a/src/lint/linter/ArcanistGoVetLinter.php b/src/lint/linter/ArcanistGoVetLinter.php new file mode 100644 --- /dev/null +++ b/src/lint/linter/ArcanistGoVetLinter.php @@ -0,0 +1,67 @@ +setPath($path); + $message->setLine($matches[1]); + $message->setCode($this->getLinterName()); + $message->setDescription(ucfirst(trim($matches[2]))); + $message->setSeverity(ArcanistLintSeverity::SEVERITY_WARNING); + + $messages[] = $message; + } + } + + return $messages; + } + +} diff --git a/src/lint/linter/__tests__/ArcanistGoVetLinterTestCase.php b/src/lint/linter/__tests__/ArcanistGoVetLinterTestCase.php new file mode 100644 --- /dev/null +++ b/src/lint/linter/__tests__/ArcanistGoVetLinterTestCase.php @@ -0,0 +1,9 @@ +executeTestsInDirectory(dirname(__FILE__).'/govet/', null, 'go'); + } + +} diff --git a/src/lint/linter/__tests__/ArcanistLinterTestCase.php b/src/lint/linter/__tests__/ArcanistLinterTestCase.php --- a/src/lint/linter/__tests__/ArcanistLinterTestCase.php +++ b/src/lint/linter/__tests__/ArcanistLinterTestCase.php @@ -28,7 +28,7 @@ */ public function executeTestsInDirectory( $root, - ArcanistLinter $linter = null) { + ArcanistLinter $linter = null, $tempFileSuffix = null) { if (!$linter) { $linter = $this->getLinter(); @@ -41,7 +41,7 @@ $test_count = 0; foreach ($files as $file) { - $this->lintFile($root.$file, $linter); + $this->lintFile($root.$file, $linter, $tempFileSuffix); $test_count++; } @@ -50,7 +50,8 @@ pht('Expected to find some .lint-test tests in directory %s!', $root)); } - private function lintFile($file, ArcanistLinter $linter) { + private function lintFile($file, ArcanistLinter $linter, + $tempFileSuffix = null) { $linter = clone $linter; $contents = Filesystem::readFile($file); @@ -91,6 +92,9 @@ try { $tmp = new TempFile($basename); + if ($tempFileSuffix !== null) { + $tmp .= '.'.$tempFileSuffix; + } Filesystem::writeFile($tmp, $data); $full_path = (string)$tmp; diff --git a/src/lint/linter/__tests__/coffeelint/duplicate_key.lint-test b/src/lint/linter/__tests__/coffeelint/duplicate_key.lint-test --- a/src/lint/linter/__tests__/coffeelint/duplicate_key.lint-test +++ b/src/lint/linter/__tests__/coffeelint/duplicate_key.lint-test @@ -14,5 +14,5 @@ config = foo: 1 ~~~~~~~~~~ -error:8: +error:7: error:9: diff --git a/src/lint/linter/__tests__/govet/fmt.lint-test b/src/lint/linter/__tests__/govet/fmt.lint-test new file mode 100644 --- /dev/null +++ b/src/lint/linter/__tests__/govet/fmt.lint-test @@ -0,0 +1,9 @@ +package main + +import "fmt" + +func main() { + fmt.Println("%d", 1) +} +~~~~~~~~~~ +warning:6: