Page MenuHomePhabricator

D13737.id33212.diff
No OneTemporary

D13737.id33212.diff

diff --git a/src/lint/ArcanistLintMessage.php b/src/lint/ArcanistLintMessage.php
--- a/src/lint/ArcanistLintMessage.php
+++ b/src/lint/ArcanistLintMessage.php
@@ -72,24 +72,7 @@
}
public function setLine($line) {
- if ($line === null) {
- // This just means that we don't have any line information.
- } else {
- // For compatibility, accept digit strings since a lot of linters pass
- // line numbers that they have parsed from command output or XML, which
- // won't be properly typed.
- if (is_string($line) && preg_match('/^\d+\z/', $line)) {
- $line = (int)$line;
- }
-
- if (!is_int($line)) {
- throw new Exception(
- pht(
- 'Parameter passed to setLine() must be an integer.'));
- }
- }
-
- $this->line = $line;
+ $this->line = $this->validateInteger($line, 'setLine');
return $this;
}
@@ -98,7 +81,7 @@
}
public function setChar($char) {
- $this->char = $char;
+ $this->char = $this->validateInteger($char, 'setChar');
return $this;
}
@@ -242,4 +225,35 @@
return $this->bypassChangedLineFiltering;
}
+ /**
+ * Validate an integer-like value, returning a strict integer.
+ *
+ * Further on, the pipeline is strict about types. We want to be a little
+ * less strict in linters themselves, since they often parse command line
+ * output or XML and will end up with string representations of numbers.
+ *
+ * @param mixed Integer or digit string.
+ * @return int Integer.
+ */
+ private function validateInteger($value, $caller) {
+ if ($value === null) {
+ // This just means that we don't have any information.
+ return null;
+ }
+
+ // Strings like "234" are fine, coerce them to integers.
+ if (is_string($value) && preg_match('/^\d+\z/', $value)) {
+ $value = (int)$value;
+ }
+
+ if (!is_int($value)) {
+ throw new Exception(
+ pht(
+ 'Parameter passed to "%s" must be an integer.',
+ $caller.'()'));
+ }
+
+ return $value;
+ }
+
}

File Metadata

Mime Type
text/plain
Expires
Fri, Nov 22, 1:13 PM (13 h, 24 m)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6718960
Default Alt Text
D13737.id33212.diff (2 KB)

Event Timeline