Page MenuHomePhabricator

Allow linters to be skipped
Open, NormalPublic

Description

Currently we have the ability to "skip" a unit test if, for example, you are missing a dependency locally. This is then reflected in the Differential UI which shows "SKIPPED" for that particular unit test.

We should extend this functionality to linters as well. This would allow diffs to be submitted without installing a bunch of externals needed for the linters configured for the project. This would probably involve tweaking a bunch of stuff:

  • The Differential UI should probably show a list of linters and their status (PASS / ERROR / WARNING / ADVICE / SKIP) instead of showing a list of lint messages.
  • We currently don't send this information from arc diff. We should extend the data that is transferred using the arc:lint key to include linter statuses.

There is some discussion in D10463.

Event Timeline

joshuaspence raised the priority of this task from to Needs Triage.
joshuaspence updated the task description. (Show Details)
joshuaspence added projects: Lint, Differential.
joshuaspence added a subscriber: joshuaspence.
joshuaspence triaged this task as Normal priority.

Just collecting some more related stuff here: D14298 adds a .arclint-configurable version requirement check, which currently executes as a side effect of getCacheVersion().

A better structure here is probably more like:

  • In ArcanistLintEngine, move the getRunnableLinters() call up (to before we do all the cache stuff).
  • Remove canRun(), which is only used by the XML linter. Replace this with a more general call which does availability checks.
  • Move internal binary availability checks, future internal binary version checks, and .arclint configured version checks here.

So we'd just get all of the version checks out of the way up front in a structured way.