1
0
Fork 0
mirror of https://we.phorge.it/source/arcanist.git synced 2024-11-25 16:22:42 +01:00

If the Script-and-Regex linter captures no "line" text, treat the message as affecting the entire file

Summary: Fixes T10124.

Test Plan:
Added this "linter" to `.arclint`:

```
    "thing": {
      "type": "script-and-regex",
      "script-and-regex.script": "echo every file is very bad #",
      "script-and-regex.regex": "/^(?P<message>.*)/"
    }
```

...to produce this diff. Also made a variant of it which matches lines to make sure that still works.

Reviewers: chad

Reviewed By: chad

Maniphest Tasks: T10124

Differential Revision: https://secure.phabricator.com/D15000
This commit is contained in:
epriestley 2016-01-11 17:18:58 -08:00
parent aeb374b333
commit 05c12eb9d9

View file

@ -108,7 +108,8 @@
* not specified, defaults to the linted file. It is generally not necessary
* to capture this unless the linter can raise messages in files other than
* the one it is linting.
* - `line` (optional) The line number of the message.
* - `line` (optional) The line number of the message. If no text is
* captured, the message is assumed to affect the entire file.
* - `char` (optional) The character offset of the message.
* - `offset` (optional) The byte offset of the message. If captured, this
* supersedes `line` and `char`.
@ -324,7 +325,7 @@ final class ArcanistScriptAndRegexLinter extends ArcanistLinter {
* Get the line and character of the message from the regex match.
*
* @param dict Captured groups from regex.
* @return pair<int,int|null> Line and character of the message.
* @return pair<int|null,int|null> Line and character of the message.
*
* @task parse
*/
@ -337,11 +338,14 @@ final class ArcanistScriptAndRegexLinter extends ArcanistLinter {
}
$line = idx($match, 'line');
if ($line) {
if (strlen($line)) {
$line = (int)$line;
} else {
if (!$line) {
$line = 1;
}
} else {
$line = null;
}
$char = idx($match, 'char');
if ($char) {