diff --git a/src/lint/linter/ArcanistJSHintLinter.php b/src/lint/linter/ArcanistJSHintLinter.php index 7a730db1..29297125 100644 --- a/src/lint/linter/ArcanistJSHintLinter.php +++ b/src/lint/linter/ArcanistJSHintLinter.php @@ -132,14 +132,14 @@ final class ArcanistJSHintLinter extends ArcanistExternalLinter { } protected function parseLinterOutput($path, $err, $stdout, $stderr) { - $errors = json_decode($stdout, true); - - if (!is_array($errors)) { + $errors = null; + try { + $error = phutil_json_decode($stdout); + } catch (PhutilJSONParserException $ex) { // Something went wrong and we can't decode the output. Exit abnormally. - throw new RuntimeException( - "JSHint returned unparseable output.\n". - "stdout:\n\n{$stdout}". - "stderr:\n\n{$stderr}"); + throw new PhutilProxyException( + pht('JSHint returned unparseable output.'), + $ex); } $messages = array(); diff --git a/src/unit/parser/ArcanistPhpunitTestResultParser.php b/src/unit/parser/ArcanistPhpunitTestResultParser.php index ff06a627..4c3dfc72 100644 --- a/src/unit/parser/ArcanistPhpunitTestResultParser.php +++ b/src/unit/parser/ArcanistPhpunitTestResultParser.php @@ -172,12 +172,7 @@ final class ArcanistPhpunitTestResultParser extends ArcanistTestResultParser { $json = preg_replace('/}{\s*"/', '},{"', $json); $json = '['.$json.']'; - $json = json_decode($json); - if (!is_array($json)) { - throw new Exception('JSON could not be decoded'); - } - - return $json; + return phutil_json_decode($json); } } diff --git a/src/workflow/ArcanistCallConduitWorkflow.php b/src/workflow/ArcanistCallConduitWorkflow.php index f451fa2b..c6d3a464 100644 --- a/src/workflow/ArcanistCallConduitWorkflow.php +++ b/src/workflow/ArcanistCallConduitWorkflow.php @@ -67,8 +67,9 @@ EOTEXT pht('Waiting for JSON parameters on stdin...')); } $params = @file_get_contents('php://stdin'); - $params = json_decode($params, true); - if (!is_array($params)) { + try { + $params = phutil_json_decode($params); + } catch (PhutilJSONParserException $ex) { throw new ArcanistUsageException( pht('Provide method parameters on stdin as a JSON blob.')); } diff --git a/src/workflow/ArcanistWorkflow.php b/src/workflow/ArcanistWorkflow.php index f982f118..77b859ec 100644 --- a/src/workflow/ArcanistWorkflow.php +++ b/src/workflow/ArcanistWorkflow.php @@ -1405,7 +1405,7 @@ abstract class ArcanistWorkflow extends Phobject { if (!$file) { return array(); } - return json_decode($file, true); + return phutil_json_decode($file); }