mirror of
https://we.phorge.it/source/arcanist.git
synced 2024-11-22 06:42:41 +01:00
Add a linter rule for newlines after PHP open tags
Summary: `<?php\n\n...` is much easier to read than `<?php\n...`. Depends on D13889 and D13890. Test Plan: Added unit tests. Reviewers: #blessed_reviewers, epriestley Reviewed By: #blessed_reviewers, epriestley Subscribers: epriestley, Korvin Differential Revision: https://secure.phabricator.com/D13534
This commit is contained in:
parent
10f9c460fa
commit
a5304e472d
58 changed files with 327 additions and 190 deletions
|
@ -171,6 +171,7 @@ phutil_register_library_map(array(
|
|||
'ArcanistMissingLinterException' => 'lint/linter/exception/ArcanistMissingLinterException.php',
|
||||
'ArcanistModifierOrderingXHPASTLinterRule' => 'lint/linter/xhpast/rules/ArcanistModifierOrderingXHPASTLinterRule.php',
|
||||
'ArcanistNamingConventionsXHPASTLinterRule' => 'lint/linter/xhpast/rules/ArcanistNamingConventionsXHPASTLinterRule.php',
|
||||
'ArcanistNewlineAfterOpenTagXHPASTLinterRule' => 'lint/linter/xhpast/rules/ArcanistNewlineAfterOpenTagXHPASTLinterRule.php',
|
||||
'ArcanistNoEffectException' => 'exception/usage/ArcanistNoEffectException.php',
|
||||
'ArcanistNoEngineException' => 'exception/usage/ArcanistNoEngineException.php',
|
||||
'ArcanistNoLintLinter' => 'lint/linter/ArcanistNoLintLinter.php',
|
||||
|
@ -455,6 +456,7 @@ phutil_register_library_map(array(
|
|||
'ArcanistMissingLinterException' => 'Exception',
|
||||
'ArcanistModifierOrderingXHPASTLinterRule' => 'ArcanistXHPASTLinterRule',
|
||||
'ArcanistNamingConventionsXHPASTLinterRule' => 'ArcanistXHPASTLinterRule',
|
||||
'ArcanistNewlineAfterOpenTagXHPASTLinterRule' => 'ArcanistXHPASTLinterRule',
|
||||
'ArcanistNoEffectException' => 'ArcanistUsageException',
|
||||
'ArcanistNoEngineException' => 'ArcanistUsageException',
|
||||
'ArcanistNoLintLinter' => 'ArcanistLinter',
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
|
||||
array(1, 2, 3);
|
||||
array(1, 2, 3,);
|
||||
array(
|
||||
|
@ -33,14 +34,15 @@ array(
|
|||
2,
|
||||
3, /* comment */ );
|
||||
~~~~~~~~~~
|
||||
advice:3:14
|
||||
advice:12:3
|
||||
advice:16:3
|
||||
advice:26:3
|
||||
advice:30:3
|
||||
advice:34:20
|
||||
advice:4:14
|
||||
advice:13:3
|
||||
advice:17:3
|
||||
advice:27:3
|
||||
advice:31:3
|
||||
advice:35:20
|
||||
~~~~~~~~~~
|
||||
<?php
|
||||
|
||||
array(1, 2, 3);
|
||||
array(1, 2, 3);
|
||||
array(
|
||||
|
|
|
@ -1,15 +1,17 @@
|
|||
<?php
|
||||
|
||||
$a []= 1;
|
||||
$a[] = 1;
|
||||
$a[]=1;
|
||||
$a [] = 1;
|
||||
~~~~~~~~~~
|
||||
warning:2:3
|
||||
warning:2:6
|
||||
warning:4:5
|
||||
warning:5:3
|
||||
warning:3:3
|
||||
warning:3:6
|
||||
warning:5:5
|
||||
warning:6:3
|
||||
~~~~~~~~~~
|
||||
<?php
|
||||
|
||||
$a[] = 1;
|
||||
$a[] = 1;
|
||||
$a[] = 1;
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
<?php
|
||||
|
||||
eval('evil code');
|
||||
~~~~~~~~~~
|
||||
error:2:1
|
||||
error:3:1
|
||||
~~~~~~~~~~
|
||||
~~~~~~~~~~
|
||||
{
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
|
||||
class MyClass {
|
||||
public function myfunc($var) {
|
||||
echo $var;
|
||||
|
@ -24,10 +25,10 @@ $foo(&$myvar);
|
|||
array_walk(array(), function () use (&$x) {});
|
||||
MyClass::myfunc(array(&$x, &$y));
|
||||
~~~~~~~~~~
|
||||
error:2:7 XHP19
|
||||
error:9:8
|
||||
error:12:15
|
||||
error:15:17
|
||||
error:18:24
|
||||
error:18:39
|
||||
error:22:6
|
||||
error:3:7 XHP19
|
||||
error:10:8
|
||||
error:13:15
|
||||
error:16:17
|
||||
error:19:24
|
||||
error:19:39
|
||||
error:23:6
|
||||
|
|
|
@ -1,12 +1,14 @@
|
|||
<?php
|
||||
|
||||
echo (double)0;
|
||||
echo (int) 1;
|
||||
echo (string) 2;
|
||||
~~~~~~~~~~
|
||||
advice:3:11
|
||||
advice:4:14
|
||||
advice:4:11
|
||||
advice:5:14
|
||||
~~~~~~~~~~
|
||||
<?php
|
||||
|
||||
echo (double)0;
|
||||
echo (int)1;
|
||||
echo (string)2;
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
|
||||
class MyClass {
|
||||
public function someMethod() {
|
||||
return 'MyClass';
|
||||
|
@ -11,11 +12,12 @@ class MyClass {
|
|||
}
|
||||
}
|
||||
~~~~~~~~~~
|
||||
error:2:7
|
||||
advice:4:12
|
||||
advice:8:10
|
||||
error:3:7
|
||||
advice:5:12
|
||||
advice:9:10
|
||||
~~~~~~~~~~
|
||||
<?php
|
||||
|
||||
class MyClass {
|
||||
public function someMethod() {
|
||||
return __CLASS__;
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
|
||||
define('foo', 'bar');
|
||||
const bar = 'baz';
|
||||
|
||||
|
@ -6,7 +7,7 @@ class Foo {
|
|||
const bar = 'baz';
|
||||
}
|
||||
~~~~~~~~~~
|
||||
warning:2:8
|
||||
warning:3:7
|
||||
error:5:7
|
||||
warning:6:9
|
||||
warning:3:8
|
||||
warning:4:7
|
||||
error:6:7
|
||||
warning:7:9
|
||||
|
|
|
@ -1,12 +1,14 @@
|
|||
<?php
|
||||
|
||||
new Foo;
|
||||
new Bar();
|
||||
new Foo\Bar;
|
||||
~~~~~~~~~~
|
||||
advice:2:5
|
||||
advice:4:5
|
||||
advice:3:5
|
||||
advice:5:5
|
||||
~~~~~~~~~~
|
||||
<?php
|
||||
|
||||
new Foo();
|
||||
new Bar();
|
||||
new Foo\Bar();
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
|
||||
function foo($x, $y, $z) {}
|
||||
function bar($x, $y = null, $z) {}
|
||||
function baz($x = null, $y = null, $z = null) {}
|
||||
|
@ -7,6 +8,6 @@ class MyClass {
|
|||
public function myMethod($x, $y = null, $z) {}
|
||||
}
|
||||
~~~~~~~~~~
|
||||
warning:3:13
|
||||
error:6:7
|
||||
warning:7:27
|
||||
warning:4:13
|
||||
error:7:7
|
||||
warning:8:27
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
|
||||
'foobar';
|
||||
"foo\"bar";
|
||||
"foobar\n";
|
||||
|
@ -12,9 +13,10 @@ pht(
|
|||
"This string also requires \123\345 double quotes, but ".
|
||||
"this string does not. Here, they are used for consistency.");
|
||||
~~~~~~~~~~
|
||||
advice:3:1
|
||||
advice:4:1
|
||||
~~~~~~~~~~
|
||||
<?php
|
||||
|
||||
'foobar';
|
||||
'foo"bar';
|
||||
"foobar\n";
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
|
||||
$a = array(
|
||||
'a' => 'val1',
|
||||
$a => 'val2',
|
||||
|
@ -34,9 +35,9 @@ $f = array(
|
|||
$a => 'var2',
|
||||
);
|
||||
~~~~~~~~~~
|
||||
error:5:3
|
||||
error:8:3
|
||||
error:15:3
|
||||
error:20:3
|
||||
error:25:3
|
||||
error:34:3
|
||||
error:6:3
|
||||
error:9:3
|
||||
error:16:3
|
||||
error:21:3
|
||||
error:26:3
|
||||
error:35:3
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
|
||||
$x = null;
|
||||
$y = null;
|
||||
switch ($x) {}
|
||||
|
@ -24,5 +25,5 @@ switch ($x) {
|
|||
break;
|
||||
}
|
||||
~~~~~~~~~~
|
||||
error:15:3
|
||||
error:22:7
|
||||
error:16:3
|
||||
error:23:7
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
<?php
|
||||
|
||||
define('PONY', 'cute');
|
||||
define($pony, 'cute');
|
||||
define('PONY', $cute);
|
||||
define($pony, $cute);
|
||||
~~~~~~~~~~
|
||||
error:3:8 dynamic define
|
||||
error:5:8 dynamic define
|
||||
error:4:8 dynamic define
|
||||
error:6:8 dynamic define
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
|
||||
if (true) {
|
||||
echo 'foo';
|
||||
} elseif (false) {
|
||||
|
@ -7,9 +8,10 @@ if (true) {
|
|||
echo 'baz';
|
||||
}
|
||||
~~~~~~~~~~
|
||||
advice:4:3
|
||||
advice:5:3
|
||||
~~~~~~~~~~
|
||||
<?php
|
||||
|
||||
if (true) {
|
||||
echo 'foo';
|
||||
} else if (false) {
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
|
||||
function w() {}
|
||||
function x() {
|
||||
// This is deliberately empty.
|
||||
|
@ -9,10 +10,11 @@ function z() {
|
|||
|
||||
}
|
||||
~~~~~~~~~~
|
||||
advice:6:14
|
||||
advice:7:14
|
||||
advice:8:14
|
||||
~~~~~~~~~~
|
||||
<?php
|
||||
|
||||
function w() {}
|
||||
function x() {
|
||||
// This is deliberately empty.
|
||||
|
|
|
@ -1,11 +1,13 @@
|
|||
<?php
|
||||
|
||||
final class Foo {};
|
||||
$x = null;;
|
||||
~~~~~~~~~~
|
||||
error:2:13 XHP19
|
||||
advice:2:19
|
||||
advice:3:11
|
||||
error:3:13 XHP19
|
||||
advice:3:19
|
||||
advice:4:11
|
||||
~~~~~~~~~~
|
||||
<?php
|
||||
|
||||
final class Foo {}
|
||||
$x = null;
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
|
||||
exit(-1);
|
||||
exit -1;
|
||||
strtoupper(33 * exit - 6);
|
||||
|
@ -8,8 +9,8 @@ print '';
|
|||
$x = new stdClass();
|
||||
$y = clone $x;
|
||||
~~~~~~~~~~
|
||||
error:3:1
|
||||
warning:3:5
|
||||
warning:3:6
|
||||
error:4:17
|
||||
warning:4:21
|
||||
error:4:1
|
||||
warning:4:5
|
||||
warning:4:6
|
||||
error:5:17
|
||||
warning:5:21
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
|
||||
printf();
|
||||
printf(null);
|
||||
printf('');
|
||||
|
@ -11,11 +12,11 @@ queryfx(null, 'x', 'y');
|
|||
|
||||
foobar(null, null, '%s');
|
||||
~~~~~~~~~~
|
||||
error:2:1
|
||||
error:6:1
|
||||
error:3:1
|
||||
error:7:1
|
||||
error:10:1
|
||||
error:12:1
|
||||
error:8:1
|
||||
error:11:1
|
||||
error:13:1
|
||||
~~~~~~~~~~
|
||||
~~~~~~~~~~
|
||||
{
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
<?php
|
||||
|
||||
global $BASE_URL;
|
||||
function foo() {
|
||||
global $x, $y;
|
||||
}
|
||||
~~~~~~~~~~
|
||||
warning:2:1
|
||||
warning:4:3
|
||||
warning:3:1
|
||||
warning:5:3
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
|
||||
# no
|
||||
#no
|
||||
// yes
|
||||
|
@ -20,17 +21,18 @@
|
|||
/** yes */
|
||||
/**** yes ****/
|
||||
~~~~~~~~~~
|
||||
error:2:1
|
||||
error:3:1
|
||||
error:5:1
|
||||
error:6:11
|
||||
advice:13:1
|
||||
error:4:1
|
||||
error:6:1
|
||||
error:7:11
|
||||
advice:14:1
|
||||
error:15:1
|
||||
advice:18:1
|
||||
advice:15:1
|
||||
error:16:1
|
||||
advice:19:1
|
||||
advice:20:1
|
||||
~~~~~~~~~~
|
||||
<?php
|
||||
|
||||
// no
|
||||
// no
|
||||
// yes
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
|
||||
final class Foo {
|
||||
public function bar() {}
|
||||
function baz() {}
|
||||
|
@ -10,13 +11,14 @@ final class Foo {
|
|||
private $z;
|
||||
}
|
||||
~~~~~~~~~~
|
||||
error:2:13 XHP19
|
||||
advice:4:3
|
||||
error:3:13 XHP19
|
||||
advice:5:3
|
||||
advice:8:3
|
||||
advice:6:3
|
||||
advice:9:3
|
||||
advice:10:3
|
||||
~~~~~~~~~~
|
||||
<?php
|
||||
|
||||
final class Foo {
|
||||
public function bar() {}
|
||||
public function baz() {}
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
<?php
|
||||
|
||||
f()[0];
|
||||
~~~~~~~~~~
|
||||
error:2:5
|
||||
error:3:5
|
||||
~~~~~~~~~~
|
||||
~~~~~~~~~~
|
||||
{
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
<?php
|
||||
|
||||
var_dump('foobar' instanceof stdClass);
|
||||
var_dump(123 instanceof stdClass);
|
||||
var_dump(null instanceof stdClass);
|
||||
var_dump($x instanceof stdClass);
|
||||
~~~~~~~~~~
|
||||
error:2:10
|
||||
error:3:10
|
||||
error:4:10
|
||||
error:5:10
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
|
||||
function func_one(array $x) {}
|
||||
function func_two(array $x = null) {}
|
||||
function func_three(array $x = array()) {}
|
||||
|
@ -12,6 +13,6 @@ function func_eight(stdClass $x) {}
|
|||
function func_nine(stdClass $x = null) {}
|
||||
function func_ten(stdClass $x = array()) {}
|
||||
~~~~~~~~~~
|
||||
error:5:31
|
||||
error:9:35
|
||||
error:13:33
|
||||
error:6:31
|
||||
error:10:35
|
||||
error:14:33
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
|
||||
class SomeClass {
|
||||
public $a;
|
||||
public public $b;
|
||||
|
@ -10,9 +11,9 @@ class SomeClass {
|
|||
abstract final public function baz() {}
|
||||
}
|
||||
~~~~~~~~~~
|
||||
error:2:7 XHP19
|
||||
error:4:10
|
||||
error:3:7 XHP19
|
||||
error:5:10
|
||||
error:6:11
|
||||
error:9:10
|
||||
error:10:12
|
||||
error:6:10
|
||||
error:7:11
|
||||
error:10:10
|
||||
error:11:12
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
|
||||
function __lambda_func() {}
|
||||
~~~~~~~~~~
|
||||
error:2:1
|
||||
error:3:1
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
|
||||
include 'foo.php';
|
||||
include_once 'foo.php';
|
||||
require 'foo.php';
|
||||
|
@ -17,18 +18,19 @@ require ('baz.php');
|
|||
require_once ('baz.php');
|
||||
echo ('baz');
|
||||
~~~~~~~~~~
|
||||
warning:8:8
|
||||
warning:9:13
|
||||
warning:10:8
|
||||
warning:11:13
|
||||
warning:12:5
|
||||
warning:14:9
|
||||
warning:15:14
|
||||
warning:16:9
|
||||
warning:17:14
|
||||
warning:18:6
|
||||
warning:9:8
|
||||
warning:10:13
|
||||
warning:11:8
|
||||
warning:12:13
|
||||
warning:13:5
|
||||
warning:15:9
|
||||
warning:16:14
|
||||
warning:17:9
|
||||
warning:18:14
|
||||
warning:19:6
|
||||
~~~~~~~~~~
|
||||
<?php
|
||||
|
||||
include 'foo.php';
|
||||
include_once 'foo.php';
|
||||
require 'foo.php';
|
||||
|
|
|
@ -1,11 +1,13 @@
|
|||
<?php
|
||||
|
||||
list($x, $y, , ,) = array();
|
||||
list($x, $y, , , $z) = array();
|
||||
~~~~~~~~~~
|
||||
warning:2:12
|
||||
warning:2:14
|
||||
warning:2:16
|
||||
warning:3:12
|
||||
warning:3:14
|
||||
warning:3:16
|
||||
~~~~~~~~~~
|
||||
<?php
|
||||
|
||||
list($x, $y ) = array();
|
||||
list($x, $y, , , $z) = array();
|
||||
|
|
|
@ -1,9 +1,11 @@
|
|||
<?php
|
||||
|
||||
var_dump('');
|
||||
Var_Dump('');
|
||||
~~~~~~~~~~
|
||||
advice:3:1
|
||||
advice:4:1
|
||||
~~~~~~~~~~
|
||||
<?php
|
||||
|
||||
var_dump('');
|
||||
var_dump('');
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
|
||||
class Foo {
|
||||
public $x;
|
||||
static protected $y;
|
||||
|
@ -8,12 +9,13 @@ class Foo {
|
|||
static final public function foobar() {}
|
||||
}
|
||||
~~~~~~~~~~
|
||||
error:2:7 XHP19
|
||||
advice:4:3
|
||||
advice:6:3
|
||||
advice:8:3
|
||||
error:3:7 XHP19
|
||||
advice:5:3
|
||||
advice:7:3
|
||||
advice:9:3
|
||||
~~~~~~~~~~
|
||||
<?php
|
||||
|
||||
class Foo {
|
||||
public $x;
|
||||
protected static $y;
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
|
||||
final class a {
|
||||
const b = 1, c = d;
|
||||
protected $E, $H;
|
||||
|
@ -7,8 +8,6 @@ final class a {
|
|||
|
||||
interface i {}
|
||||
|
||||
|
||||
|
||||
function YY($ZZ) {}
|
||||
|
||||
final class Quack {
|
||||
|
@ -17,10 +16,6 @@ final class Quack {
|
|||
public function vV($w_w) {}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
function () use ($this_is_a_closure) {};
|
||||
|
||||
function f(&$YY) {}
|
||||
|
@ -54,23 +49,24 @@ function j() {
|
|||
Other::$y = 0;
|
||||
$mIxEdCaSe = 1;
|
||||
}
|
||||
|
||||
~~~~~~~~~~
|
||||
warning:2:13
|
||||
warning:3:9
|
||||
warning:3:16
|
||||
warning:4:13
|
||||
warning:4:17
|
||||
warning:5:19
|
||||
warning:5:21
|
||||
warning:5:25
|
||||
warning:8:11
|
||||
warning:12:10
|
||||
warning:12:13
|
||||
warning:26:13
|
||||
warning:29:3
|
||||
warning:30:3
|
||||
warning:31:3
|
||||
warning:33:3
|
||||
warning:37:3
|
||||
warning:55:3
|
||||
warning:3:13
|
||||
warning:4:9
|
||||
warning:4:9
|
||||
warning:4:16
|
||||
warning:4:16
|
||||
warning:5:13
|
||||
warning:5:17
|
||||
warning:6:19
|
||||
warning:6:21
|
||||
warning:6:25
|
||||
warning:9:11
|
||||
warning:11:10
|
||||
warning:11:13
|
||||
warning:21:13
|
||||
warning:24:3
|
||||
warning:25:3
|
||||
warning:26:3
|
||||
warning:28:3
|
||||
warning:32:3
|
||||
warning:50:3
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
<?php phpinfo() ?>
|
||||
<? phpinfo(); ?>
|
||||
|
||||
<?php
|
||||
phpinfo();
|
||||
?>
|
||||
|
||||
<?
|
||||
phpinfo();
|
||||
~~~~~~~~~~
|
||||
advice:4:6
|
||||
advice:8:3
|
||||
~~~~~~~~~~
|
||||
<?php phpinfo() ?>
|
||||
<? phpinfo(); ?>
|
||||
|
||||
<?php
|
||||
|
||||
phpinfo();
|
||||
?>
|
||||
|
||||
<?
|
||||
|
||||
phpinfo();
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
|
||||
abstract class A {}
|
||||
final class F {}
|
||||
~~~~~~~~~~
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
<?php
|
||||
|
||||
exit();
|
||||
~~~~~~~~~~
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
<?php
|
||||
|
||||
echo <<<'EOT'
|
||||
Hello World!
|
||||
EOT;
|
||||
~~~~~~~~~~
|
||||
error:2:6
|
||||
error:3:6
|
||||
~~~~~~~~~~
|
||||
~~~~~~~~~~
|
||||
{
|
||||
|
|
|
@ -1,12 +1,14 @@
|
|||
<?php
|
||||
|
||||
$x -> doSomething();
|
||||
id(new Something())
|
||||
->doSomething();
|
||||
~~~~~~~~~~
|
||||
warning:2:3
|
||||
warning:2:6
|
||||
warning:3:3
|
||||
warning:3:6
|
||||
~~~~~~~~~~
|
||||
<?php
|
||||
|
||||
$x->doSomething();
|
||||
id(new Something())
|
||||
->doSomething();
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
|
||||
if ( $x ) {}
|
||||
f( );
|
||||
q( );
|
||||
|
@ -20,25 +21,26 @@ some_call( /* respect authorial intent */ $b,
|
|||
$a // if comments are present
|
||||
);
|
||||
~~~~~~~~~~
|
||||
warning:2:5
|
||||
warning:2:8
|
||||
warning:3:3
|
||||
warning:3:5
|
||||
warning:3:8
|
||||
warning:4:3
|
||||
warning:6:21
|
||||
warning:6:24
|
||||
warning:12:6
|
||||
warning:12:30
|
||||
warning:13:10
|
||||
warning:13:19
|
||||
warning:14:12
|
||||
warning:14:15
|
||||
error:15:13 XHP19 Class-Filename Mismatch
|
||||
warning:16:21
|
||||
warning:16:24
|
||||
warning:18:10
|
||||
warning:18:25
|
||||
warning:5:3
|
||||
warning:7:21
|
||||
warning:7:24
|
||||
warning:13:6
|
||||
warning:13:30
|
||||
warning:14:10
|
||||
warning:14:19
|
||||
warning:15:12
|
||||
warning:15:15
|
||||
error:16:13 XHP19 Class-Filename Mismatch
|
||||
warning:17:21
|
||||
warning:17:24
|
||||
warning:19:10
|
||||
warning:19:25
|
||||
~~~~~~~~~~
|
||||
<?php
|
||||
|
||||
if ($x) {}
|
||||
f();
|
||||
q();
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
|
||||
break;
|
||||
break 0;
|
||||
break 1;
|
||||
|
@ -8,10 +9,10 @@ continue 0;
|
|||
continue 1;
|
||||
continue 1 + foo() * $bar;
|
||||
~~~~~~~~~~
|
||||
error:3:7
|
||||
error:5:7
|
||||
error:7:10
|
||||
error:9:10
|
||||
error:4:7
|
||||
error:6:7
|
||||
error:8:10
|
||||
error:10:10
|
||||
~~~~~~~~~~
|
||||
~~~~~~~~~~
|
||||
{"config": {"xhpast.php-version": "5.4.0"}}
|
||||
|
|
|
@ -6,7 +6,6 @@ function foo($bar) {
|
|||
preg_Quote('moo');
|
||||
preg_quote('moo', '/');
|
||||
}
|
||||
|
||||
~~~~~~~~~~
|
||||
advice:4:3 Wrong number of arguments to preg_quote()
|
||||
advice:6:3 Wrong number of arguments to preg_quote()
|
||||
|
|
|
@ -119,7 +119,6 @@ function closure4() {
|
|||
};
|
||||
$a++; // Reuse of $a
|
||||
}
|
||||
|
||||
~~~~~~~~~~
|
||||
warning:6:3
|
||||
warning:12:8
|
||||
|
|
|
@ -62,7 +62,6 @@ function k($stuff, $thing) {
|
|||
$other = array();
|
||||
foreach ($other as $item) {}
|
||||
}
|
||||
|
||||
~~~~~~~~~~
|
||||
error:43:22
|
||||
error:53:22
|
||||
|
|
|
@ -1,14 +1,16 @@
|
|||
<?php
|
||||
|
||||
foo();
|
||||
bar() ;
|
||||
baz()
|
||||
|
||||
;
|
||||
~~~~~~~~~~
|
||||
advice:3:6
|
||||
advice:4:6
|
||||
advice:5:6
|
||||
~~~~~~~~~~
|
||||
<?php
|
||||
|
||||
foo();
|
||||
bar();
|
||||
baz();
|
||||
|
|
|
@ -1,14 +1,16 @@
|
|||
<?php
|
||||
|
||||
// This test is checking that the LintPatcher correctly applies adjacent patches
|
||||
// with large character delta effects.
|
||||
function f( ) {
|
||||
g( );
|
||||
}
|
||||
~~~~~~~~~~
|
||||
warning:4:12
|
||||
warning:5:5
|
||||
warning:5:12
|
||||
warning:6:5
|
||||
~~~~~~~~~~
|
||||
<?php
|
||||
|
||||
// This test is checking that the LintPatcher correctly applies adjacent patches
|
||||
// with large character delta effects.
|
||||
function f() {
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
|
||||
if($x) {}
|
||||
else{}
|
||||
for(;;) {}
|
||||
|
@ -25,23 +26,24 @@ do {
|
|||
|
||||
try {} catch(Exception $ex) {}
|
||||
~~~~~~~~~~
|
||||
warning:2:1
|
||||
warning:2:10
|
||||
warning:3:1
|
||||
warning:3:10
|
||||
warning:4:1
|
||||
warning:5:1
|
||||
warning:6:1
|
||||
warning:7:1
|
||||
warning:7:6
|
||||
warning:8:1
|
||||
warning:9:11
|
||||
warning:10:16
|
||||
warning:13:3
|
||||
warning:8:6
|
||||
warning:9:1
|
||||
warning:10:11
|
||||
warning:11:16
|
||||
warning:14:3
|
||||
warning:24:3
|
||||
warning:26:8
|
||||
warning:15:3
|
||||
warning:25:3
|
||||
warning:27:8
|
||||
~~~~~~~~~~
|
||||
<?php
|
||||
|
||||
if ($x) {} else {}
|
||||
for (;;) {}
|
||||
foreach ($x as $y) {}
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
|
||||
$a.$b;
|
||||
$a . $b;
|
||||
$a. $b;
|
||||
|
@ -24,16 +25,17 @@ array(
|
|||
$x=>$y,
|
||||
);
|
||||
~~~~~~~~~~
|
||||
warning:3:3
|
||||
warning:3:5
|
||||
warning:4:4
|
||||
warning:5:3
|
||||
warning:12:9
|
||||
warning:13:10
|
||||
warning:14:9
|
||||
warning:24:5
|
||||
warning:4:3
|
||||
warning:4:5
|
||||
warning:5:4
|
||||
warning:6:3
|
||||
warning:13:9
|
||||
warning:14:10
|
||||
warning:15:9
|
||||
warning:25:5
|
||||
~~~~~~~~~~
|
||||
<?php
|
||||
|
||||
$a.$b;
|
||||
$a.$b;
|
||||
$a.$b;
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
|
||||
$a + $b;
|
||||
$a+$b;
|
||||
$a +$b;
|
||||
|
@ -23,21 +24,22 @@ if ($x instanceof z &&$w) {}
|
|||
if ($x instanceof z && $w) {}
|
||||
f(1,2);
|
||||
~~~~~~~~~~
|
||||
warning:3:3
|
||||
warning:4:4
|
||||
warning:5:3
|
||||
warning:7:3
|
||||
warning:4:3
|
||||
warning:5:4
|
||||
warning:6:3
|
||||
warning:8:3
|
||||
warning:9:4
|
||||
warning:10:3
|
||||
warning:9:3
|
||||
warning:10:4
|
||||
warning:11:3
|
||||
warning:13:14
|
||||
warning:20:52
|
||||
warning:21:54
|
||||
warning:22:21
|
||||
warning:24:4
|
||||
warning:12:3
|
||||
warning:14:14
|
||||
warning:21:52
|
||||
warning:22:54
|
||||
warning:23:21
|
||||
warning:25:4
|
||||
~~~~~~~~~~
|
||||
<?php
|
||||
|
||||
$a + $b;
|
||||
$a + $b;
|
||||
$a + $b;
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
<?php
|
||||
|
||||
final class Platypus {
|
||||
public function platypus() {
|
||||
// This method must be renamed to __construct().
|
||||
}
|
||||
}
|
||||
~~~~~~~~~~
|
||||
error:2:13 XHP19 Class-Filename Mismatch
|
||||
error:3:19
|
||||
error:3:13 XHP19 Class-Filename Mismatch
|
||||
error:4:19
|
||||
|
|
|
@ -15,7 +15,6 @@ $skip_cache = true || $some_complicated_expression;
|
|||
$skip_cache = $a || $b;
|
||||
$skip_cache = false && something();
|
||||
$skip_cache = f();
|
||||
|
||||
~~~~~~~~~~
|
||||
error:3:5
|
||||
error:5:5
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
|
||||
class MyClass {
|
||||
public function __toString() {
|
||||
if (some_function()) {
|
||||
|
@ -23,4 +24,4 @@ abstract class SomeAbstractClass {
|
|||
abstract public function __toString();
|
||||
}
|
||||
~~~~~~~~~~
|
||||
error:5:7
|
||||
error:6:7
|
||||
|
|
|
@ -1,9 +1,11 @@
|
|||
<?php
|
||||
|
||||
$x ++;
|
||||
$y--;
|
||||
~~~~~~~~~~
|
||||
warning:2:3
|
||||
warning:3:3
|
||||
~~~~~~~~~~
|
||||
<?php
|
||||
|
||||
$x++;
|
||||
$y--;
|
||||
|
|
|
@ -1,12 +1,14 @@
|
|||
<?php
|
||||
|
||||
$f = @ fopen($path, 'rb');
|
||||
@fclose($f);
|
||||
exit ();
|
||||
~~~~~~~~~~
|
||||
warning:2:7
|
||||
warning:4:5
|
||||
warning:3:7
|
||||
warning:5:5
|
||||
~~~~~~~~~~
|
||||
<?php
|
||||
|
||||
$f = @fopen($path, 'rb');
|
||||
@fclose($f);
|
||||
exit();
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
<?php
|
||||
|
||||
final class Foo {
|
||||
public function bar() {}
|
||||
final public function baz() {}
|
||||
}
|
||||
~~~~~~~~~~
|
||||
error:2:13 XHP19
|
||||
advice:4:3
|
||||
error:3:13 XHP19
|
||||
advice:5:3
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
|
||||
// This test is just verifying the parseability of files with a large number
|
||||
// (>500) of string concatenations. We emit n_CONCATENATION_LIST instead of
|
||||
// n_BINARY_EXPRESSION to avoid various call-depth traps in PHP, HPHP, and the
|
||||
|
@ -43,6 +44,7 @@
|
|||
~~~~~~~~~~
|
||||
~~~~~~~~~~
|
||||
<?php
|
||||
|
||||
// This test is just verifying the parseability of files with a large number
|
||||
// (>500) of string concatenations. We emit n_CONCATENATION_LIST instead of
|
||||
// n_BINARY_EXPRESSION to avoid various call-depth traps in PHP, HPHP, and the
|
||||
|
|
|
@ -8,7 +8,6 @@ final class A {
|
|||
$this->f();
|
||||
}
|
||||
}
|
||||
|
||||
~~~~~~~~~~
|
||||
error:3:13 XHP19 Class-Filename Mismatch
|
||||
error:8:5 Use of $this in a static method.
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
<?php
|
||||
|
||||
$$foo;
|
||||
$obj->$bar; // okay
|
||||
~~~~~~~~~~
|
||||
error:2:1
|
||||
error:3:1
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
<?php
|
||||
|
||||
'a'.'b';
|
||||
'a' + 'b';
|
||||
'a' + $x;
|
||||
$x + $y + $z + 'q' + 0;
|
||||
~~~~~~~~~~
|
||||
error:3:1
|
||||
error:4:1
|
||||
error:5:1
|
||||
error:6:1
|
||||
|
|
|
@ -0,0 +1,46 @@
|
|||
<?php
|
||||
|
||||
final class ArcanistNewlineAfterOpenTagXHPASTLinterRule
|
||||
extends ArcanistXHPASTLinterRule {
|
||||
|
||||
const ID = 81;
|
||||
|
||||
public function getLintName() {
|
||||
return pht('Newline After PHP Open Tag');
|
||||
}
|
||||
|
||||
public function getLintSeverity() {
|
||||
return ArcanistLintSeverity::SEVERITY_ADVICE;
|
||||
}
|
||||
|
||||
public function process(XHPASTNode $root) {
|
||||
$tokens = $root->selectTokensOfType('T_OPEN_TAG');
|
||||
|
||||
foreach ($tokens as $token) {
|
||||
for ($next = $token->getNextToken();
|
||||
$next;
|
||||
$next = $next->getNextToken()) {
|
||||
|
||||
if ($next->getTypeName() == 'T_WHITESPACE' &&
|
||||
preg_match('/\n\s*\n/', $next->getValue())) {
|
||||
continue 2;
|
||||
}
|
||||
|
||||
if ($token->getLineNumber() != $next->getLineNumber()) {
|
||||
break;
|
||||
}
|
||||
|
||||
if ($next->getTypeName() == 'T_CLOSE_TAG') {
|
||||
continue 2;
|
||||
}
|
||||
}
|
||||
|
||||
$next = $token->getNextToken();
|
||||
$this->raiseLintAtToken(
|
||||
$next,
|
||||
pht('`%s` should be separated from code by an empty line.', '<?php'),
|
||||
"\n".$next->getValue());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in a new issue