Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F2889371
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Award Token
Flag For Later
Advanced/Developer...
View Handle
View Hovercard
Size
2 KB
Referenced Files
None
Subscribers
None
View Options
diff --git a/src/lint/linter/ArcanistPhpLinter.php b/src/lint/linter/ArcanistPhpLinter.php
index 5a0e4dc5..789e2e8d 100644
--- a/src/lint/linter/ArcanistPhpLinter.php
+++ b/src/lint/linter/ArcanistPhpLinter.php
@@ -1,85 +1,81 @@
<?php
/**
* Uses "php -l" to detect syntax errors in PHP code.
*/
final class ArcanistPhpLinter extends ArcanistExternalLinter {
public function getInfoName() {
return 'php -l';
}
public function getInfoURI() {
return 'http://php.net/';
}
public function getInfoDescription() {
return pht(
'Checks for syntax errors in php files.');
}
public function getLinterName() {
return 'PHP';
}
public function getLinterConfigurationName() {
return 'php';
}
protected function getMandatoryFlags() {
return array('-l');
}
public function getInstallInstructions() {
return pht('Install PHP.');
}
public function getDefaultBinary() {
return 'php';
}
public function getVersion() {
- list($stdout) = execx('%C --version', $this->getExecutableCommand());
-
- $matches = array();
- $regex = '/^PHP (?P<version>\d+\.\d+\.\d+)\b/';
- if (preg_match($regex, $stdout, $matches)) {
- return $matches['version'];
- } else {
- return false;
- }
+ list($stdout) = execx(
+ '%C --run %s',
+ $this->getExecutableCommand(),
+ 'echo phpversion();');
+ return $stdout;
}
public function shouldExpectCommandErrors() {
return true;
}
public function supportsReadDataFromStdin() {
return false;
}
protected function parseLinterOutput($path, $err, $stdout, $stderr) {
// Older versions of php had both on $stdout, newer ones split it
// Combine $stdout and $stderr for consistency
$stdout = $stderr."\n".$stdout;
$matches = array();
$regex = '/^(?<type>.+?) error:\s+(?<error>.*?)\s+in\s+(?<file>.*?)'.
'\s+on line\s+(?<line>\d*)$/m';
if (preg_match($regex, $stdout, $matches)) {
$type = strtolower($matches['type']);
$message = new ArcanistLintMessage();
$message->setPath($matches['file']);
$message->setLine($matches['line']);
$message->setCode('php.'.$type);
$message->setDescription('This file contains a '.$type.' error: '.
$matches['error'].' on line '.$matches['line']);
$message->setSeverity(ArcanistLintSeverity::SEVERITY_ERROR);
// php -l only returns the first error
return array($message);
}
return array();
}
}
File Metadata
Details
Attached
Mime Type
text/x-diff
Expires
Jan 19 2025, 12:03 (4 w, 4 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1124364
Default Alt Text
(2 KB)
Attached To
Mode
rARC Arcanist
Attached
Detach File
Event Timeline
Log In to Comment