I think that it would be useful to be able to specify (in an `.arcconfig` or `.arclint` file) minimum versions for external linters (`ArcanistExternalLinter`). There are a couple of reasons that this makes sense:
# The `ArcanistExternalLinter` may rely on some flags which were introduced in a certain version of the linter.
# The project owner may wish to enforce a minimum version due to, perhaps, a new type of lint that was introduced.
There would be a few steps.involved here that could be tackled incrementally:
# Adding a `getVersion` function to the `ArcanistExternalLinter`. This would be conceptually quite similar to the `getCacheVersion` function but a bit simpler (doesn't need to account for flags, for example).
# Providing a method for comparing version numbers in `libphutil`. This might be more difficult to handle all cases, but shouldnt be too hard in the general case. For example, most (if not all) linters from NPM should be using semantic versioning.
# Providing a configuration for `.arcconfig` or `.arclint` to specify version dependencies.