Suche senden
Hochladen
Source monitorと複雑度のはなし
•
2 gefällt mir
•
7,260 views
A
aomori ringo
Folgen
Melden
Teilen
Melden
Teilen
1 von 12
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
AWS Black Belt Online Seminar 2016 Amazon EC2 Container Service
AWS Black Belt Online Seminar 2016 Amazon EC2 Container Service
Amazon Web Services Japan
Where狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキー
yoku0825
GraphQLのsubscriptionで出来ること
GraphQLのsubscriptionで出来ること
Shingo Fukui
ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装
infinite_loop
Redisの特徴と活用方法について
Redisの特徴と活用方法について
Yuji Otani
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
Y Watanabe
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
増田 亨
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
Ryuji Tsutsui
Empfohlen
AWS Black Belt Online Seminar 2016 Amazon EC2 Container Service
AWS Black Belt Online Seminar 2016 Amazon EC2 Container Service
Amazon Web Services Japan
Where狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキー
yoku0825
GraphQLのsubscriptionで出来ること
GraphQLのsubscriptionで出来ること
Shingo Fukui
ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装
infinite_loop
Redisの特徴と活用方法について
Redisの特徴と活用方法について
Yuji Otani
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
Y Watanabe
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
増田 亨
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
Ryuji Tsutsui
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
Yoji Kanno
PostgreSQLアンチパターン
PostgreSQLアンチパターン
Soudai Sone
プログラムの処方箋~健康なコードと病んだコード
プログラムの処方箋~健康なコードと病んだコード
Shigenori Sagawa
async/await のしくみ
async/await のしくみ
信之 岩永
DockerコンテナでGitを使う
DockerコンテナでGitを使う
Kazuhiro Suga
脱RESTful API設計の提案
脱RESTful API設計の提案
樽八 仲川
負荷分散だけじゃないELBのメリット
負荷分散だけじゃないELBのメリット
Takashi Toyosaki
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
onozaty
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
Amazon Web Services Japan
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
トランザクションスクリプトのすすめ
トランザクションスクリプトのすすめ
pospome
C# 8.0 非同期ストリーム
C# 8.0 非同期ストリーム
信之 岩永
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
Trainocate Japan, Ltd.
Spring Boot × Vue.jsでSPAを作る
Spring Boot × Vue.jsでSPAを作る
Go Miyasaka
SQLアンチパターン(インデックスショットガン)
SQLアンチパターン(インデックスショットガン)
Tomoaki Uchida
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
Yoshinori Matsunobu
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
NTT DATA Technology & Innovation
組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術
Takuto Wada
そんなトランザクションマネージャで大丈夫か?
そんなトランザクションマネージャで大丈夫か?
takezoe
Distributed Systems 第10章 Distributed Object-Based Systems (後編)
Distributed Systems 第10章 Distributed Object-Based Systems (後編)
aomori ringo
Mathematicaでgolf
Mathematicaでgolf
aomori ringo
Weitere ähnliche Inhalte
Was ist angesagt?
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
Yoji Kanno
PostgreSQLアンチパターン
PostgreSQLアンチパターン
Soudai Sone
プログラムの処方箋~健康なコードと病んだコード
プログラムの処方箋~健康なコードと病んだコード
Shigenori Sagawa
async/await のしくみ
async/await のしくみ
信之 岩永
DockerコンテナでGitを使う
DockerコンテナでGitを使う
Kazuhiro Suga
脱RESTful API設計の提案
脱RESTful API設計の提案
樽八 仲川
負荷分散だけじゃないELBのメリット
負荷分散だけじゃないELBのメリット
Takashi Toyosaki
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
onozaty
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
Amazon Web Services Japan
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
トランザクションスクリプトのすすめ
トランザクションスクリプトのすすめ
pospome
C# 8.0 非同期ストリーム
C# 8.0 非同期ストリーム
信之 岩永
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
Trainocate Japan, Ltd.
Spring Boot × Vue.jsでSPAを作る
Spring Boot × Vue.jsでSPAを作る
Go Miyasaka
SQLアンチパターン(インデックスショットガン)
SQLアンチパターン(インデックスショットガン)
Tomoaki Uchida
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
Yoshinori Matsunobu
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
NTT DATA Technology & Innovation
組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術
Takuto Wada
そんなトランザクションマネージャで大丈夫か?
そんなトランザクションマネージャで大丈夫か?
takezoe
Was ist angesagt?
(20)
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
PostgreSQLアンチパターン
PostgreSQLアンチパターン
プログラムの処方箋~健康なコードと病んだコード
プログラムの処方箋~健康なコードと病んだコード
async/await のしくみ
async/await のしくみ
DockerコンテナでGitを使う
DockerコンテナでGitを使う
脱RESTful API設計の提案
脱RESTful API設計の提案
負荷分散だけじゃないELBのメリット
負荷分散だけじゃないELBのメリット
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
トランザクションスクリプトのすすめ
トランザクションスクリプトのすすめ
C# 8.0 非同期ストリーム
C# 8.0 非同期ストリーム
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
Spring Boot × Vue.jsでSPAを作る
Spring Boot × Vue.jsでSPAを作る
SQLアンチパターン(インデックスショットガン)
SQLアンチパターン(インデックスショットガン)
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術
そんなトランザクションマネージャで大丈夫か?
そんなトランザクションマネージャで大丈夫か?
Mehr von aomori ringo
Distributed Systems 第10章 Distributed Object-Based Systems (後編)
Distributed Systems 第10章 Distributed Object-Based Systems (後編)
aomori ringo
Mathematicaでgolf
Mathematicaでgolf
aomori ringo
Mathematicaをはじめよう
Mathematicaをはじめよう
aomori ringo
Distributed Systems 第10章 Distributed Object-Based Systems
Distributed Systems 第10章 Distributed Object-Based Systems
aomori ringo
Distributed Systems 第1章 Introduction
Distributed Systems 第1章 Introduction
aomori ringo
md5のアルゴリズム
md5のアルゴリズム
aomori ringo
すごいHaskell楽しく学ぼう 第6章
すごいHaskell楽しく学ぼう 第6章
aomori ringo
Mehr von aomori ringo
(7)
Distributed Systems 第10章 Distributed Object-Based Systems (後編)
Distributed Systems 第10章 Distributed Object-Based Systems (後編)
Mathematicaでgolf
Mathematicaでgolf
Mathematicaをはじめよう
Mathematicaをはじめよう
Distributed Systems 第10章 Distributed Object-Based Systems
Distributed Systems 第10章 Distributed Object-Based Systems
Distributed Systems 第1章 Introduction
Distributed Systems 第1章 Introduction
md5のアルゴリズム
md5のアルゴリズム
すごいHaskell楽しく学ぼう 第6章
すごいHaskell楽しく学ぼう 第6章
Source monitorと複雑度のはなし
1.
aomoriringo
2.
フリーソフトウェア コードの静的メトリクス計測ツール C, C++, C#, VB.NET, Java, Delphi, VB6, HTML
3.
sourceMonitorはコード解析をして、 こんなものを表示してくれます ◦ コメントの割合 ◦ ドキュメントの割合 ◦ メソッド数/1クラス ◦ 構文数/1メソッド ◦ 一番複雑なメソッドの名前/行数 ◦ Avg/Max Complexity ◦ Avg/Max Block Depth
4.
ソースコード内の線形独立な経路の数 条件複雑度(Conditional Complexity)とも 呼ばれる 完全な分岐網羅ができるテストケースの数 ≦ 循環的複雑度 ≦ 完全な経路網羅ができるテストケースの数
5.
Start with 1 for a straight path through the routine. Add 1 for each of the following keywords or their equivalent: ◦ if, while, repeat, for, and, or Add 1 for each case in a switch statement.
6.
Public void ProcessPages() {
while( nextPage != true ) { if( ( lineCount <= linePerPage ) && (status != Status.Cancelled) && (morePages == true ) ) { //… } } }
7.
Public int getValue(
int param1 ) { int value = 0; if ( param1 == 0 ) { value = 4; } else { value = 0; } return value; }
8.
Complexity
Risk Evaluation <=10 よい構造。 ほとんどリスクなし 11 to 20 少し複雑。 わずかな(moderate)リスク >30 複雑。 構造に疑問 >50 テストが不可能 >75 いかなる変更も誤修正を生む原因を 作る
9.
Complexity
Risk Evaluation <=10 よい構造。 ほとんどリスクなし 11 to 20 少し複雑。 わずかな(moderate)リスク >30 複雑。 構造に疑問 >50 テストが不可能 >75 いかなる変更も誤修正を生む原因を 作る
10.
経路数が多く、テストケースもたくさん必要 意味を理解するのに多くの経路を 追わなければいけない 凝集度が低い傾向にある
11.
あるコードがどれだけそのクラスの 責任分担に集中しているかを示す尺度 凝集度が高い ◦ コードが読みやすい ◦ 再利用しやすい 凝集度が低い ◦ クラスのメソッド群に共通性がない ◦ 各メソッドが全く関係のないデータを扱う
12.
sourceMonitorは複雑度を解析してくれる 複雑度はテストや保守に関わる重要な指標 (しかも定量的) たまには複雑度のこと、思い出してあげてください
Jetzt herunterladen