diff --git a/src/lint/linter/ArcanistExternalLinter.php b/src/lint/linter/ArcanistExternalLinter.php --- a/src/lint/linter/ArcanistExternalLinter.php +++ b/src/lint/linter/ArcanistExternalLinter.php @@ -385,6 +385,19 @@ return null; } + /** + * Prepare the path to be added to the command string + * + * This method is expected to return an already escaped string. + * + * @param string Path to the file being linted + * + * @return string The command-ready file argument + */ + protected function getPathArgumentForLinterFuture($path) { + return csprintf('%s', $path); + } + protected function buildFutures(array $paths) { $executable = $this->getExecutableCommand(); @@ -393,15 +406,14 @@ $futures = array(); foreach ($paths as $path) { if ($this->supportsReadDataFromStdin()) { - $future = new ExecFuture( - '%C %C', - $bin, + $future = new ExecFuture('%C %C', $bin, $this->getReadDataFromStdinFilename()); $future->write($this->getEngine()->loadData($path)); } else { // TODO: In commit hook mode, we need to do more handling here. $disk_path = $this->getEngine()->getFilePathOnDisk($path); - $future = new ExecFuture('%C %s', $bin, $disk_path); + $path_argument = $this->getPathArgumentForLinterFuture($disk_path); + $future = new ExecFuture('%C %C', $bin, $path_argument); } $futures[$path] = $future;