From 30df78f64cd8c90b37100186ea3ec0c20f62fa76 Mon Sep 17 00:00:00 2001 From: Joshua Spence Date: Tue, 24 Jun 2014 09:24:30 +1000 Subject: [PATCH] Improve the handling of `.arclint` files. Summary: Throw a useful error message when an `.arclint` file is not valid JSON. Test Plan: Modified an `.arclint` file to be invalid JSON. ``` > arc lint Exception Parse error on line 24 at column 5: Expected one of: 'EOF', '}', ',', ']' (Run with --trace for a full exception trace.) ``` Reviewers: #blessed_reviewers, epriestley Reviewed By: #blessed_reviewers, epriestley Subscribers: epriestley, Korvin Differential Revision: https://secure.phabricator.com/D9679 --- .../ArcanistConfigurationDrivenLintEngine.php | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/lint/engine/ArcanistConfigurationDrivenLintEngine.php b/src/lint/engine/ArcanistConfigurationDrivenLintEngine.php index 709909e6..e812f4de 100644 --- a/src/lint/engine/ArcanistConfigurationDrivenLintEngine.php +++ b/src/lint/engine/ArcanistConfigurationDrivenLintEngine.php @@ -13,11 +13,16 @@ final class ArcanistConfigurationDrivenLintEngine extends ArcanistLintEngine { } $data = Filesystem::readFile($config_path); - $config = json_decode($data, true); - if (!is_array($config)) { - throw new Exception( - "Expected '.arclint' file to be a valid JSON file, but failed to ". - "decode it: {$config_path}"); + $config = null; + try { + $config = phutil_json_decode($data); + } catch (PhutilJSONParserException $ex) { + throw new PhutilProxyException( + pht( + "Expected '.arclint' file to be a valid JSON file, but failed to ". + "decode %s", + $config_path), + $ex); } $linters = $this->loadAvailableLinters();