PHPで計算されたC.R.A.P指数の読み方・改善方法
2023-12-02 22:35:09
質問
私は PHPUnit を使い始めたばかりで、そのカラフルなコードカバレッジレポートも見ています。すべての数値とパーセンテージを理解していますが、ひとつだけわからないことがあります。C.R.A.P 指数です。この指数が何を意味するのか、どのように分析し、どのように下げるのか、誰かしっかりとした説明を提供してくれませんか?
どのように解決するのですか?
Toader Mihaiがしっかり説明してくれました。 (私からは+1)
下げる方法
より複雑でないコードを書くか、よりよくテストされたコードを書く。(下のグラフを参照)
より良くテストされたコード?
この文脈では、これは単なる意味です。より高いコードカバレッジ、そして通常より多くのテストを書くことになります。
より複雑でないコード?
例えば メソッドをより小さなものにリファクタリングしてください。
// Complex
function doSomething() {
if($a) {
if($b) {
}
if($c) {
}
} else {
if($b) {
}
if($c) {
}
}
}
// 3 less complex functions
function doSomething() {
if($a) {
doA();
} else {
doNotA();
}
}
function doA() {
if($b) {
}
if($c) {
}
}
function doNotA() {
if($b) {
}
if($c) {
}
}
(ほんの些細な例です。きっともっと多くのリソースが見つかるでしょう)
追加のリソースです。
まず最初に、いくつかの追加リソースを提供させてください。
念のため 循環的複雑性の説明 . PHP_CodeSniffer や PHPMD のようなツールは、この数字を知りたい場合に役立ちます。
そして、どの数値が「OK」なのかはあなたが決めることですが、よく提案される数値(少し高いような気がしますが)は 30 で、このようなグラフになります。
(.odsファイルはこちらで入手できます。 https://www.dropbox.com/s/3bihb9thlp2fyg8/crap.ods?dl=1 )
関連
-
[解決済み] Uncaught SyntaxError: JSON の位置 1 に予期しないトークン o があります。
-
[解決済み] プライベートメソッド、フィールド、インナークラスを持つクラスをテストするにはどうすればよいですか?
-
[解決済み] PHPで配列から要素を削除する
-
[解決済み] PHPでSQLインジェクションを防ぐにはどうしたらいいですか?
-
[解決済み] PHPでHTML/XMLをパースして処理する方法とは?
-
[解決済み] PHPのエラーを表示させるにはどうしたらいいですか?
-
[解決済み] "お知らせ 未定義変数"、"Notice: Notice: 未定義のインデックス", "Notice:未定義のインデックス", "Notice."。PHPを使用した「未定義のオフセット
-
[解決済み] PHPでパスワードをハッシュ化するためにbcryptを使用するにはどうすればよいですか?
-
[解決済み】PHPの'foreach'は実際どのように動作するのですか?
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】phpのob_start()の使い道は?
-
[解決済み】PHPで空の値からデフォルトオブジェクトを作成する?
-
[解決済み】XAMPPのphpMyAdminで「設定にあるcontroluserの接続に失敗しました。
-
[解決済み】php, mysql - データベースへの接続数が多すぎるエラー
-
[解決済み】Xampp ローカルホスト/ダッシュボード
-
[解決済み】Chrome net::ERR_INCOMPLETE_CHUNKED_ENCODING エラーが発生しました。
-
[解決済み] [Solved] Fatal error: メンバ関数 query() の null への呼び出し。
-
phpのAllowed memory size of 134217728 bytes枯渇問題の解決法
-
[解決済み] オートロードとは何ですか; spl_autoload、__autoload、spl_autoload_register はどのように使うのですか?
-
[解決済み] mysql_field_nameを新しいmysqliに変更します。