問題タブ [phpmd]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - 戻り値が適切に使用されているかどうかを確認するために PHP コードを分析するツールはありますか?
次のコードがあるとします。
コード全体にスプレッドへの呼び出しがたくさんあるので、有効なものかエラーが発生したかを$thirdPartyAPI
確認することを忘れたくありません。$result
PHP Code SnifferツールとPHP Mess Detectorツールを確認しましたが、この特定のケースに適したルールは見つかりませんでした。
戻り値に特定の値があることを確認するのを忘れていないかどうかを報告できるツール (静的コード分析ツールなど) があるかどうか疑問に思っています。
php - 誤検知を与えるPHP Mess Detector
私はオープン ソース プロジェクトに取り組んでおり、自動化されたコード リビジョンをphpmdで実装することをお勧めします。
それは私がすでに修正している多くのコーディングの間違いを示しました。しかし、そのうちの1つが私を興味深くさせました。
次の方法を検討してください。
ここで、phpmd はElse は決して必要ないと言っています
...else ブランチを含む if 式は必要ありません。else が不要になるように条件を書き直すことができ、コードが読みやすくなります。...
is_dir
指定されたパスがファイルであるか、単に存在しない場合は常に false を返すため、私の意見では、このテストはまったく有効ではありません。
それを修正する方法はありますか、またはこのようなケースを単に無視する方法はありますか?
php - PHP の静的コード分析結果を理解する
アドバイスが必要です。静的コード分析の結果に関する情報は見つかりませんでした。たとえば、phploc を使用してレポートを生成します。しかし、それが良い結果なのか悪い結果なのかはわかりません。私が楽しんでいなかったユーティリティが何であるかを理解しているので、レポートは同じでなければなりません。結果を見た後、悪いコードを解決するかどうかを判断できます。
この結果のすべての行に関する情報はどこで確認できますか?
手伝ってくれてありがとう!
私が見つけたすべては次のとおりです。最大メソッド複雑度は 10 を超えてはなりません。CyclomaticComplexity - 1-4 は低いです - 5-7 は中程度の複雑さを示します - 8-10 は複雑さが高いです - 11+ は非常に複雑です。
php - PHPMD はパラメーターを指定して実行できません
PhpStorm で動作するように phpmd を構成しようとしましたが、ここで立ち往生しています。ここに私が持っているエラーがあります:
PHP Mess Detector
phpmd: パラメータを使用してツールを正しく実行できません:
C:/Users/me/AppData/Local/Temp/___18.tmp/folder/myclass.php
xml codesize,controversial,design,naming,unusedcode
ツール プロセスのハングアップの可能性5秒後
WindowsでPhpStormを使用しています。奇妙なことはCode > Inspect Code
、ライブ検査ではなく、実行すると実行されるように見えることです。私のパスはこれではなく、私のファイルは にありますC:/Users/Code/myapp
。
誰でもこのエラーで私を助けることができますか?
php - PHPMD - 重複コードのチェック
ツール PHPMD について知ったばかりで、それが非常に便利であることに気付きました。カスタム ルールなどの作成に関するドキュメントを読みましたが、PHPDepend のソフトウェア メトリックの使用についてのみ説明しています。
重複したコードをチェックする特定のルールを実装できるかどうかを知りたいですか?
カスタム ルールで特定のノードの抽象構文ツリーも使用できることに気付きましたが、あまり役に立たないでしょうか?
重複したコードをチェックするには、いくつかの異なる関数/メソッド ノードを比較する必要があり、apply メソッドはノードごとに 1 回呼び出されるためですか?
PHPMD を拡張して、このような深いコード分析を実現するにはどうすればよいでしょうか? ソフトウェアの指標をはるかに超えたい..
ありがとうございました!
php - extract() 使用時の明示的な変数宣言
次のスニペットがあります。
このコードは完全に機能します (完全なソース コードはこちら)。ただし、外出先でいくつかの優れた慣行に従うことを確認したいと思います。私は現在 [いくつかの CodeClimate 警告] (PHPMD) を取得しています ( https://codeclimate.com/github/timegridio/timegrid/app/Listeners/SendBookingNotification.php ):
- 「$locale」などの未使用のローカル変数は避けてください。
- 「$timezone」などの未使用のローカル変数は避けてください。
- 「$template」などの未使用のローカル変数は避けてください。
- 「$subject」などの未使用のローカル変数は避けてください。
- 「$header」などの未使用のローカル変数は避けてください。
- 「$params」などの未使用のローカル変数は避けてください。
それを行うためのエレガントな方法はどれですか?
list()
またはそのようなもので変数を明示的に宣言する必要がありますか?
前もって感謝します
php - ルールセットを無視するPHPMD
phpmd.xml
ファイルに次のルールを設定しました。
しかし、このルールは無視されています。まだこのエラーが発生します:
/var/www/html/tests/Model/AdvertTest.php:18 The class AdvertTest has 1026 lines of code. Current threshold is 1000. Avoid really long classes.
phpmd がこのルールを読み取らない理由を考えてください。実際にそれを修正する唯一の方法は、クラスの一番上に抑制エラーを追加することです。
詳細情報: MAC で phpmd を実行しており、Docker を使用して次のコマンドを使用しています。
docker-compose exec php sh -c "./vendor/bin/phpmd ./tests text phpmd.test.xml"
完全な XML: PHP Mess Detector ルールセット
php - PHPCS / PHPMD : docblock があることを確認するための PHP コード スニファー / メス検出器の方法はありますか?
PHP Code Sniffer や PHP Mess Detector を使用して、クラス/プロパティ/メソッドに適切な docblock があるかどうかを検出する方法はありますか? 例えば:
上記の例では、危険信号が発生するはずです。ただし、次の例は合格する必要があります。
私は定義上、docblock が正しいかどうか (戻り値の型が返されるものと一致するかどうか) には興味がありません。 docblock が存在します。