1
0
Fork 0
mirror of https://we.phorge.it/source/arcanist.git synced 2024-10-24 17:48:50 +02:00
phorge-arcanist/src/lint/linter
epriestley 9cd098ca01 Add "ArcanistSingleLintEngine" and "ArcanistScriptAndRegexLinter"
Summary:
Request from @csilvers. Allow installs to get most linter features with regexes, configuration and external scripts if they are hesitant to write phutil libraries.

  - Add "ArcanistSingleLintEngine", which implements the smallest possible engine behavior (run one linter on every path).
  - Add "ArcanistScriptAndRegexLinter", which uses a script and a regex to parse lint output from other scripts.

Depends on D2618.

Test Plan:
Basics:

  $ arc set-config lint.engine ArcanistSingleLintEngine
  Set key 'lint.engine' = 'ArcanistSingleLintEngine'.
  $ arc set-config lint.engine.single.linter ArcanistScriptAndRegexLinter
  Set key 'lint.engine.single.linter' = 'ArcanistScriptAndRegexLinter'.
  $ arc set-config linter.scriptandregex.script 'echo derp #'
  Set key 'linter.scriptandregex.script' = 'echo derp #'.
  $ arc set-config linter.scriptandregex.regex '/^(?P<message>.*)$/m'
  Set key 'linter.scriptandregex.regex' = '/^(?P<message>.*)$/m'.
  $ arc lint
  >>> Lint for .arcconfig:

     Error  (S&RX) Lint
      derp

                 1 {
                 2   "project_id" : "arcanist",
                 3   "conduit_uri" : "https://secure.phabricator.com/",

Throw:

  $ arc set-config linter.scriptandregex.regex '/^(?P<throw>.*)$/m'
  Set key 'linter.scriptandregex.regex' = '/^(?P<throw>.*)$/m' (was '/^(?P<message>.*)$/m').
  $ arc lint
  Usage Exception: ArcanistScriptAndRegexLinter: configuration captured a 'throw' named capturing group, 'derp'. Script output:
  derp

Ignore:

  $ arc set-config linter.scriptandregex.regex '/^(?P<ignore>.*)$/m'
  Set key 'linter.scriptandregex.regex' = '/^(?P<ignore>.*)$/m' (was '/^(?P<throw>.*)$/m').
  $ arc lint
   OKAY  No lint warnings.

Severity:

  $ arc set-config linter.scriptandregex.regex '/^(?P<warning>.)(?P<message>.*)$/m'
  Set key 'linter.scriptandregex.regex' = '/^(?P<warning>.)(?P<message>.*)$/m' (was '/^(?P<ignore>.*)$/m').
  $ arc lint
  >>> Lint for src/lint/engine/single/ArcanistSingleLintEngine.php:

     Warning  (S&RX) Lint
      erp

                 1 <?php
                 2
                 3 /*

Reviewers: csilvers, btrahan, vrana

Reviewed By: csilvers

CC: aran

Differential Revision: https://secure.phabricator.com/D2619
2012-05-31 12:09:01 -07:00
..
apachelicense Upgrade arcanist to libphutil v2 2012-05-30 14:22:59 -07:00
base Add "ArcanistSingleLintEngine" and "ArcanistScriptAndRegexLinter" 2012-05-31 12:09:01 -07:00
conduit Upgrade arcanist to libphutil v2 2012-05-30 14:22:59 -07:00
filename Upgrade arcanist to libphutil v2 2012-05-30 14:22:59 -07:00
generated Upgrade arcanist to libphutil v2 2012-05-30 14:22:59 -07:00
jshint Upgrade arcanist to libphutil v2 2012-05-30 14:22:59 -07:00
license Upgrade arcanist to libphutil v2 2012-05-30 14:22:59 -07:00
nolint Upgrade arcanist to libphutil v2 2012-05-30 14:22:59 -07:00
pep8 Upgrade arcanist to libphutil v2 2012-05-30 14:22:59 -07:00
phpcs Upgrade arcanist to libphutil v2 2012-05-30 14:22:59 -07:00
phutillibrary Add "ArcanistPhutilLibraryLinter" to replace "ArcanistPhutilModuleLinter" 2012-05-30 07:25:09 -07:00
phutilmodule Revert D2306 2012-05-30 15:20:25 -07:00
pyflakes Upgrade arcanist to libphutil v2 2012-05-30 14:22:59 -07:00
pylint Upgrade arcanist to libphutil v2 2012-05-30 14:22:59 -07:00
scriptandregex Add "ArcanistSingleLintEngine" and "ArcanistScriptAndRegexLinter" 2012-05-31 12:09:01 -07:00
spelling Upgrade arcanist to libphutil v2 2012-05-30 14:22:59 -07:00
text Upgrade arcanist to libphutil v2 2012-05-30 14:22:59 -07:00
xhpast Upgrade arcanist to libphutil v2 2012-05-30 14:22:59 -07:00