JP6310865B2 - ソースコード評価システム及び方法 - Google Patents
ソースコード評価システム及び方法 Download PDFInfo
- Publication number
- JP6310865B2 JP6310865B2 JP2015016323A JP2015016323A JP6310865B2 JP 6310865 B2 JP6310865 B2 JP 6310865B2 JP 2015016323 A JP2015016323 A JP 2015016323A JP 2015016323 A JP2015016323 A JP 2015016323A JP 6310865 B2 JP6310865 B2 JP 6310865B2
- Authority
- JP
- Japan
- Prior art keywords
- source code
- pattern
- metrics
- refactoring
- evaluation system
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Stored Programmes (AREA)
Description
ソースコード格納部111は、ソフトウェア構成管理システムである。ソースコードのバージョン管理や変更の記録など行っている。差分コードメトリクス取得部101は、ソースコード格納部111からあるバージョンのソースコードのクラスと1つ前のバージョンのクラスを取得し、差分の有無を算出する。差分がある場合、コード行数やネスト数などのメトリクス計測を行い、その結果を差分コードメトリクス値テーブル格納部113に出力する。また、ソースコードメトリクス取得部102は、ソースコード格納部111から各バージョンの各クラスを取得し、メトリクス計測を行いその結果をソースコードメトリクス値テーブル格納部114へ出力する。構成管理ログメトリクス取得部103はソースコード修正日などの変更履歴に関連する情報取得を行い、その結果をソースコードメトリクス値テーブル格納部114へ出力する。
差分コードメトリクス取得部101と、ソースコードメトリクス取得部102と、構成管理ログメトリクス取得部103と、稼働ログメトリクス取得部104とはシステム資源からアンチパターン評価に必要な情報をとる機能であることから、まとめて「センサ部」と定義する。また各種メトリクス・情報を取得する個々の機能を「センサ」と呼ぶ。
アンチパターン評価部105、は各クラスが各種アンチパターン因子に該当するか否かを評価する機能を備える。
まず、図7にアンチパターン因子1の特徴を示す。アンチパターン因子1は業務共通クラスに個々の業務処理を場当たり的にif文で追加し、巨大になったクラスである。よって処理フローを追うのが複雑になり可読性が悪化しているアンチパターンである。これはコード規模が大きく、新バージョンソースコードは旧バージョンソースコードと比べ新たな差分が加わり、その差分がif文節であり、同じクラスのバージョン間での差分発生回数が多く、結果現状ソースコードのネスト数が大きい、という特徴を有している。
上記からアンチパターン因子1は、「コード行数」が100以上、「コード比較」で差分が存在し、「分岐」で差分がif文節であり、if文節の差分が5回以上あり、現状版ソースコードのネスト数が5以上であれば該当するというロジックとする。
図8で記述されているロジックは以下の内容である。
まず、図10にアンチパターン因子2の特徴を示す。アンチパターン因子2は機能追加の際、同じような処理を複数個所にif文で追加したものである。よって追加部を修正する際、他の同様の処理の箇所にも修正を行う必要があり、修正ミスの可能性があるアンチパターンである。これは、新バージョンソースコードは旧バージョンソースコードと比べ新たな差分が加わり、同じクラスのバージョン間での差分発生が複数回あり、その差分がif文節であり、その差分が他ソースコードとコードクローンである。
図11で記述されているロジックは以下の内容である。
最初にアンチパターン評価を行うソースコードクラスを宣言し、センサ「過去コード」を利用し対象クラスの過去バージョンのコードを宣言する。ここでは、各クラス、コードについて、対象となるもののすべてを特定するようにしてもよい。
図13に、アンチパターン評価部105から出力されアンチパターン判定テーブル格納部117に格納されるテーブルの例を示す。各クラスが各種アンチパターン因子に該当していれば「○」、該当していなければ「×」が格納されている。
ここで、リファクタリング方法提案部106は、アンチパターン判定テーブル格納部117から図13のテーブルと、アンチパターンリファクタリング手順テーブル格納部118から図14のテーブルと、ソースコードメトリクス値テーブル格納部114から各クラスの障害発生回数とを取得し、リファクタリング要素一覧テーブルを作成する。
図16に、リファクタリング手法・優先度一覧画面表示部107で表示される内容の一例を示す。画面にはそのプロジェクトの運用予定期間を入力する欄と、そのプロジェクトにおいて1回の障害修正にかかるコストを入力する欄とがあり、さらに、リファクタリング優先度ランキング番号を示す欄と、クラス名を示す欄と、各クラスに存在するアンチパターン因子の種類を示す欄と、各クラスのとるべきリファクタリング手法を提示する欄と、リファクタリング優先度評価値を示す欄とを有するテーブルが表示されている。
リファクタリング優先度評価値は以下の式で導出する。
リファクタリング 優先度評価値=リファクタリング効果−リファクタリング工数
={年平均障害発生回数(回/365日)
×運用予定期間(日)
×1回の障害修正にかかるコスト(人月/回)}
− リファクタリング想定工数(人月)…(数1)
リファクタリング優先度ランキングは、リファクタリング工数に対してリファクタリング効果が大きいクラス、つまりリファクタリング優先度評価値が大きいクラスの優先度が高くなるように順位づけし、表示する。
なお、上記のセンサ実行の処理フローを用いることで、アンチパターン評価部105において対象となるクラスの数を絞り込むことができ、効率的である。
Claims (5)
- システムで用いられるプログラムを分析し、当該プログラムのアンチパターンを抽出するソースコード評価システムにおいて、
前記システムのソースコードを含む稼働に関する情報からメトリクスを計測する手段と、
前記計測されたメトリクスを用いて、前記ソースコードがアンチパターンの該当可否をその複雑さ示す指標を用いて評価する手段と、
前記評価された結果について、前記ソースコードのリファクタリングの優先度を算出・提示する手段を有することを特徴とするソースコード評価システム - 請求項1に記載のソースコード評価システムにおいて、
前記メトリクスの項目を要素とし、前記アンチパターンを記述する手段をさらに有することを特徴とするソースコード評価システム。 - 請求項1に記載のソースコード評価システムにおいて、
前記ソースコードの各バージョン間の差分を取得し、取得された差分についてのメトリクスを取得する手段と、
取得された前記差分を用いて、前記ソースコードがアンチパターンの該当可否を評価する手段をさらに有することを特徴とするソースコード評価システム。 - 請求項1に記載のソースコード評価システムにおいて、
リファクタリング実施による障害発生削減効果とリファクタリング実施の際の工数を見積もり、当該見積もり結果からリファクタリング優先度を掲示する手段をさらに有することを特徴とするソースコード評価システム。 - 請求項1に記載のソースコード評価システムにおいて、
前記ソースコードから計測した前記メトリクスに基づいて、特定条件を満たすメトリクスの絞込みを行い、絞り込まれた前記メトリクスに基づいて、他のメトリクスの取得可否を判定する手段をさらに有することを特徴とするソースコード評価システム。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2015016323A JP6310865B2 (ja) | 2015-01-30 | 2015-01-30 | ソースコード評価システム及び方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2015016323A JP6310865B2 (ja) | 2015-01-30 | 2015-01-30 | ソースコード評価システム及び方法 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2016143107A JP2016143107A (ja) | 2016-08-08 |
| JP6310865B2 true JP6310865B2 (ja) | 2018-04-11 |
Family
ID=56570461
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2015016323A Active JP6310865B2 (ja) | 2015-01-30 | 2015-01-30 | ソースコード評価システム及び方法 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP6310865B2 (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| EP4099156A1 (en) * | 2021-06-04 | 2022-12-07 | Hitachi, Ltd. | Source code analysis apparatus and source code analysis method |
Families Citing this family (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2019219848A (ja) * | 2018-06-19 | 2019-12-26 | クラリオン株式会社 | ソースコード解析方法およびソースコード解析装置 |
| JP7116313B2 (ja) | 2018-11-28 | 2022-08-10 | 富士通株式会社 | 修正候補特定プログラム |
Family Cites Families (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2009011056A1 (ja) * | 2007-07-19 | 2009-01-22 | Fujitsu Limited | アプリケーション改善支援プログラム、アプリケーション改善支援方法およびアプリケーション改善支援装置 |
| JP5041986B2 (ja) * | 2007-11-27 | 2012-10-03 | 株式会社日立製作所 | コンポーネント分割支援装置、及びその方法とプログラム |
| JP2012230512A (ja) * | 2011-04-26 | 2012-11-22 | Hitachi Ltd | ソースコード中の関数ごとの変更回数と複雑度の対応一覧を表示するシステム |
-
2015
- 2015-01-30 JP JP2015016323A patent/JP6310865B2/ja active Active
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| EP4099156A1 (en) * | 2021-06-04 | 2022-12-07 | Hitachi, Ltd. | Source code analysis apparatus and source code analysis method |
| US12099836B2 (en) | 2021-06-04 | 2024-09-24 | Hitachi, Ltd. | Source code analysis apparatus and source code analysis method |
Also Published As
| Publication number | Publication date |
|---|---|
| JP2016143107A (ja) | 2016-08-08 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US9235494B2 (en) | Automated code analyzer | |
| US10671061B2 (en) | Devices, methods, and systems for a distributed rule based automated fault detection | |
| JP6141471B2 (ja) | システムの可用性を解析するための方法、装置、当該装置を含むシステム、並びに、上記方法を実施するためのコンピュータプログラム | |
| US9621679B2 (en) | Operation task managing apparatus and method | |
| JP2017091329A (ja) | データベース分析装置およびデータベース分析方法 | |
| US12511185B2 (en) | Processor system and failure diagnosis method | |
| Gitzel | Data Quality in Time Series Data: An Experience Report. | |
| US20160062857A1 (en) | Fault recovery routine generating device, fault recovery routine generating method, and recording medium | |
| JP6310865B2 (ja) | ソースコード評価システム及び方法 | |
| US11347864B2 (en) | Ace: assurance, composed and explained | |
| CN111773728A (zh) | 数据表测试方法、装置、设备及存储介质 | |
| JP7190246B2 (ja) | ソフトウェア不具合予測装置 | |
| US9798605B2 (en) | Supporting global effect analysis | |
| CN103455417B (zh) | 一种基于马尔可夫模型的软件错误定位系统及错误定位方法 | |
| JP7339063B2 (ja) | 作業工程に関する学習を行う機械学習プログラム及び機械学習装置 | |
| JP6247777B2 (ja) | 異常診断装置および異常診断方法 | |
| JP5741265B2 (ja) | プログラム改善支援システム | |
| Kadry | A new proposed technique to improve software regression testing cost | |
| JP5200678B2 (ja) | サービシステム、サービスシステム管理方法、及びプログラム | |
| US10387532B2 (en) | Manufacturing control system, manufacturing control method, and manufacturing control program | |
| CN115113920B (zh) | 演化耦合关系抽取方法、系统、计算机设备及存储介质 | |
| Bala et al. | Use of the multiple imputation strategy to deal with missing data in the ISBSG repository | |
| US9600245B2 (en) | Computer-implemented method for generating control unit program code and message management environment relating thereto | |
| JP6677068B2 (ja) | 実行時間推定装置、実行時間推定方法、及びプログラム | |
| JP6320269B2 (ja) | ソフトウェア試験支援装置およびソフトウェア試験支援プログラム |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20170110 |
|
| RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20170112 |
|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20170321 |
|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20180112 |
|
| TRDD | Decision of grant or rejection written | ||
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20180220 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20180319 |
|
| R150 | Certificate of patent or registration of utility model |
Ref document number: 6310865 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |