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.