Arcanist does not aggregate exceptions pertaining to missing external linters. We have four external linters configured (`ArcanistCSSLintLinter`, `ArcanistLesscLinter`, `ArcanistJSHintLinter` and `ArcanistJSONLintLinter`) and new devs end up doing something like this:
# Writing some code.
# `arc diff`
# Arcanist throws an exception because `csslint` is not installed.
# `sudo npm install -g csslint`
# `arc diff`
# Arcanist throws an exception because `lessc` is not installed.
# `sudo npm install -g less`
# `arc diff`
# Arcanist throws an exception because `jshint` is not installed.
# `sudo npm install -g jshint`
# `arc diff`
# Arcanist throws an exception because `jsonlint` is not installed.
# `sudo npm install -g jsonlint`
# `arc diff` (finally...)
This process is pretty painful and could be handled a lot better by allowing these exceptions to aggregate and just throwing a `PhutilAggregateException` instead. Probably we should define a new subclass of `ArcanistUsageException` for `ArcanistExternalLinterException` to differentiate these types of exceptions.