Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F14075765
D13737.id33212.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
2 KB
Referenced Files
None
Subscribers
None
D13737.id33212.diff
View Options
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
Details
Attached
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)
Attached To
Mode
D13737: Also coerce "char" for lint messages
Attached
Detach File
Event Timeline
Log In to Comment