PHP ファイル用の [Lint のような] 静的コード アナライザーはありますか? を参照してください。--開発者がコミットする前に、PHP ファイルの内容を評価する方法を検討しています。 適切なソリューションは、答えのような SVN フックを介してトリガーされます: PHP から PHP ファイルの構文を確認することは可能ですか?
私が目指している角度であるSVNにチェックインするときに、PHPファイルのこの自動構文チェックに出くわしましたが、...php -l
十分ではありません。
たとえば、次のコードがあるとします。
if ($foo == 'bar') {
echo $foo;
}
これにより、次の結果が得られます。
2012/01/15 02:51:14 [エラー] 694#0: *164 FastCGI sent in stderr: "PHP Notice: Undefined variable: foo
に比べ:
if (isset($foo)) { echo $foo; }
その一部は、ベスト プラクティスについてコーダーを教育することに帰着します。残念なことに、他のものほど早く学習しないものもあり、コーディング標準への準拠を確実にする唯一の方法は、テストされていない、または準拠していない SVN に入るものを減らすことです。
この質問の最初のリンクから、私は試しました:
- php -l
- 問題について通知しない
$foo
- 問題について通知しない
- phplint-pure-c-1.0_20110223 - PHPLint
- 問題について通知しない
$foo
- 問題について通知しない
if ($foo == 'bar') { \_ HERE
==== /mnt/hgfs/workspace/scratch-pad/phpinfo.php:44: 警告: 比較中 (不明) == (文字列): 不明な型間の比較を確認できません
- phpcs - PHP コードスニファー
- PHPサニティチェックが正しい答えであると示しているに
$foo
もかかわらず、問題について通知しません
- PHPサニティチェックが正しい答えであると示しているに
- シンプルテスト
- 非常に素晴らしいですが、悪いコードを書いている開発者は良い単体テストを書く必要があります...
すべてが独自の方法で興味深いものですが、実際には実行時にのみ発見されるこれらの問題を捉えているものはありません。
このトピックに関するご意見やご感想をお待ちしております。
編集
PHPLint が正しい方法であると示唆する 1 人のポスターがありました。私は思った、OK!新しいバージョンがあるのでもう一度試してみましょう: phplint-pure-c-1.1_20120202 :
<?php
if ($foo == 'bar') {
echo $foo;
}
?>
簡単なテスト ..........そして、それは動作し、1 つのエラー、1 つの警告を報告します。ただし、ステートメント の前に次を追加すると、次のようになります。if
<?php
if (isset($foo) && $foo == 'bar') { echo 'man'; }
if ($foo == 'bar') {
echo $foo;
}
?>
動作せず、エラー 0 件、警告 2 件を報告します。