I've been converting the lint save runner to a Harbormaster step, and saving against a branch causes a few problems:
- It's quite subject to race conditions; someone can push a commit while the analysis is running. The only sane way to make sure it happens in order is to have a "wait for previous builds" step, but this is reasonably terrible since it forces every run to happen sequentially (and since running lint on an entire repo is slow, this would result in a backlog of builds).
- File deletes are very hard to detect; this was easy in the command line runner because it could use the Arcanist APIs to find out what files were deleted. With most of the logic moving into Harbormaster and calling arc remotely, this information is much harder to get.
- No historical information.
This lint information really needs to be against a commit, with Diffusion showing the latest information for a file (if the last change of that file occurred on or before the latest commit with lint information) or a ? if newer lint information is not yet available.