17

私は、数年かけて開発された PHP プロジェクトにまもなく参加します。それは巨大で、まばらに文書化され、多くのファイルとコードの山になり、一貫した品質レベルは期待できません。

何が起こっているのかについてできるだけ多くの情報を収集するにはどうすればよいですか?

  • オートローディングは期待されておらず、少なくとも大規模では ありません。

  • phpDocumentorでプロジェクト ファイルをダイジェストすると、どのクラス/メソッド/関数が存在するかがわかります。

  • メソッド/関数の関係についてはphpCallGraphかもしれません。

  • 階層と概念についてのアイデアを得るために、XDebugを使用していくつかの一般的なユース ケースをプロファイリングし ます。

  • 重要なログファイルを検査しています...警告、非推奨の使用法、エラーをチェックしています。

  • phpinfo() .

  • おそらく、すべてのコメントを抽出し、それらを html ファイルに処理します。

単体テスト、データベースなどはカバーしませんでした....

あなたならどうしますか?上記のツールを最大限に活用するために、どのような経験がありますか?

必要な条件を想定できます。

抽出するのに役立つ統計情報は何ですか?

誰かがそれらのツールを使用した経験がありますか?

「品質チェックのためのPHPツール」からの編集

Bryan Waters の回答から編集 2 :

PHP プロジェクトのデプロイ / ビルド / CI サイクルの設定 - Pekka の提案

編集3

Gabriele Santini による講演のPDFを見つけました - 「コードの統計分析 - PHP コードを聞く」。これは金鉱のようなものです。

4

5 に答える 5

3

あなたの質問にはほとんどの答えがあることに同意します。

これはおそらく私がすることです。私はおそらく Sebastian Bergman のツール、特に phploc から始めて、見ている混乱 (コードベース) の範囲を把握できるようにします。コード行だけでなく、クラス、関数の数などを提供します。

次に、Apache ログまたは Google アナリティクスを調べて、最もリクエストの多い php URL のトップ 10 を取得します。プロファイリングを使用して XDebug をセットアップし、それらの上位 10 件の要求を実行してファイルを取得し、ツリーを呼び出します。(これらは cachegrinder ツールで表示できます)

最後に、これらのトレースの 1 つまたは 2 つの実行パス全体を読み取ります。これは、全体を最もよく表しています。私は Eclipse IDE を使用しますが、それらを印刷して蛍光ペンを持って町に行くことも有効です。

複数のシステムが一緒に詰め込まれている場合、上位 10 の方法は失敗する可能性があります。Xdebug を使用すると、トップ 10 が同じようにコーディングされているかどうか、それぞれが固有の島であるかどうかをすぐに確認できます。

私は mysql データベースを見て、それらが何のためにあるのかを理解しようとします。特にテーブルの接頭辞を見て、いくつかの異なるアプリが互いに積み重なっている可能性があります。トップ 10 に触れていないデータベースの大部分がある場合は、サブアプリを探しに行く必要があります。他のサブアプリが見つかった場合は、xdebug プロファイラーでそれらを実行し、そのサブアプリを表すパスの 1 つを読んでください。

ここで、戻って phploc からのスコープ番号を見て、コードベース (おそらくカウント クラスまたは関数) の何パーセントがレビュー中に変更されていないかを確認します。

最も頻繁に実行されるコードについての基本的な理解と、スケルトン ストレージ用の隅々やクローゼットがいくつあるかについての考えが必要です。

于 2011-04-01T19:16:52.490 に答える
2

おそらく、継続的インテグレーション環境をセットアップできます。この環境では、必要なすべての統計を収集できます。

Jenkinsは、多数のプラグインとドキュメントを備えた優れた CI サーバーです。

于 2011-03-26T14:08:46.647 に答える
2

予想される問題 (コードの重複、潜在的なバグなど) をチェックするには、これらのツールのいくつかを使用できます。

https://stackoverflow.com/questions/4202311/php-tools-for-quality-check

HTH

PS。あなたの質問、IMOには、すでに多くの素晴らしい回答が含まれていると言わざるを得ません。

于 2011-03-28T17:49:35.690 に答える
1

統計に興味がある場合は、コードの品質を測定するCRAPインデックス(変更リスク分析と予測)をご覧ください。

2部構成の素晴らしい紹介記事があります:

前半
後半

于 2011-03-26T13:57:03.400 に答える
1

スパゲッティのような巨大なレガシー PHP プロジェクトを構築し、苦労した経験があるため、分析ツールを使用してできることは限られていると思います。彼らのほとんどは、プロジェクトの品質がひどいと言うだけです:)

単体テストおよびソース コード ドキュメント ツールは、通常、使用可能な結果を​​生成するために、コード内で何らかの積極的な貢献を必要とします。とはいえ、それらはすべて試してみる価値があります。私は phpCallGraph と Sebastian Bergmann のツールに慣れていません。また、phpDocumentor は、少なくともコードの一部から何らかの意味を理解できる場合があります。PHPXrefは、概要を把握するためクールなツールでもあります。これは (遅い) デモです。

開始する最良の方法は、コードベースで実行する必要がある単純なタスクを実行し、ジャングルを通り抜け、インクルードを追跡し、ライブラリ構造を把握するなどして、ジョブが完了するまで実行することです。チームに参加している場合は、指導を求めることができる誰かが近くにいるかもしれません。

探索プロセスをできるだけ便利にすることに集中します。いくつかの(些細な)ポイントは次のとおりです。

  • 関数/メソッド、クラス、および変数の定義にすばやくアクセスできる IDE を使用する

  • デバッガーを実行する

  • すべてをソース管理下に置き、すべての変更をコミットする

  • テスト用の変更を簡単に展開できる環境を用意し、別のブランチに簡単に切り替えたり、すべてを完全にロールバックしたりできます。そのようなものを設定する方法に関する関連する質問は次のとおりです。PHPプロジェクトの展開/ビルド/ CIサイクルの設定

于 2011-04-02T13:16:08.397 に答える