ソフトウェアデザイン工学
EPMの適用結果報告
2007年2月2日
(株)日立システムアンドサービス
十九川博幸
Group1(規模推移)
初期登録
12/8
テストコード
の削除
Group2(規模推移)
初期登録
12/8
Group3(規模推移)
初期登録
12/8
Group4(規模推移)
初期登録
12/8
テストコード
の削除
Group5(規模推移)
初期登録
12/8
Group1(CVSバージョン)
Group2(CVSバージョン)
Group3(CVSバージョン)
Group4(CVSバージョン)
Group5(CVSバージョン)
EPMのモニタ結果
規模推移
・テストコードの削除などで一時的に減少しているグループがあるが、特に
異常な状態は見受けられなかった
・急激なコード増の時期があるが、CVS詳細情報と見比べても、特に異常な
状態は見受けられなかった
(バグ情報と比較できれば、効果的な評価ができると思われる)
CVSバージョン情報(バージョン毎のCVS操作回数)
・バージョン1.1(初期登録のまま修正なし)が110件弱存在する
・Group2と3は、バージョン1.2(1回だけ修正)の比率が高く、全体の修正回
数が少ない(作り込み品質が良かったか、バグをたたき出せていない)
(バグ情報と比較できれば、効果的な評価ができると思われる)
ソースコードの静的解析
JAVAのコーディング規約違反などの好ましくないコーディング
を、ツールを使ってチェックすることができる
ここでいう「好ましくないコード」は、バグでは無く、勘違いやミス
を誘発しやすいコードを指す
今回は、PMDというJAVAソースコード解析ツールを使用して、
2007/01/29 11:00時点のソースコード(StockStateDAO)に
対して静的解析を行った
各班の解析結果を報告します。
PMDの詳細は、下記URLを参照ください
http://pmd.sourceforge.net/
http://www.ibm.com/jp/developerworks/java/050121/j_j-pmd.html
雛型の指摘(1)
・Private field 'conn' could be made final; it is only
initialized in the declaration or constructor.
該当のコーディング
private Connection conn;
重要度:軽微
原因:コネクション用変数のfinal指定忘れ
雛型の指摘(2)
・Avoid variables with short names like rs
該当のコーディング
ResultSet rs = null;
重要度:軽微
原因:命名規則の問題(変数名が短すぎる)
Group1の指摘
・Avoid empty if statements
該当のコーディング
if(count == 0){
}
重要度:実装途中の可能性あり
原因:空のIfステートメントあり
Group2の指摘
特になし
Group3の指摘(1)
・Avoid using if statements without curly braces
該当のコーディング
if(rs != null)
rs.close();
重要度:軽微
原因:If文の{}忘れ
Group3の指摘(2)
・Avoid variables with short names like sd
該当のコーディング
StockData sd = null;
重要度:軽微
原因:命名規則の問題(変数名が短すぎる)
Group4の指摘
・Ensure that resources like this ResultSet object are closed
after use
該当のコーディング
ResultSet rs = null;
finallyブロックが無い
重要度:重大
原因:リソースのclose漏れ(finallyブロックでcloseできていない)
Group5の指摘(1)
・Avoid unused imports such as
'org.apache.xalan.lib.sql.SQLErrorDocument'
該当のコーディング
import org.apache.xalan.lib.sql.SQLErrorDocument;
重要度:実装途中の可能性あり
原因:使用されていないimport文
Group5の指摘(2)
・Avoid empty catch blocks
該当のコーディング
catch (SQLException e) {
//
if (LOGGER.isErrorEnabled()) {
//
LOGGER.error(e.getMessage(), e);
//
}
}
重要度:実装途中の可能性あり
原因:catch文のblockが空
ソースコードの静的解析2
この他、StockManagerとStockDAOに対して静的解析を実施
した結果、次のような指摘が摘出された
This call to Collection.toArray() may be optimizable
Avoid unused local variables such as 'sn'.
Avoid using while statements without curly braces
Avoid using if...else statements without curly braces
Avoid using if statements without curly braces
ダウンロード

日立システムアンドサービス 十九川博幸氏による分析結果報告(ppt