JP2004240477A - ソースコード静的解析支援システムおよび静的解析装置 - Google Patents
ソースコード静的解析支援システムおよび静的解析装置 Download PDFInfo
- Publication number
- JP2004240477A JP2004240477A JP2003025822A JP2003025822A JP2004240477A JP 2004240477 A JP2004240477 A JP 2004240477A JP 2003025822 A JP2003025822 A JP 2003025822A JP 2003025822 A JP2003025822 A JP 2003025822A JP 2004240477 A JP2004240477 A JP 2004240477A
- Authority
- JP
- Japan
- Prior art keywords
- source code
- analysis
- static analysis
- static
- information
- 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.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
【課題】顧客が静的解析の知識を多く必要とせずに静的解析を実行することを可能とし、プロジェクトごとの静的解析システムの維持コストの削減、および静的解析実施部門の無駄の無い静的解析システムの運用を可能とするソースコード静的解析支援システムを得ること。
【解決手段】ソースコードの静的解析を依頼する端末装置20と、ソースコードの静的解析の実施に必要な解析対象情報を端末装置20から受信し、ソースコードの静的解析の結果である解析結果を端末装置20へ送信する通信部11と、端末装置20から受信した解析対象情報を用いてソースコードの静的解析を行い、解析結果を出力するソフトウェア静的解析部13とを有する静的解析装置10とが、通信回線30を介して接続される。
【選択図】 図1
【解決手段】ソースコードの静的解析を依頼する端末装置20と、ソースコードの静的解析の実施に必要な解析対象情報を端末装置20から受信し、ソースコードの静的解析の結果である解析結果を端末装置20へ送信する通信部11と、端末装置20から受信した解析対象情報を用いてソースコードの静的解析を行い、解析結果を出力するソフトウェア静的解析部13とを有する静的解析装置10とが、通信回線30を介して接続される。
【選択図】 図1
Description
【0001】
【発明の属する技術分野】
この発明は、ソフトウェアのソースコードの静的解析作業を支援して、その解析手順を効率化するソースコード静的解析支援システムおよび静的解析装置に関するものである。
【0002】
【従来の技術】
ソフトウェア開発において、コーディング時のソースコードの記述誤りによって、ソフトウェアが正常に動作しないという不具合は数多く発生する。このソースコードの記述誤りはソースコードをレビューすることで削減することが可能であるが、ソースコードの規模が大きくまた複雑になるにつれてソースコードの完全なレビューは困難となる。このソースコードのレビューの1つの方法であるソースコード静的解析は、ソースコードを実際に実行せずに構文的あるいは意味的に解析し、記述誤りの可能性の高い部分について警告を出力するもので、記述誤りの発見を支援するものである。
【0003】
このようなソースコードの記述誤りをソフトウェアの試験前に検出し、ソースコード開発者が修正できるような情報を提供するために、ソースコードを実際に実行せずに構文的または意味的に解析し、記述誤りの可能性の高いソースコードの記述に対して警告を出力する静的解析システムが英国Programming Research社製のQAC(商品名)、QAC++(商品名)や、富士通ミドルウェア社製のEYDS(登録商標)等として開発され、販売されている。
【0004】
また、ソースコードのレビューに加えて、プログラムの開発が終了した後に、ソースコードの改良や保守の作業を行う場合に、その作業効率を向上させ、誤修正を防止するためのプログラム保守支援装置が提案されている(たとえば、特許文献1参照)。この特許文献1に記載のプログラム保守支援装置は、インクルードファイル内の複数のデータ名とこのデータと参照・更新関係にあるプログラムのソースコードファイル名とを記憶する参照・更新関係記憶部と、コンパイル・リンク作業の指定を記憶するコンパイル・リンク作業部と、インクルードファイルから参照・更新関係を有するデータ名を検出して参照・更新関係記憶部に記憶した後、コンパイル・リンク作業部に記憶されている作業指定を基に、プログラムのソースコードファイルからデータ名を検出して、参照・更新関係記憶部に記憶されているデータ名に対応させてプログラムのソースコードファイル名を参照・更新関係記憶部に記憶する処理を行う参照・更新関係検出/処理部と、その処理結果を表示する表示部とを有している。これによって、プログラムとインクルードファイルのクロスリファレンスが作成され、プログラムとインクルードファイル内のデータとの対応関係をプログラムの保守を行う者に対して表示するようにしている。
【0005】
【特許文献1】
特開平5−158667号公報(第3頁)
【0006】
【発明が解決しようとする課題】
しかしながら、上述した従来の静的解析システムには、つぎのような種々の問題点があった。まず、第1の問題点として、静的解析システムは、言語標準規格に対して解析対象ソースコードがどのように乖離しているかを解析するために、ソースコードの解析にはソースコードごとの詳細な特性情報が必要であり、その内容を静的解析システムに反映するためには静的解析システムに関する熟練が必要であった。このような問題点に対し、たとえば、富士通ミドルウェア社製のEYDS(登録商標)等では、ソースコードの開発環境ごとの大まかな特性情報をセットとして提供し、顧客に対してそれらの中からソースコードの開発環境に最も近い設定を選択させることで、特定の開発環境の基礎的な設定内容に関しては容易に設定を行うことが可能な機能を備えている。しかし、全てのソースコード毎の設定は準備されておらず、あらかじめ準備されていない開発環境においては、煩雑な設定を行う必要があり、そのために静的解析システムに習熟する必要があった。
【0007】
つぎに、第2の問題点は、上記第1の問題点から、静的解析システムに習熟していない顧客が解析を行うと、本当に不具合となる可能性のあるソースコードの記述に対する警告が、ソフトウェアの実行上は問題のないソースコードの記述、またはソフトウェアの実行上、警告対象となるが故意にそのような記述をしているソースコードの記述に対して出力された警告に埋没してしまい、それらの区別が困難となるというものである。すなわち、本当に不具合となる可能性のある警告を見つけ出すために、静的解析システムに習熟していない顧客は出力された結果の解析に時間を費やさなければならなかった。
【0008】
つぎに、第3の問題点は、ソースコード静的解析は、コーディング終了からテスト開始段階までのソフトウェア開発の特定の期間で利用されることが多く、各開発者の静的解析システムの利用時期が集中する反面、利用されない期間も長いことに起因するものである。すなわち、ソースコード静的解析システムをソフトウェア開発プロジェクトごとに設置する場合には、利用が集中するピークに合わせて静的解析システムを構築する必要があるために、システムとしては十分な構成となるが、その分利用されない期間にシステムを維持するコストが無駄になってしまうという問題点があった。
【0009】
そして、第4の問題点は、上記第3の問題点に対処するために、ソースコード静的解析を専門に行う組織にソースコードの解析を依頼する場合に起因するものである。基本的にソースコードは機密性の高い情報であり、ソースコードの種類によっては、ソースコード静的解析の担当者の目に触れさせることはできる限り避ける必要がある。しかし、ソースコードの解析をその専門組織に依頼する場合には、機密性の高いソースコードが、ソースコード静的解析の担当者の目に触れてしまう危険性が高くなってしまう。そこで、たとえばソースコード静的解析を自己の組織の外部の専門組織に依頼するのではなく、ソースコード静的解析を専門に行う部門を自己の組織の内部に設置して、ソースコード静的解析を行う作業担当者を常設する方法が考えられる。しかし、この場合にも、上記第3の問題点と同じく、その部門の維持にコストがかかってしまうという問題点があった。
【0010】
また、特許文献1に記載のプログラム保守支援装置においても、プログラムの保守時におけるインクルードファイルとソースコードファイルとの間の定義などの参照関係を明示して、保守を行って作業効率を改善するものではあるが、上記した第1〜第4の問題点を解決するものではない。
【0011】
これらのように、従来の静的解析システムでは実際の静的解析を実行するまでの準備に静的解析の知識を必要とする上に、解析対象ソースコードの特性を静的解析システムに反映するために静的解析システムに熟練する必要があり、静的解析システムに対して適切な設定を行わないと、解析の結果として本来意図していない膨大な警告を発生し確認に時間がかかるといった問題点があった。
【0012】
また、静的解析システムはソフトウェア開発において特定のフェーズに集中的に利用されるため、各プロジェクトで静的解析システムを設置すると、利用されない期間にシステムを維持するコストが無駄となり、集中して静的解析を行う部門を設置する場合でも、作業担当者の維持コストがかかるという問題点もあった。さらに、ソースコード静的解析を専門組織に依頼する場合には、ソースコードの機密性を考慮すると、ソースコードの内容が解析担当者の目に触れることは好ましくないという問題点もあった。
【0013】
この発明は、上記に鑑みてなされたもので、顧客が静的解析の知識を多く必要とせずに静的解析を実行することを可能とし、プロジェクトごとの静的解析システムの維持コストの削減、および静的解析実施部門の無駄の無い静的解析システムの運用を可能とするソースコード静的解析支援システムおよび静的解析装置を得ることを目的とする。
【0014】
【課題を解決するための手段】
上記目的を達成するため、この発明にかかるソースコード静的解析支援システムは、ソースコードの静的解析を依頼する端末装置と、前記ソースコードの静的解析の実施に必要な解析対象情報を前記端末装置から受信し、前記ソースコードの静的解析の結果である解析結果を前記端末装置へ送信する通信手段と、前記端末装置から受信した前記解析対象情報を用いて前記ソースコードの静的解析を行い、解析結果を出力するソフトウェア静的解析手段と、を有する静的解析装置と、が、通信回線を介して接続されていることを特徴とする。
【0015】
【発明の実施の形態】
以下に添付図面を参照して、この発明にかかるソースコード静的解析支援システムおよび静的解析装置の好適な実施の形態を詳細に説明する。
【0016】
実施の形態1.
図1は、この発明にかかるソースコード静的解析支援システムおよび静的解析装置の実施の形態1の概略構成を示すブロック図である。ソースコード静的解析支援システムは、プログラムのソースコードを作成し、その静的解析の依頼をする端末装置20と、該端末装置20によって作成されたソースコードの静的解析を実行する静的解析装置10とが、LAN(Local Area Network)やインターネットなどのネットワーク30を介して接続された構成となっている。
【0017】
端末装置20は、図示していないが、CRT(Cathode Ray Tube)やLCD(Liquid Crystal Display)などの表示部、キーボードやポインティングデバイスなどの入力部、種々の処理を実行するCPU(Central Processing Unit)などの演算処理部、ソースコードなどを格納する記憶部、通信回線を介して他の端末装置20や静的解析装置10との間で通信を行う通信部を有しており、ソースコードを作成し、静的解析装置10との間で通信を行うことが可能なパーソナルコンピュータなどの情報処理端末である。
【0018】
静的解析装置10は、端末装置20との間で通信を行う通信部11、静的解析で必要な情報を端末装置20にHTML(Hyper Text Markup Language)形式などの形式で表示するための通信情報データベース12、端末装置20からのソースコードの静的解析を行うソフトウェア静的解析部13、静的解析を行ったソースコードに関する情報などを格納する解析情報データベース14、解析情報データベース14の構成を変更する構成/変更管理部15、解析情報データベース14に格納されている過去の情報と新しく格納される情報とを比較して解析する解析履歴生成部16を有する。
【0019】
通信部11は、静的解析装置10と通信回線を介して接続された端末装置20との間でデータの送受信を行う役割を有する。具体的には、ソースコード静的解析を行う際に必要な情報を端末装置20に提示したり、端末装置20からソースコード静的解析の対象となる情報やソースコードを受信したり、受信したソースコードの静的解析の解析結果を端末装置20に送信したりする。
【0020】
通信情報データベース12は、ソースコード静的解析を行う際に端末装置20との間でやりとりされる情報を電子データの形式で格納する。この実施の形態1では、端末装置20に表示されたWebブラウザでソースコード静的解析に必要な解析対象情報を入力、閲覧および送信させるための表示画面がHTML形式などのファイル形式で格納されている場合を例に挙げている。そのため、この実施の形態1では、これらの通信部11と通信情報データベース12とを合わせて、Webサーバの役割を担っている。
【0021】
ここで、解析対象情報は、開発環境コンパイラの独自設定の登録などの解析対象であるソースコードの開発環境についての開発環境情報、解析対象ソースコードが利用しているシステムインクルードファイル、makefileやprojectファイルなどの解析対象ソースコードのコンパイル時の手続が格納されたコンパイル時手続情報、解析対象ソースコードである顧客の開発ソースコード、そして顧客を識別するために顧客に対して一意に割り振られるユーザIDや、解析対象であるソースコードを識別するために割り振られるプロジェクトナンバなどの解析対象のソースコードを管理するために初回解析時に登録する登録情報を含むものである。
【0022】
以上において、ソースコードで使用される関数や型、マクロ定義などを格納するインクルードファイルは、この発明では開発ソースコードに含まれている。また、開発環境コンパイラとは、開発環境に応じて種々のコンパイラが存在するので、開発環境に応じて選択されたコンパイラを意味するものである。さらに、開発環境情報(開発環境コンパイラ)については、想定される開発環境を予め通信情報データベース12に登録しておき、顧客がその通信情報データベース12に格納された開発環境の中から選択することができるようにしてもよい。さらにまた、登録情報には、2回目以降の静的解析時に入力するために、顧客であることを確認するためのパスワードなどのセキュリティ情報を含むものであってもよい。これらの解析対象情報を解析対象ごとに顧客が端末装置20から入力または添付できるように、たとえばHTML形式のファイルが通信情報データベース12に格納されている。
【0023】
ソフトウェア静的解析部13は、上記端末装置20から受信した解析対象情報を入力として、ソースコードの静的解析を行い、ソフトウェア静的解析の解析結果である警告が埋め込まれたソースコード、表計算アプリケーションで利用可能な形式の解析結果の集計ファイル、ソースコード解析結果を評価した解析結果成績書、およびソースコードの問題のある部分に関する修正提案を出力する。ソフトウェア静的解析部13は、このような静的解析を行うものであれば、市販されているものであっても、独自に開発したものであってもよい。
【0024】
構成/変更管理部15は、端末装置20から受信した開発環境情報とシステムインクルードファイル、およびソフトウェア静的解析部13で出力された解析結果を、解析情報データベース14に登録して管理する機能を有する。なお、ソースコードの初回解析時においては、ソフトウェア静的解析部13で出力された解析結果がそのまま解析情報データベース14に格納されるが、ソースコードの2回目以降の解析時においては、出力された解析結果は解析情報データベース14に、過去の解析結果が残るように累積的に保存されることが望ましいが、前回の解析時の解析結果に上書きして格納されるようにしてもよい。
【0025】
解析履歴生成部16は、2回目以降のソースコード静的解析時に、そのときのソフトウェア静的解析部13で出力された解析結果と、解析情報データベース14に登録されている前回行われたソフトウェア静的解析部13で出力された解析結果とを比較分析して、解析履歴成績書を作成する。この解析履歴成績書は、たとえばある指標についての今回の解析結果と前回の解析結果との差分を計算し、その差分を解析結果の改善の良否として、グラフなどの形で視覚的に表現したものである。たとえば、数値が小さければ小さいほど解析結果の評価が高いある指標について、前回の解析結果を基準として算出された計算値が負の値で示され、その絶対値が大きければ、ソースコードの構造が改善されていることになる。
【0026】
解析情報データベース14は、通信部11で端末装置20から受信した解析対象情報のうち開発環境情報とシステムインクルードファイルのほか、ソフトウェア静的解析部13で出力された結果と、解析履歴生成部16で生成された解析履歴成績書を、ソースコードに対して付された登録情報と関連付けして格納する。開発環境情報とシステムインクルードファイルは、あるソフトウェアの開発において1対1に対応するものであるので、その内容が変更されることはないと考えられるので、ソースコードの初回解析時において解析情報データベース14に登録される。このようにすることで、同じソフトウェアの2回目以降のソースコード静的解析時において、端末装置20から静的解析装置10に送信する情報量を抑制することが可能となる。
【0027】
なお、図1には示されていないが、端末装置20と静的解析装置10との間で通信を行うために、DNS(Domain Name System)サーバなどがネットワーク上に配置されている。
【0028】
つぎに、このソースコード静的解析支援システムの動作処理手順について、図2〜図6を参照しながら説明する。図2は、この発明にかかるソースコード静的解析支援システムを用いてソースコードの静的解析を初回に行う場合の処理の流れを模式的に示す図であり、図3は、ソースコードの静的解析を2回目以降に行う場合の処理の流れを模式的に示す図である。なお、以下では、ソースコードの静的解析を依頼する端末装置20から静的解析装置10に対する表示画面の指示や、静的解析装置10から端末装置20への指示された表示画面データの送信は、たとえば、HTTP(Hyper Text Transfer Protocol)によって行われるものとする。このようなプロトコルを用いたネットワークにおけるデータの送受信は、公知の技術であるので、その詳細な説明は省略する。
【0029】
図4は、静的解析の対象となるソースコードを含む解析対象情報を静的解析装置が受け付ける処理手順を示すフローチャートである。まず、ソースコードの静的解析を実行しようと考えている顧客によって、顧客の端末装置20から静的解析装置10にアクセスされると、静的解析装置10は、HTTPによって端末装置20に、通信情報データベース12に格納されている静的解析を実行するためのHTML形式の初期画面データを送信する。この初期画面データには、対象となるソースコードについて静的解析が初めてか否かを選択する項目が付されており、顧客の端末装置20には、ソースコード解析が初めてか否かを選択する画面が表示される(ステップS101)。
【0030】
端末装置20に選択画面が表示されると、顧客によって、このシステムでの解析対象となるソースコードの静的解析の実施が初めてか否かが判断される(ステップS102)。解析対象となるソースコードの静的解析の実施が初めてである場合(ステップS102でYesの場合)には、その旨が静的解析装置10へと送信され、静的解析装置10の通信部11は、解析情報データベース14に格納されている過去に解析実績のある開発環境情報(開発環境コンパイラ)の一覧画面を顧客の端末装置20に送信して表示させる(ステップS103)。
【0031】
開発環境コンパイラの一覧画面が端末装置20に表示されると、その中から解析対象となるソースコードの開発環境コンパイラと同種の開発環境コンパイラがあるか否かが顧客によって判断される(ステップS104)。解析対象となるソースコードの開発環境コンパイラと同種の開発環境コンパイラが存在する場合(ステップS104でYesの場合)には、顧客によって同種の開発環境コンパイラが一覧画面から選択され、その情報が静的解析装置10へと送信される。静的解析装置10の通信部11は、顧客によって選択された開発環境コンパイラの内容を、顧客の端末装置20に表示させる(ステップS105)。そして、この表示された開発環境コンパイラが、解析対象ソースコードの開発環境コンパイラとして、顧客の端末装置20の表示画面上で設定される。
【0032】
一方、ステップS104で、解析対象となるソースコードの開発環境コンパイラと同種の開発環境コンパイラが存在しない場合(ステップS104でNoの場合)には、その旨が静的解析装置10へと送信される。その後、静的解析装置10の通信部11は、通信情報データベース12に格納されているソースコードの静的解析に必要な開発環境コンパイラの独自設定の登録画面を送信して、顧客の端末装置20に表示させる(ステップS106)。顧客は、端末装置20の入力部から静的解析で必要な開発環境コンパイラの情報を入力する。この開発環境コンパイラの独自設定の登録画面では、暗黙のマクロ定義や言語拡張記述の置き換えなどの方法を記述するが、平易な表現を用いて顧客の入力を容易にする画面設計とされていることが望ましい。
【0033】
この開発環境コンパイラの独自設定の登録画面に必要事項が入力された後、静的解析装置10の通信部11は、解析情報データベース14に格納されているシステムインクルードファイルの指定画面を端末装置20に表示させる(ステップS107)。ここで、システムインクルードファイルは、ステップS106で設定した開発環境コンパイラが独自に有するものである。このシステムインクルードファイルの指定画面は、システムのファイル構造をツリー状に可視的に表示できるものであり、その表示の中から、一連のシステムインクルードファイル群が格納されているディレクトリを指定するようにすると、入力が容易になり望ましい。
【0034】
静的解析装置10は、顧客の端末装置20にステップS105での開発環境選択画面を表示させた後、またはステップS107でシステムインクルードファイルの指定画面を表示させた後、makefileなどのコンパイル時手続情報を入力もしくは選択する画面、またはコンパイル時手続情報が記載されたファイルを指定する設定画面を、端末装置20に表示させる(ステップS109)。顧客は、この画面でコンパイル時の手続に関する情報の設定を行う。なお、コンパイル時手続情報が記載されたファイルを指定する場合に、ファイルが格納されているディレクトリをツリー状に可視的に表示させて、そのツリー状の中のディレクトリ中から所望のファイルを選択させるようにしてもよい。
【0035】
つぎに、静的解析装置10の通信部11は、通信情報データベース12の中から、顧客が静的解析時に付加的な設定を行うことが可能な画面を、端末装置20に送信して表示させる(ステップS110)。ここで、静的解析時の付加的な設定とは、開発環境コンパイラの種類によって、そのコンパイラに特別に指定しなければならないパラメータに対して行う設定のことをいう。
【0036】
つぎに、静的解析装置10の通信部11は、顧客が解析を依頼するソースコードを指定する指定画面を通信情報データベース12の中から端末装置20に対して送信して表示させる(ステップS111)。そして、顧客は、この指定画面で解析対象のソースコードを指定する。
【0037】
上述した各ステップの画面における入力が端末装置20側で完了すると、静的解析装置10の通信部11は、入力された情報の正誤の確認を行うための送信画面を端末装置20に表示させる(ステップS112)。顧客によって、この送信画面での入力内容の確認が行われた後に、解析対象情報の送信指示が出されると、これらの解析対象情報が静的解析装置10へと送信される。
【0038】
静的解析装置10の通信部11は、顧客の端末装置20から正常に解析対象情報を受信したことを確認すると、この受信した解析対象情報に対して、ソースコード静的解析の依頼を受け付けたことを示す受付番号、ユーザID、プロジェクトナンバなどのソースコードを管理するための登録情報を付与する。そして、解析対象に付与された登録情報を含む解析対象情報が静的管理装置の解析情報データベース14などによって保管されたことを示す内容の画面を、端末装置20に送信して表示させ(ステップS113)、解析対象情報の登録処理が終了する。
【0039】
一方、ステップS102において、解析対象のソースコードの静的解析の実施が初めてではなく、以前に静的解析実施の実績がある場合(ステップS102でNoの場合)には、その旨が静的解析装置10へと送信され、静的解析装置10の通信部11は、通信情報データベース12に格納されている登録情報入力画面を顧客の端末装置20に送信して表示させる(ステップS108)。登録情報入力画面は、対象となるソースコードの静的解析の初回依頼時に静的解析装置10から上述したステップS113で発行された受付番号やユーザID、プロジェクトナンバなどの登録情報を、顧客に対して入力させるように構成されている。顧客は、この登録情報入力画面の所定の場所に、ユーザIDやプロジェクトナンバなどソースコードを識別するための情報を入力する。その後、上述したステップS109〜S113の処理によって、解析対象情報の登録処理が実行される。
【0040】
図5は、静的解析装置における静的解析の処理手順を示すフローチャートである。まず、静的解析装置10の通信部11によって顧客の端末装置20から受信したコンパイル時手続情報とソースコードを保存する(ステップS201)。
【0041】
つぎに、通信部11は、解析を依頼する顧客の端末装置20から受信したソースコードは過去に解析実績のあるソースコードであるか否かを判断する(ステップS202)。過去に解析実績のあるソースコードであるか否かは、ソースコードに関する登録情報を参照することによって行う。過去に解析実績のあるソースコードである場合(ステップS202でYesの場合)には、構成/変更管理部15は、ソースコードの登録情報を参照して、該登録情報と関連付けされて格納されているシステムインクルードファイルを解析情報データベース14から取り出す(ステップS203)。一方、過去に解析実績のあるソースコードでない場合(ステップS202でNoの場合)には、構成/変更管理部15は、顧客の端末装置20から取得したシステムインクルードファイルを解析情報データベース14に登録する(ステップS204)。
【0042】
ステップS203で解析情報データベース14から登録済みシステムインクルードファイルを取り出した後に、または、ステップS204で顧客の端末装置20から取得したシステムインクルードファイルを解析情報データベース14に登録した後に、解析を依頼する顧客の端末装置20から受信したソースコードが、過去に同種の開発環境コンパイラでの解析実績があるか否かを判断する(ステップS205)。過去に同種の開発環境コンパイラでの解析実績があるソースコードである場合(ステップS205でYesの場合)には、構成/変更管理部15は、解析情報データベース14からそのソースコードの開発環境コンパイラと合致する登録済みの開発環境コンパイラの独自設定を取り出す(ステップS206)。一方、過去に同種の開発環境コンパイラでの解析実績が無いソースコードである場合(ステップS205でNoの場合)には、構成/変更管理部15は、顧客の端末装置20から取得した開発環境コンパイラの独自設定を解析情報データベース14に登録する(ステップS207)。
【0043】
ステップS206で解析情報データベース14から登録済みの開発環境コンパイラの独自設定を取り出した後に、または、ステップS207で顧客の端末装置20から取得した開発環境コンパイラの独自設定を解析情報データベース14に登録した後に、ソフトウェア静的解析部13は、開発環境コンパイラ、システムインクルードファイル、コンパイル時手続情報、およびソースコードを含む登録情報を用いて、ソースコードの静的解析を行う(ステップS208)。そして、このソフトウェア静的解析部13によって出力されたソースコードの解析結果、具体的には、警告が埋め込まれたソースコード、表計算アプリケーション用集計ファイル、解析結果成績書およびソースコード修正提案が、一時的に静的解析装置10内に記憶される。
【0044】
つぎに、構成/変更管理部15は、解析情報データベース14に過去の解析データが存在するか否かを判断する(ステップS209)。この過去の解析結果が存在するか否かの判断は、ユーザIDやプロジェクトナンバなどの登録情報を用いて行う。ここで、解析情報データベース14に過去の解析結果が存在する場合(ステップS209でYesの場合)には、解析履歴生成部16は、解析情報データベース14に格納されている過去の解析結果と、ソフトウェア静的解析部13によって出力された解析結果との比較分析を実施して、その結果である解析履歴成績書を生成する(ステップS210)。その後、構成/変更管理部15は、警告が埋め込まれたソースコード、表計算アプリケーション用集計ファイル、解析結果成績書、ソースコード修正提案および解析履歴成績書を解析情報データベース14に登録して(ステップS211)、処理が終了する。
【0045】
一方、ステップS209で、解析情報データベース14に過去の解析データが存在しない場合(ステップS209でNoの場合)には、ソフトウェア静的解析部13によって出力された警告が埋め込まれたソースコード、表計算アプリケーション用集計ファイル、解析結果成績書およびソースコード修正提案を含む解析結果を、解析情報データベース14に登録して(ステップS212)、処理が終了する。
【0046】
図6は、ソースコードの静的解析結果を顧客に表示する処理手順を示すフローチャートである。まず、ソースコードの静的解析結果を取得したい顧客の端末装置20から静的解析装置10にアクセスされると、静的解析装置10の通信部11は、通信情報データベース12に格納されている登録情報入力画面を顧客の端末装置20に送信する(ステップS301)。顧客は、この登録情報入力画面の所定の場所に、静的解析の結果を取得したいソースコードについての受付番号、ユーザID、プロジェクトナンバなどを含む登録情報を入力する。
【0047】
顧客によって入力された登録情報入力画面の内容が、顧客の端末装置20から静的解析装置10へ送信されると、静的解析装置10の通信部11は、登録情報入力画面に入力された内容と通信情報データベース12に格納されている登録情報の内容とを比較することによって、顧客が正しくソースコード静的解析を依頼した顧客であるか否かを判断する(ステップS302)。ここで、入力内容に誤りがある場合(ステップS302でNoの場合)には、静的解析装置10の通信部11は、エラー画面を通信情報データベースから顧客の端末装置20に送信して表示させ(ステップS303)、処理が終了する。
【0048】
一方、ステップS302で、静的解析装置10の通信部11によって、顧客が正しくソースコード静的解析を依頼した顧客であると判断された場合(ステップS302でYesの場合)には、静的解析装置10の通信部11は、ソフトウェア静的解析部13によって実施されたソースコードの解析結果成績書、表計算アプリケーション用集計ファイル、警告が埋め込まれたソースコード、ソースコード修正提案を含む解析結果が表示された表示画面、およびこれらのファイルをダウンロードするためのダウンロード画面を、顧客の端末装置20に送信して表示させる(ステップS304)。その後、構成/変更管理部15によって解析情報データベース14で管理されている過去の静的解析の解析結果に、現在顧客が依頼しているソースコードの解析結果についての以前の版(以下、過去の解析結果という)が存在するか否かを判断する(ステップS305)。この過去の解析結果が存在するか否かの判断は、ステップS301で入力された登録情報を用いて、解析情報データベース14内の解析結果を検索することによって行うことができる。
【0049】
ステップS305で、過去の解析データが存在しない場合(ステップS305でNoの場合)には、そのまま処理が終了する。一方、ステップS305で、過去の解析データが存在する場合(ステップS305でYesの場合)には、解析履歴生成部16によって生成され、解析情報データベース14に格納されている解析履歴成績書が、通信部11によって顧客の端末装置20へ送信され、表示される(ステップS306)。そして、処理が終了する。
【0050】
この実施の形態1によれば、ソースコードを作成する端末装置20とソースコード静的解析を実行する静的解析装置10とが、ネットワーク30で接続されるように構成し、静的解析装置10と端末装置20との間でソースコード静的解析を実行するための情報を電子的に、より具体的にはWebブラウザを用いて、受付および提示するように構成したので、複数のプロジェクトで作成されたソースコードを1拠点で集中的に静的解析を実行することができるという効果を有する。また、1拠点で集中的に静的解析を実行することができるので、静的解析装置10には静的解析に必要な情報やノウハウが集積され、この集積されたノウハウを使用することで、顧客が静的解析に関する多くの知識を必要とすることなく、ソースコードの静的解析を実行することができる。その結果、解析の実行に際して、詳細な設定やノウハウを必要としないでソースコード静的解析を実行しても、設定ミスやノウハウの不足を原因とした解析結果の警告を大量に発生させる問題や、解析自体が失敗するといった問題点を回避することができる。
【0051】
さらに、1拠点で集中的に静的解析を実行することができるので、プロジェクトごとにソースコード静的解析支援システムを構築する必要がなくなる。すなわち、複数のプロジェクトで共通して1つのソースコード静的解析支援システムを運用するので、プロジェクトの数が多くなればなるほど、プロジェクト当たりのソースコード静的解析支援システムの維持コストを低減することができるという効果も有する。さらにまた、この発明によるソースコード静的解析支援システムでは、静的解析を行うための人員を必要とすることがなく、プロジェクトの一員が顧客としてソースコード静的解析支援システムを使用するので、ソースコードの内容が静的解析を行う解析担当者の目に触れることもない。さらにまた、複数のプロジェクトが同時に静的解析を行うことは稀であり、システム利用の繁閑の差がなく、無駄のないソースコード静的解析支援システムの運用を行うことができるという効果を有する。
【0052】
さらにまた、解析結果が解析情報データベース14に保管されるため、大量の解析結果データと自らのソースコードの解析結果を比較することで、より正確で定量的なソースコードの品質を測定することが可能となる。そして、時系列的な解析結果の分析によって、ソースコードの品質の維持管理に役立てることができる。
【0053】
実施の形態2.
上述した実施の形態1では、顧客の端末装置20と静的解析装置10との間の情報のやり取りを、HTTPなどを利用してWebブラウザで行う場合を示したが、この実施の形態2では、顧客の端末装置20と静的解析装置10との間の情報のやり取りを、さらに電子メールによっても行うことができる場合について説明する。なお、図1には示されていないが、端末装置20と静的解析装置10との間で電子メールの送受信を行うために、DNSサーバやメールサーバがネットワーク上に存在している。
【0054】
この実施の形態2のソースコード静的解析支援システムおよび静的解析装置の構成は、図1に示した構成と同じである。ただし、実施の形態1の図1の静的解析装置10において、通信部11は、ソースコード静的解析の実施に必要な情報やソースコード静的解析の結果を、電子メールを用いても端末装置20との間で送受信することができる機能を有し、通信情報データベース12には、ソースコード静的解析を依頼した端末装置20のメールアドレスが、ソースコードに関する解析対象情報に関連付けして格納されるようにしている。
【0055】
つぎに、この実施の形態2のソースコード静的解析支援システムの動作処理手順について、図7と図8を参照しながら説明する。ただし、静的解析装置10における静的解析の処理手順は、実施の形態1の図5に示されるフローチャートと同じであるので、その説明は省略する。
【0056】
図7は、顧客が静的解析装置にソースコードの静的解析を行う際の電子メールによる受付の処理手順を示すフローチャートである。なお、以下の説明では、顧客は、実施の形態1で説明したように、静的解析装置10にアクセスして、その解析情報データベース14内の解析対象情報を閲覧しながら、電子メールでの静的解析の依頼書を作成しているものとする。
【0057】
まず、解析対象となるソースコードのソースコード静的解析が初めてである場合(ステップS401でYesの場合)には、顧客は、静的解析装置10にアクセスして、過去に解析実績のある開発環境情報(開発環境コンパイラ)の一覧画面を表示部に表示させながら、この中に解析対象となるソースコードと同一の開発環境コンパイラとなるものが存在するか否かを判断する(ステップS402)。解析対象となるソースコードと同一の開発環境コンパイラとなるものが存在する場合(ステップS402でYesの場合)には、その開発環境コンパイラを識別する識別番号などを電子メールの本文に記述(入力)する(ステップS403)。このとき、静的解析装置10側での処理を効率化するために、記述した内容が一覧画面の中から開発環境コンパイラを選択したものであることを示す所定のキーワード、たとえば「開発環境コンパイラ(解析実績あり):」などに続けて、上記識別番号などを記述する。このように電子メール本文への記述方法を規定することによって、静的解析装置10の通信部11は、キーワードに続く文字列が、開発環境コンパイラに関する設定内容であることを認識することが可能となる。
【0058】
一方、解析対象となるソースコードと同一の開発環境コンパイラとなるものが一覧画面に存在しない場合(ステップS402でNoの場合)には、解析対象となるソースコードの静的解析に必要な開発環境コンパイラの独自設定を電子メール本文に記述する(ステップS404)。このとき、静的解析装置10側での処理を効率化するために、記述した内容が開発環境コンパイラの独自設定であることを示す所定のキーワード、たとえば「開発環境コンパイラ(解析実績なし):」に続けて、その内容を記述する。つぎに、開発環境コンパイラが持っている独自のシステムインクルードファイルを電子メールに添付する(ステップS405)。このとき、電子メールに添付されるシステムインクルードファイル群は圧縮されていてもよい。
【0059】
一方、最初の段階で解析対象のソースコードの静的解析が初めてでない場合(ステップS401でNoの場合)には、実施の形態1の図3のステップS113で示されるように、解析対象のソースコードに対して受付番号、ユーザID、プロジェクトナンバを含む登録情報が既に発行されているので、これらの受付番号、ユーザID、プロジェクトナンバなどの解析対象であるソースコードと顧客を識別するための情報を電子メールの本文に記述する(ステップS406)。このとき、静的解析装置10側での処理を効率化するために、記述した内容がソースコードと顧客を識別するための情報であることを示す所定のキーワードに続けて、上記ソースコードと顧客を識別するための情報を記述する。たとえば、「ユーザID:」というキーワードの後にユーザIDを記述し、「プロジェクトナンバ:」というキーワードの後にプロジェクトナンバを記述する。
【0060】
ステップS403での過去の解析実績から同一の開発環境コンパイラを選択するための識別情報などを電子メール本文に記述後に、ステップS405での独自のシステムインクルードファイルを電子メールに添付した後に、または、ステップS406で電子メール本文にソースコードと顧客を識別するための情報を記述した後に、makefileなどのコンパイル時手続情報が格納されたファイルを電子メールに添付する(ステップS407)。なお、コンパイル時手続情報を電子メール本文に記述することが可能な場合には、本文に記述してもよい。なお、この場合には、静的解析装置10側での処理を効率化するために、記述した内容がコンパイル時手続情報であることを示す所定のキーワード、たとえば「コンパイル時手続情報:」に続けて、コンパイル時手続情報を記述する。
【0061】
つぎに、この発明にかかるソースコード静的解析支援システムを運用する際に定められる所定の書式にしたがって、電子メールの表題部および本文にソースコードの解析時における設定を記述する(ステップS408)。本文に記述する設定は、顧客が付加的に設定可能なもの、たとえば、開発環境コンパイラの種類によって特別に指定しなければならないものなどである。なお、表題部に記述する場合には、ソースコードの静的解析の依頼であることがわかるように、所定のキーワード、たとえば「ソースコード解析依頼書」などを記述する。また、本文に記述する場合には、静的解析装置10側での処理を効率化するために、記述した内容がソースコードの解析時における設定であることを示す所定のキーワード、たとえば「付加設定:」に続けて、ソースコードの解析時における設定を記述する。
【0062】
つぎに、電子メールに解析対象であるソースコードを添付する(ステップS409)。そして、電子メール本文に記述された内容や添付されたファイルの確認が行われた後に、静的解析装置10に設定されたIPアドレスを宛先として、電子メールが送信され(ステップS410)、処理が終了する。
【0063】
なお、静的解析装置10の通信部11では、上述した書式の電子メールを受信すると、本文中に記述されている内容については、所定のキーワードを基に判断を行い、開発環境情報(開発環境コンパイラ)、コンパイル時手続情報、ユーザID、プロジェクトIDなどの情報を抽出する。
【0064】
図8は、ソースコードの静的解析結果を電子メールで顧客に送信する処理手順を示すフローチャートである。まず、静的解析装置10のソフトウェア静的解析部13によって静的解析の結果が出力されると、通信部11は、警告が埋め込まれた解析結果ソースコード、表計算アプリケーション用集計ファイル、解析結果成績書、およびソースコード修正提案の各ファイルを電子メールに添付する(ステップS501)。
【0065】
つぎに、静的解析装置10の構成/変更管理部15は、過去の解析データが解析情報データベース14に存在するか否かを判断する(ステップS502)。過去の解析データがある場合(ステップS502でYesの場合)には、通信部11は、解析履歴生成部16によって生成され、解析情報データベース14に格納されている解析結果履歴成績書も電子メールに添付する(ステップS503)。その後、またはステップS502で過去の解析データがない場合(ステップS502でNoの場合)には、静的解析装置10の通信部11は生成した電子メールを、解析対象情報に関連付けして格納されたメールアドレスを宛先に設定して、ソースコードの静的解析を依頼した顧客の端末装置20へと送信し(ステップS504)、処理が終了する。
【0066】
なお、端末装置20は、Webページによって解析対象情報を静的解析装置10へ送信し、静的解析装置10から電子メールで解析結果を受け取ったり、逆に電子メールで解析対象情報を静的解析装置10へ送信し、静的解析装置10からWebページで解析結果を受け取ったりすることも可能である。
【0067】
この実施の形態2によれば、電子メールを使用して、解析対象のソースコードの静的解析を行う際に必要な情報を端末装置20から静的解析装置10へ送信し、また、静的解析が行われた結果を静的装置から端末装置20へ送信することが可能なように構成したので、上述した実施の形態1の効果に加えて、依頼したソースコードの静的解析結果が静的解析装置10による静的解析の終了後に届けられ、顧客の側から静的解析装置10へとアクセスする必要がないという効果を有する。
【0068】
【発明の効果】
以上説明したように、この発明によれば、ソースコード静的解析を実行するための情報を電子的に受付および提示することによって、1拠点にて集中的に静的解析実行環境を構築するように構成したので、ソースコード静的解析支援システムには静的解析に必要な情報やノウハウが集積され、このノウハウを利用することで、解析の実行に際して詳細な設定やノウハウを必要としないでソースコード静的解析を実行し設定ミスやノウハウの不足を原因とした解析結果の警告を大量に発生させる問題や、解析自体が失敗するといった問題を回避することができ、ソフトウェアの品質の向上に役立てることができる。
【図面の簡単な説明】
【図1】この発明によるソースコード静的解析支援システムの構成を模式的に示すブロック図である。
【図2】この発明によるソースコード静的解析支援システムを用いてソースコードの静的解析を初回に行う場合の処理の流れを模式的に示す図である。
【図3】この発明によるソースコード静的解析支援システムを用いてソースコードの静的解析を2回目以降に行う場合の処理の流れを模式的に示す図である。
【図4】この発明にかかるソースコード静的解析支援システムの解析対象情報を受け付ける処理手順の実施の形態1を示すフローチャートである。
【図5】この発明にかかる静的解析装置における静的解析の処理手順を示すフローチャートである。
【図6】この発明にかかるソースコード静的解析支援システムの解析結果を顧客に表示する処理手順の実施の形態1を示すフローチャートである。
【図7】この発明にかかるソースコード静的解析支援システムの解析対象情報を受け付ける処理手順の実施の形態2を示すフローチャートである。
【図8】この発明にかかるソースコード静的解析支援システムの解析結果を顧客に送信する処理手順の実施の形態2を示すフローチャートである。
【符号の説明】
10 静的解析装置、11 通信部、12 通信情報データベース、13 ソフトウェア静的解析部、14 解析情報データベース、15 構成/変更管理部、16 解析履歴生成部、20 端末装置、30 ネットワーク。
【発明の属する技術分野】
この発明は、ソフトウェアのソースコードの静的解析作業を支援して、その解析手順を効率化するソースコード静的解析支援システムおよび静的解析装置に関するものである。
【0002】
【従来の技術】
ソフトウェア開発において、コーディング時のソースコードの記述誤りによって、ソフトウェアが正常に動作しないという不具合は数多く発生する。このソースコードの記述誤りはソースコードをレビューすることで削減することが可能であるが、ソースコードの規模が大きくまた複雑になるにつれてソースコードの完全なレビューは困難となる。このソースコードのレビューの1つの方法であるソースコード静的解析は、ソースコードを実際に実行せずに構文的あるいは意味的に解析し、記述誤りの可能性の高い部分について警告を出力するもので、記述誤りの発見を支援するものである。
【0003】
このようなソースコードの記述誤りをソフトウェアの試験前に検出し、ソースコード開発者が修正できるような情報を提供するために、ソースコードを実際に実行せずに構文的または意味的に解析し、記述誤りの可能性の高いソースコードの記述に対して警告を出力する静的解析システムが英国Programming Research社製のQAC(商品名)、QAC++(商品名)や、富士通ミドルウェア社製のEYDS(登録商標)等として開発され、販売されている。
【0004】
また、ソースコードのレビューに加えて、プログラムの開発が終了した後に、ソースコードの改良や保守の作業を行う場合に、その作業効率を向上させ、誤修正を防止するためのプログラム保守支援装置が提案されている(たとえば、特許文献1参照)。この特許文献1に記載のプログラム保守支援装置は、インクルードファイル内の複数のデータ名とこのデータと参照・更新関係にあるプログラムのソースコードファイル名とを記憶する参照・更新関係記憶部と、コンパイル・リンク作業の指定を記憶するコンパイル・リンク作業部と、インクルードファイルから参照・更新関係を有するデータ名を検出して参照・更新関係記憶部に記憶した後、コンパイル・リンク作業部に記憶されている作業指定を基に、プログラムのソースコードファイルからデータ名を検出して、参照・更新関係記憶部に記憶されているデータ名に対応させてプログラムのソースコードファイル名を参照・更新関係記憶部に記憶する処理を行う参照・更新関係検出/処理部と、その処理結果を表示する表示部とを有している。これによって、プログラムとインクルードファイルのクロスリファレンスが作成され、プログラムとインクルードファイル内のデータとの対応関係をプログラムの保守を行う者に対して表示するようにしている。
【0005】
【特許文献1】
特開平5−158667号公報(第3頁)
【0006】
【発明が解決しようとする課題】
しかしながら、上述した従来の静的解析システムには、つぎのような種々の問題点があった。まず、第1の問題点として、静的解析システムは、言語標準規格に対して解析対象ソースコードがどのように乖離しているかを解析するために、ソースコードの解析にはソースコードごとの詳細な特性情報が必要であり、その内容を静的解析システムに反映するためには静的解析システムに関する熟練が必要であった。このような問題点に対し、たとえば、富士通ミドルウェア社製のEYDS(登録商標)等では、ソースコードの開発環境ごとの大まかな特性情報をセットとして提供し、顧客に対してそれらの中からソースコードの開発環境に最も近い設定を選択させることで、特定の開発環境の基礎的な設定内容に関しては容易に設定を行うことが可能な機能を備えている。しかし、全てのソースコード毎の設定は準備されておらず、あらかじめ準備されていない開発環境においては、煩雑な設定を行う必要があり、そのために静的解析システムに習熟する必要があった。
【0007】
つぎに、第2の問題点は、上記第1の問題点から、静的解析システムに習熟していない顧客が解析を行うと、本当に不具合となる可能性のあるソースコードの記述に対する警告が、ソフトウェアの実行上は問題のないソースコードの記述、またはソフトウェアの実行上、警告対象となるが故意にそのような記述をしているソースコードの記述に対して出力された警告に埋没してしまい、それらの区別が困難となるというものである。すなわち、本当に不具合となる可能性のある警告を見つけ出すために、静的解析システムに習熟していない顧客は出力された結果の解析に時間を費やさなければならなかった。
【0008】
つぎに、第3の問題点は、ソースコード静的解析は、コーディング終了からテスト開始段階までのソフトウェア開発の特定の期間で利用されることが多く、各開発者の静的解析システムの利用時期が集中する反面、利用されない期間も長いことに起因するものである。すなわち、ソースコード静的解析システムをソフトウェア開発プロジェクトごとに設置する場合には、利用が集中するピークに合わせて静的解析システムを構築する必要があるために、システムとしては十分な構成となるが、その分利用されない期間にシステムを維持するコストが無駄になってしまうという問題点があった。
【0009】
そして、第4の問題点は、上記第3の問題点に対処するために、ソースコード静的解析を専門に行う組織にソースコードの解析を依頼する場合に起因するものである。基本的にソースコードは機密性の高い情報であり、ソースコードの種類によっては、ソースコード静的解析の担当者の目に触れさせることはできる限り避ける必要がある。しかし、ソースコードの解析をその専門組織に依頼する場合には、機密性の高いソースコードが、ソースコード静的解析の担当者の目に触れてしまう危険性が高くなってしまう。そこで、たとえばソースコード静的解析を自己の組織の外部の専門組織に依頼するのではなく、ソースコード静的解析を専門に行う部門を自己の組織の内部に設置して、ソースコード静的解析を行う作業担当者を常設する方法が考えられる。しかし、この場合にも、上記第3の問題点と同じく、その部門の維持にコストがかかってしまうという問題点があった。
【0010】
また、特許文献1に記載のプログラム保守支援装置においても、プログラムの保守時におけるインクルードファイルとソースコードファイルとの間の定義などの参照関係を明示して、保守を行って作業効率を改善するものではあるが、上記した第1〜第4の問題点を解決するものではない。
【0011】
これらのように、従来の静的解析システムでは実際の静的解析を実行するまでの準備に静的解析の知識を必要とする上に、解析対象ソースコードの特性を静的解析システムに反映するために静的解析システムに熟練する必要があり、静的解析システムに対して適切な設定を行わないと、解析の結果として本来意図していない膨大な警告を発生し確認に時間がかかるといった問題点があった。
【0012】
また、静的解析システムはソフトウェア開発において特定のフェーズに集中的に利用されるため、各プロジェクトで静的解析システムを設置すると、利用されない期間にシステムを維持するコストが無駄となり、集中して静的解析を行う部門を設置する場合でも、作業担当者の維持コストがかかるという問題点もあった。さらに、ソースコード静的解析を専門組織に依頼する場合には、ソースコードの機密性を考慮すると、ソースコードの内容が解析担当者の目に触れることは好ましくないという問題点もあった。
【0013】
この発明は、上記に鑑みてなされたもので、顧客が静的解析の知識を多く必要とせずに静的解析を実行することを可能とし、プロジェクトごとの静的解析システムの維持コストの削減、および静的解析実施部門の無駄の無い静的解析システムの運用を可能とするソースコード静的解析支援システムおよび静的解析装置を得ることを目的とする。
【0014】
【課題を解決するための手段】
上記目的を達成するため、この発明にかかるソースコード静的解析支援システムは、ソースコードの静的解析を依頼する端末装置と、前記ソースコードの静的解析の実施に必要な解析対象情報を前記端末装置から受信し、前記ソースコードの静的解析の結果である解析結果を前記端末装置へ送信する通信手段と、前記端末装置から受信した前記解析対象情報を用いて前記ソースコードの静的解析を行い、解析結果を出力するソフトウェア静的解析手段と、を有する静的解析装置と、が、通信回線を介して接続されていることを特徴とする。
【0015】
【発明の実施の形態】
以下に添付図面を参照して、この発明にかかるソースコード静的解析支援システムおよび静的解析装置の好適な実施の形態を詳細に説明する。
【0016】
実施の形態1.
図1は、この発明にかかるソースコード静的解析支援システムおよび静的解析装置の実施の形態1の概略構成を示すブロック図である。ソースコード静的解析支援システムは、プログラムのソースコードを作成し、その静的解析の依頼をする端末装置20と、該端末装置20によって作成されたソースコードの静的解析を実行する静的解析装置10とが、LAN(Local Area Network)やインターネットなどのネットワーク30を介して接続された構成となっている。
【0017】
端末装置20は、図示していないが、CRT(Cathode Ray Tube)やLCD(Liquid Crystal Display)などの表示部、キーボードやポインティングデバイスなどの入力部、種々の処理を実行するCPU(Central Processing Unit)などの演算処理部、ソースコードなどを格納する記憶部、通信回線を介して他の端末装置20や静的解析装置10との間で通信を行う通信部を有しており、ソースコードを作成し、静的解析装置10との間で通信を行うことが可能なパーソナルコンピュータなどの情報処理端末である。
【0018】
静的解析装置10は、端末装置20との間で通信を行う通信部11、静的解析で必要な情報を端末装置20にHTML(Hyper Text Markup Language)形式などの形式で表示するための通信情報データベース12、端末装置20からのソースコードの静的解析を行うソフトウェア静的解析部13、静的解析を行ったソースコードに関する情報などを格納する解析情報データベース14、解析情報データベース14の構成を変更する構成/変更管理部15、解析情報データベース14に格納されている過去の情報と新しく格納される情報とを比較して解析する解析履歴生成部16を有する。
【0019】
通信部11は、静的解析装置10と通信回線を介して接続された端末装置20との間でデータの送受信を行う役割を有する。具体的には、ソースコード静的解析を行う際に必要な情報を端末装置20に提示したり、端末装置20からソースコード静的解析の対象となる情報やソースコードを受信したり、受信したソースコードの静的解析の解析結果を端末装置20に送信したりする。
【0020】
通信情報データベース12は、ソースコード静的解析を行う際に端末装置20との間でやりとりされる情報を電子データの形式で格納する。この実施の形態1では、端末装置20に表示されたWebブラウザでソースコード静的解析に必要な解析対象情報を入力、閲覧および送信させるための表示画面がHTML形式などのファイル形式で格納されている場合を例に挙げている。そのため、この実施の形態1では、これらの通信部11と通信情報データベース12とを合わせて、Webサーバの役割を担っている。
【0021】
ここで、解析対象情報は、開発環境コンパイラの独自設定の登録などの解析対象であるソースコードの開発環境についての開発環境情報、解析対象ソースコードが利用しているシステムインクルードファイル、makefileやprojectファイルなどの解析対象ソースコードのコンパイル時の手続が格納されたコンパイル時手続情報、解析対象ソースコードである顧客の開発ソースコード、そして顧客を識別するために顧客に対して一意に割り振られるユーザIDや、解析対象であるソースコードを識別するために割り振られるプロジェクトナンバなどの解析対象のソースコードを管理するために初回解析時に登録する登録情報を含むものである。
【0022】
以上において、ソースコードで使用される関数や型、マクロ定義などを格納するインクルードファイルは、この発明では開発ソースコードに含まれている。また、開発環境コンパイラとは、開発環境に応じて種々のコンパイラが存在するので、開発環境に応じて選択されたコンパイラを意味するものである。さらに、開発環境情報(開発環境コンパイラ)については、想定される開発環境を予め通信情報データベース12に登録しておき、顧客がその通信情報データベース12に格納された開発環境の中から選択することができるようにしてもよい。さらにまた、登録情報には、2回目以降の静的解析時に入力するために、顧客であることを確認するためのパスワードなどのセキュリティ情報を含むものであってもよい。これらの解析対象情報を解析対象ごとに顧客が端末装置20から入力または添付できるように、たとえばHTML形式のファイルが通信情報データベース12に格納されている。
【0023】
ソフトウェア静的解析部13は、上記端末装置20から受信した解析対象情報を入力として、ソースコードの静的解析を行い、ソフトウェア静的解析の解析結果である警告が埋め込まれたソースコード、表計算アプリケーションで利用可能な形式の解析結果の集計ファイル、ソースコード解析結果を評価した解析結果成績書、およびソースコードの問題のある部分に関する修正提案を出力する。ソフトウェア静的解析部13は、このような静的解析を行うものであれば、市販されているものであっても、独自に開発したものであってもよい。
【0024】
構成/変更管理部15は、端末装置20から受信した開発環境情報とシステムインクルードファイル、およびソフトウェア静的解析部13で出力された解析結果を、解析情報データベース14に登録して管理する機能を有する。なお、ソースコードの初回解析時においては、ソフトウェア静的解析部13で出力された解析結果がそのまま解析情報データベース14に格納されるが、ソースコードの2回目以降の解析時においては、出力された解析結果は解析情報データベース14に、過去の解析結果が残るように累積的に保存されることが望ましいが、前回の解析時の解析結果に上書きして格納されるようにしてもよい。
【0025】
解析履歴生成部16は、2回目以降のソースコード静的解析時に、そのときのソフトウェア静的解析部13で出力された解析結果と、解析情報データベース14に登録されている前回行われたソフトウェア静的解析部13で出力された解析結果とを比較分析して、解析履歴成績書を作成する。この解析履歴成績書は、たとえばある指標についての今回の解析結果と前回の解析結果との差分を計算し、その差分を解析結果の改善の良否として、グラフなどの形で視覚的に表現したものである。たとえば、数値が小さければ小さいほど解析結果の評価が高いある指標について、前回の解析結果を基準として算出された計算値が負の値で示され、その絶対値が大きければ、ソースコードの構造が改善されていることになる。
【0026】
解析情報データベース14は、通信部11で端末装置20から受信した解析対象情報のうち開発環境情報とシステムインクルードファイルのほか、ソフトウェア静的解析部13で出力された結果と、解析履歴生成部16で生成された解析履歴成績書を、ソースコードに対して付された登録情報と関連付けして格納する。開発環境情報とシステムインクルードファイルは、あるソフトウェアの開発において1対1に対応するものであるので、その内容が変更されることはないと考えられるので、ソースコードの初回解析時において解析情報データベース14に登録される。このようにすることで、同じソフトウェアの2回目以降のソースコード静的解析時において、端末装置20から静的解析装置10に送信する情報量を抑制することが可能となる。
【0027】
なお、図1には示されていないが、端末装置20と静的解析装置10との間で通信を行うために、DNS(Domain Name System)サーバなどがネットワーク上に配置されている。
【0028】
つぎに、このソースコード静的解析支援システムの動作処理手順について、図2〜図6を参照しながら説明する。図2は、この発明にかかるソースコード静的解析支援システムを用いてソースコードの静的解析を初回に行う場合の処理の流れを模式的に示す図であり、図3は、ソースコードの静的解析を2回目以降に行う場合の処理の流れを模式的に示す図である。なお、以下では、ソースコードの静的解析を依頼する端末装置20から静的解析装置10に対する表示画面の指示や、静的解析装置10から端末装置20への指示された表示画面データの送信は、たとえば、HTTP(Hyper Text Transfer Protocol)によって行われるものとする。このようなプロトコルを用いたネットワークにおけるデータの送受信は、公知の技術であるので、その詳細な説明は省略する。
【0029】
図4は、静的解析の対象となるソースコードを含む解析対象情報を静的解析装置が受け付ける処理手順を示すフローチャートである。まず、ソースコードの静的解析を実行しようと考えている顧客によって、顧客の端末装置20から静的解析装置10にアクセスされると、静的解析装置10は、HTTPによって端末装置20に、通信情報データベース12に格納されている静的解析を実行するためのHTML形式の初期画面データを送信する。この初期画面データには、対象となるソースコードについて静的解析が初めてか否かを選択する項目が付されており、顧客の端末装置20には、ソースコード解析が初めてか否かを選択する画面が表示される(ステップS101)。
【0030】
端末装置20に選択画面が表示されると、顧客によって、このシステムでの解析対象となるソースコードの静的解析の実施が初めてか否かが判断される(ステップS102)。解析対象となるソースコードの静的解析の実施が初めてである場合(ステップS102でYesの場合)には、その旨が静的解析装置10へと送信され、静的解析装置10の通信部11は、解析情報データベース14に格納されている過去に解析実績のある開発環境情報(開発環境コンパイラ)の一覧画面を顧客の端末装置20に送信して表示させる(ステップS103)。
【0031】
開発環境コンパイラの一覧画面が端末装置20に表示されると、その中から解析対象となるソースコードの開発環境コンパイラと同種の開発環境コンパイラがあるか否かが顧客によって判断される(ステップS104)。解析対象となるソースコードの開発環境コンパイラと同種の開発環境コンパイラが存在する場合(ステップS104でYesの場合)には、顧客によって同種の開発環境コンパイラが一覧画面から選択され、その情報が静的解析装置10へと送信される。静的解析装置10の通信部11は、顧客によって選択された開発環境コンパイラの内容を、顧客の端末装置20に表示させる(ステップS105)。そして、この表示された開発環境コンパイラが、解析対象ソースコードの開発環境コンパイラとして、顧客の端末装置20の表示画面上で設定される。
【0032】
一方、ステップS104で、解析対象となるソースコードの開発環境コンパイラと同種の開発環境コンパイラが存在しない場合(ステップS104でNoの場合)には、その旨が静的解析装置10へと送信される。その後、静的解析装置10の通信部11は、通信情報データベース12に格納されているソースコードの静的解析に必要な開発環境コンパイラの独自設定の登録画面を送信して、顧客の端末装置20に表示させる(ステップS106)。顧客は、端末装置20の入力部から静的解析で必要な開発環境コンパイラの情報を入力する。この開発環境コンパイラの独自設定の登録画面では、暗黙のマクロ定義や言語拡張記述の置き換えなどの方法を記述するが、平易な表現を用いて顧客の入力を容易にする画面設計とされていることが望ましい。
【0033】
この開発環境コンパイラの独自設定の登録画面に必要事項が入力された後、静的解析装置10の通信部11は、解析情報データベース14に格納されているシステムインクルードファイルの指定画面を端末装置20に表示させる(ステップS107)。ここで、システムインクルードファイルは、ステップS106で設定した開発環境コンパイラが独自に有するものである。このシステムインクルードファイルの指定画面は、システムのファイル構造をツリー状に可視的に表示できるものであり、その表示の中から、一連のシステムインクルードファイル群が格納されているディレクトリを指定するようにすると、入力が容易になり望ましい。
【0034】
静的解析装置10は、顧客の端末装置20にステップS105での開発環境選択画面を表示させた後、またはステップS107でシステムインクルードファイルの指定画面を表示させた後、makefileなどのコンパイル時手続情報を入力もしくは選択する画面、またはコンパイル時手続情報が記載されたファイルを指定する設定画面を、端末装置20に表示させる(ステップS109)。顧客は、この画面でコンパイル時の手続に関する情報の設定を行う。なお、コンパイル時手続情報が記載されたファイルを指定する場合に、ファイルが格納されているディレクトリをツリー状に可視的に表示させて、そのツリー状の中のディレクトリ中から所望のファイルを選択させるようにしてもよい。
【0035】
つぎに、静的解析装置10の通信部11は、通信情報データベース12の中から、顧客が静的解析時に付加的な設定を行うことが可能な画面を、端末装置20に送信して表示させる(ステップS110)。ここで、静的解析時の付加的な設定とは、開発環境コンパイラの種類によって、そのコンパイラに特別に指定しなければならないパラメータに対して行う設定のことをいう。
【0036】
つぎに、静的解析装置10の通信部11は、顧客が解析を依頼するソースコードを指定する指定画面を通信情報データベース12の中から端末装置20に対して送信して表示させる(ステップS111)。そして、顧客は、この指定画面で解析対象のソースコードを指定する。
【0037】
上述した各ステップの画面における入力が端末装置20側で完了すると、静的解析装置10の通信部11は、入力された情報の正誤の確認を行うための送信画面を端末装置20に表示させる(ステップS112)。顧客によって、この送信画面での入力内容の確認が行われた後に、解析対象情報の送信指示が出されると、これらの解析対象情報が静的解析装置10へと送信される。
【0038】
静的解析装置10の通信部11は、顧客の端末装置20から正常に解析対象情報を受信したことを確認すると、この受信した解析対象情報に対して、ソースコード静的解析の依頼を受け付けたことを示す受付番号、ユーザID、プロジェクトナンバなどのソースコードを管理するための登録情報を付与する。そして、解析対象に付与された登録情報を含む解析対象情報が静的管理装置の解析情報データベース14などによって保管されたことを示す内容の画面を、端末装置20に送信して表示させ(ステップS113)、解析対象情報の登録処理が終了する。
【0039】
一方、ステップS102において、解析対象のソースコードの静的解析の実施が初めてではなく、以前に静的解析実施の実績がある場合(ステップS102でNoの場合)には、その旨が静的解析装置10へと送信され、静的解析装置10の通信部11は、通信情報データベース12に格納されている登録情報入力画面を顧客の端末装置20に送信して表示させる(ステップS108)。登録情報入力画面は、対象となるソースコードの静的解析の初回依頼時に静的解析装置10から上述したステップS113で発行された受付番号やユーザID、プロジェクトナンバなどの登録情報を、顧客に対して入力させるように構成されている。顧客は、この登録情報入力画面の所定の場所に、ユーザIDやプロジェクトナンバなどソースコードを識別するための情報を入力する。その後、上述したステップS109〜S113の処理によって、解析対象情報の登録処理が実行される。
【0040】
図5は、静的解析装置における静的解析の処理手順を示すフローチャートである。まず、静的解析装置10の通信部11によって顧客の端末装置20から受信したコンパイル時手続情報とソースコードを保存する(ステップS201)。
【0041】
つぎに、通信部11は、解析を依頼する顧客の端末装置20から受信したソースコードは過去に解析実績のあるソースコードであるか否かを判断する(ステップS202)。過去に解析実績のあるソースコードであるか否かは、ソースコードに関する登録情報を参照することによって行う。過去に解析実績のあるソースコードである場合(ステップS202でYesの場合)には、構成/変更管理部15は、ソースコードの登録情報を参照して、該登録情報と関連付けされて格納されているシステムインクルードファイルを解析情報データベース14から取り出す(ステップS203)。一方、過去に解析実績のあるソースコードでない場合(ステップS202でNoの場合)には、構成/変更管理部15は、顧客の端末装置20から取得したシステムインクルードファイルを解析情報データベース14に登録する(ステップS204)。
【0042】
ステップS203で解析情報データベース14から登録済みシステムインクルードファイルを取り出した後に、または、ステップS204で顧客の端末装置20から取得したシステムインクルードファイルを解析情報データベース14に登録した後に、解析を依頼する顧客の端末装置20から受信したソースコードが、過去に同種の開発環境コンパイラでの解析実績があるか否かを判断する(ステップS205)。過去に同種の開発環境コンパイラでの解析実績があるソースコードである場合(ステップS205でYesの場合)には、構成/変更管理部15は、解析情報データベース14からそのソースコードの開発環境コンパイラと合致する登録済みの開発環境コンパイラの独自設定を取り出す(ステップS206)。一方、過去に同種の開発環境コンパイラでの解析実績が無いソースコードである場合(ステップS205でNoの場合)には、構成/変更管理部15は、顧客の端末装置20から取得した開発環境コンパイラの独自設定を解析情報データベース14に登録する(ステップS207)。
【0043】
ステップS206で解析情報データベース14から登録済みの開発環境コンパイラの独自設定を取り出した後に、または、ステップS207で顧客の端末装置20から取得した開発環境コンパイラの独自設定を解析情報データベース14に登録した後に、ソフトウェア静的解析部13は、開発環境コンパイラ、システムインクルードファイル、コンパイル時手続情報、およびソースコードを含む登録情報を用いて、ソースコードの静的解析を行う(ステップS208)。そして、このソフトウェア静的解析部13によって出力されたソースコードの解析結果、具体的には、警告が埋め込まれたソースコード、表計算アプリケーション用集計ファイル、解析結果成績書およびソースコード修正提案が、一時的に静的解析装置10内に記憶される。
【0044】
つぎに、構成/変更管理部15は、解析情報データベース14に過去の解析データが存在するか否かを判断する(ステップS209)。この過去の解析結果が存在するか否かの判断は、ユーザIDやプロジェクトナンバなどの登録情報を用いて行う。ここで、解析情報データベース14に過去の解析結果が存在する場合(ステップS209でYesの場合)には、解析履歴生成部16は、解析情報データベース14に格納されている過去の解析結果と、ソフトウェア静的解析部13によって出力された解析結果との比較分析を実施して、その結果である解析履歴成績書を生成する(ステップS210)。その後、構成/変更管理部15は、警告が埋め込まれたソースコード、表計算アプリケーション用集計ファイル、解析結果成績書、ソースコード修正提案および解析履歴成績書を解析情報データベース14に登録して(ステップS211)、処理が終了する。
【0045】
一方、ステップS209で、解析情報データベース14に過去の解析データが存在しない場合(ステップS209でNoの場合)には、ソフトウェア静的解析部13によって出力された警告が埋め込まれたソースコード、表計算アプリケーション用集計ファイル、解析結果成績書およびソースコード修正提案を含む解析結果を、解析情報データベース14に登録して(ステップS212)、処理が終了する。
【0046】
図6は、ソースコードの静的解析結果を顧客に表示する処理手順を示すフローチャートである。まず、ソースコードの静的解析結果を取得したい顧客の端末装置20から静的解析装置10にアクセスされると、静的解析装置10の通信部11は、通信情報データベース12に格納されている登録情報入力画面を顧客の端末装置20に送信する(ステップS301)。顧客は、この登録情報入力画面の所定の場所に、静的解析の結果を取得したいソースコードについての受付番号、ユーザID、プロジェクトナンバなどを含む登録情報を入力する。
【0047】
顧客によって入力された登録情報入力画面の内容が、顧客の端末装置20から静的解析装置10へ送信されると、静的解析装置10の通信部11は、登録情報入力画面に入力された内容と通信情報データベース12に格納されている登録情報の内容とを比較することによって、顧客が正しくソースコード静的解析を依頼した顧客であるか否かを判断する(ステップS302)。ここで、入力内容に誤りがある場合(ステップS302でNoの場合)には、静的解析装置10の通信部11は、エラー画面を通信情報データベースから顧客の端末装置20に送信して表示させ(ステップS303)、処理が終了する。
【0048】
一方、ステップS302で、静的解析装置10の通信部11によって、顧客が正しくソースコード静的解析を依頼した顧客であると判断された場合(ステップS302でYesの場合)には、静的解析装置10の通信部11は、ソフトウェア静的解析部13によって実施されたソースコードの解析結果成績書、表計算アプリケーション用集計ファイル、警告が埋め込まれたソースコード、ソースコード修正提案を含む解析結果が表示された表示画面、およびこれらのファイルをダウンロードするためのダウンロード画面を、顧客の端末装置20に送信して表示させる(ステップS304)。その後、構成/変更管理部15によって解析情報データベース14で管理されている過去の静的解析の解析結果に、現在顧客が依頼しているソースコードの解析結果についての以前の版(以下、過去の解析結果という)が存在するか否かを判断する(ステップS305)。この過去の解析結果が存在するか否かの判断は、ステップS301で入力された登録情報を用いて、解析情報データベース14内の解析結果を検索することによって行うことができる。
【0049】
ステップS305で、過去の解析データが存在しない場合(ステップS305でNoの場合)には、そのまま処理が終了する。一方、ステップS305で、過去の解析データが存在する場合(ステップS305でYesの場合)には、解析履歴生成部16によって生成され、解析情報データベース14に格納されている解析履歴成績書が、通信部11によって顧客の端末装置20へ送信され、表示される(ステップS306)。そして、処理が終了する。
【0050】
この実施の形態1によれば、ソースコードを作成する端末装置20とソースコード静的解析を実行する静的解析装置10とが、ネットワーク30で接続されるように構成し、静的解析装置10と端末装置20との間でソースコード静的解析を実行するための情報を電子的に、より具体的にはWebブラウザを用いて、受付および提示するように構成したので、複数のプロジェクトで作成されたソースコードを1拠点で集中的に静的解析を実行することができるという効果を有する。また、1拠点で集中的に静的解析を実行することができるので、静的解析装置10には静的解析に必要な情報やノウハウが集積され、この集積されたノウハウを使用することで、顧客が静的解析に関する多くの知識を必要とすることなく、ソースコードの静的解析を実行することができる。その結果、解析の実行に際して、詳細な設定やノウハウを必要としないでソースコード静的解析を実行しても、設定ミスやノウハウの不足を原因とした解析結果の警告を大量に発生させる問題や、解析自体が失敗するといった問題点を回避することができる。
【0051】
さらに、1拠点で集中的に静的解析を実行することができるので、プロジェクトごとにソースコード静的解析支援システムを構築する必要がなくなる。すなわち、複数のプロジェクトで共通して1つのソースコード静的解析支援システムを運用するので、プロジェクトの数が多くなればなるほど、プロジェクト当たりのソースコード静的解析支援システムの維持コストを低減することができるという効果も有する。さらにまた、この発明によるソースコード静的解析支援システムでは、静的解析を行うための人員を必要とすることがなく、プロジェクトの一員が顧客としてソースコード静的解析支援システムを使用するので、ソースコードの内容が静的解析を行う解析担当者の目に触れることもない。さらにまた、複数のプロジェクトが同時に静的解析を行うことは稀であり、システム利用の繁閑の差がなく、無駄のないソースコード静的解析支援システムの運用を行うことができるという効果を有する。
【0052】
さらにまた、解析結果が解析情報データベース14に保管されるため、大量の解析結果データと自らのソースコードの解析結果を比較することで、より正確で定量的なソースコードの品質を測定することが可能となる。そして、時系列的な解析結果の分析によって、ソースコードの品質の維持管理に役立てることができる。
【0053】
実施の形態2.
上述した実施の形態1では、顧客の端末装置20と静的解析装置10との間の情報のやり取りを、HTTPなどを利用してWebブラウザで行う場合を示したが、この実施の形態2では、顧客の端末装置20と静的解析装置10との間の情報のやり取りを、さらに電子メールによっても行うことができる場合について説明する。なお、図1には示されていないが、端末装置20と静的解析装置10との間で電子メールの送受信を行うために、DNSサーバやメールサーバがネットワーク上に存在している。
【0054】
この実施の形態2のソースコード静的解析支援システムおよび静的解析装置の構成は、図1に示した構成と同じである。ただし、実施の形態1の図1の静的解析装置10において、通信部11は、ソースコード静的解析の実施に必要な情報やソースコード静的解析の結果を、電子メールを用いても端末装置20との間で送受信することができる機能を有し、通信情報データベース12には、ソースコード静的解析を依頼した端末装置20のメールアドレスが、ソースコードに関する解析対象情報に関連付けして格納されるようにしている。
【0055】
つぎに、この実施の形態2のソースコード静的解析支援システムの動作処理手順について、図7と図8を参照しながら説明する。ただし、静的解析装置10における静的解析の処理手順は、実施の形態1の図5に示されるフローチャートと同じであるので、その説明は省略する。
【0056】
図7は、顧客が静的解析装置にソースコードの静的解析を行う際の電子メールによる受付の処理手順を示すフローチャートである。なお、以下の説明では、顧客は、実施の形態1で説明したように、静的解析装置10にアクセスして、その解析情報データベース14内の解析対象情報を閲覧しながら、電子メールでの静的解析の依頼書を作成しているものとする。
【0057】
まず、解析対象となるソースコードのソースコード静的解析が初めてである場合(ステップS401でYesの場合)には、顧客は、静的解析装置10にアクセスして、過去に解析実績のある開発環境情報(開発環境コンパイラ)の一覧画面を表示部に表示させながら、この中に解析対象となるソースコードと同一の開発環境コンパイラとなるものが存在するか否かを判断する(ステップS402)。解析対象となるソースコードと同一の開発環境コンパイラとなるものが存在する場合(ステップS402でYesの場合)には、その開発環境コンパイラを識別する識別番号などを電子メールの本文に記述(入力)する(ステップS403)。このとき、静的解析装置10側での処理を効率化するために、記述した内容が一覧画面の中から開発環境コンパイラを選択したものであることを示す所定のキーワード、たとえば「開発環境コンパイラ(解析実績あり):」などに続けて、上記識別番号などを記述する。このように電子メール本文への記述方法を規定することによって、静的解析装置10の通信部11は、キーワードに続く文字列が、開発環境コンパイラに関する設定内容であることを認識することが可能となる。
【0058】
一方、解析対象となるソースコードと同一の開発環境コンパイラとなるものが一覧画面に存在しない場合(ステップS402でNoの場合)には、解析対象となるソースコードの静的解析に必要な開発環境コンパイラの独自設定を電子メール本文に記述する(ステップS404)。このとき、静的解析装置10側での処理を効率化するために、記述した内容が開発環境コンパイラの独自設定であることを示す所定のキーワード、たとえば「開発環境コンパイラ(解析実績なし):」に続けて、その内容を記述する。つぎに、開発環境コンパイラが持っている独自のシステムインクルードファイルを電子メールに添付する(ステップS405)。このとき、電子メールに添付されるシステムインクルードファイル群は圧縮されていてもよい。
【0059】
一方、最初の段階で解析対象のソースコードの静的解析が初めてでない場合(ステップS401でNoの場合)には、実施の形態1の図3のステップS113で示されるように、解析対象のソースコードに対して受付番号、ユーザID、プロジェクトナンバを含む登録情報が既に発行されているので、これらの受付番号、ユーザID、プロジェクトナンバなどの解析対象であるソースコードと顧客を識別するための情報を電子メールの本文に記述する(ステップS406)。このとき、静的解析装置10側での処理を効率化するために、記述した内容がソースコードと顧客を識別するための情報であることを示す所定のキーワードに続けて、上記ソースコードと顧客を識別するための情報を記述する。たとえば、「ユーザID:」というキーワードの後にユーザIDを記述し、「プロジェクトナンバ:」というキーワードの後にプロジェクトナンバを記述する。
【0060】
ステップS403での過去の解析実績から同一の開発環境コンパイラを選択するための識別情報などを電子メール本文に記述後に、ステップS405での独自のシステムインクルードファイルを電子メールに添付した後に、または、ステップS406で電子メール本文にソースコードと顧客を識別するための情報を記述した後に、makefileなどのコンパイル時手続情報が格納されたファイルを電子メールに添付する(ステップS407)。なお、コンパイル時手続情報を電子メール本文に記述することが可能な場合には、本文に記述してもよい。なお、この場合には、静的解析装置10側での処理を効率化するために、記述した内容がコンパイル時手続情報であることを示す所定のキーワード、たとえば「コンパイル時手続情報:」に続けて、コンパイル時手続情報を記述する。
【0061】
つぎに、この発明にかかるソースコード静的解析支援システムを運用する際に定められる所定の書式にしたがって、電子メールの表題部および本文にソースコードの解析時における設定を記述する(ステップS408)。本文に記述する設定は、顧客が付加的に設定可能なもの、たとえば、開発環境コンパイラの種類によって特別に指定しなければならないものなどである。なお、表題部に記述する場合には、ソースコードの静的解析の依頼であることがわかるように、所定のキーワード、たとえば「ソースコード解析依頼書」などを記述する。また、本文に記述する場合には、静的解析装置10側での処理を効率化するために、記述した内容がソースコードの解析時における設定であることを示す所定のキーワード、たとえば「付加設定:」に続けて、ソースコードの解析時における設定を記述する。
【0062】
つぎに、電子メールに解析対象であるソースコードを添付する(ステップS409)。そして、電子メール本文に記述された内容や添付されたファイルの確認が行われた後に、静的解析装置10に設定されたIPアドレスを宛先として、電子メールが送信され(ステップS410)、処理が終了する。
【0063】
なお、静的解析装置10の通信部11では、上述した書式の電子メールを受信すると、本文中に記述されている内容については、所定のキーワードを基に判断を行い、開発環境情報(開発環境コンパイラ)、コンパイル時手続情報、ユーザID、プロジェクトIDなどの情報を抽出する。
【0064】
図8は、ソースコードの静的解析結果を電子メールで顧客に送信する処理手順を示すフローチャートである。まず、静的解析装置10のソフトウェア静的解析部13によって静的解析の結果が出力されると、通信部11は、警告が埋め込まれた解析結果ソースコード、表計算アプリケーション用集計ファイル、解析結果成績書、およびソースコード修正提案の各ファイルを電子メールに添付する(ステップS501)。
【0065】
つぎに、静的解析装置10の構成/変更管理部15は、過去の解析データが解析情報データベース14に存在するか否かを判断する(ステップS502)。過去の解析データがある場合(ステップS502でYesの場合)には、通信部11は、解析履歴生成部16によって生成され、解析情報データベース14に格納されている解析結果履歴成績書も電子メールに添付する(ステップS503)。その後、またはステップS502で過去の解析データがない場合(ステップS502でNoの場合)には、静的解析装置10の通信部11は生成した電子メールを、解析対象情報に関連付けして格納されたメールアドレスを宛先に設定して、ソースコードの静的解析を依頼した顧客の端末装置20へと送信し(ステップS504)、処理が終了する。
【0066】
なお、端末装置20は、Webページによって解析対象情報を静的解析装置10へ送信し、静的解析装置10から電子メールで解析結果を受け取ったり、逆に電子メールで解析対象情報を静的解析装置10へ送信し、静的解析装置10からWebページで解析結果を受け取ったりすることも可能である。
【0067】
この実施の形態2によれば、電子メールを使用して、解析対象のソースコードの静的解析を行う際に必要な情報を端末装置20から静的解析装置10へ送信し、また、静的解析が行われた結果を静的装置から端末装置20へ送信することが可能なように構成したので、上述した実施の形態1の効果に加えて、依頼したソースコードの静的解析結果が静的解析装置10による静的解析の終了後に届けられ、顧客の側から静的解析装置10へとアクセスする必要がないという効果を有する。
【0068】
【発明の効果】
以上説明したように、この発明によれば、ソースコード静的解析を実行するための情報を電子的に受付および提示することによって、1拠点にて集中的に静的解析実行環境を構築するように構成したので、ソースコード静的解析支援システムには静的解析に必要な情報やノウハウが集積され、このノウハウを利用することで、解析の実行に際して詳細な設定やノウハウを必要としないでソースコード静的解析を実行し設定ミスやノウハウの不足を原因とした解析結果の警告を大量に発生させる問題や、解析自体が失敗するといった問題を回避することができ、ソフトウェアの品質の向上に役立てることができる。
【図面の簡単な説明】
【図1】この発明によるソースコード静的解析支援システムの構成を模式的に示すブロック図である。
【図2】この発明によるソースコード静的解析支援システムを用いてソースコードの静的解析を初回に行う場合の処理の流れを模式的に示す図である。
【図3】この発明によるソースコード静的解析支援システムを用いてソースコードの静的解析を2回目以降に行う場合の処理の流れを模式的に示す図である。
【図4】この発明にかかるソースコード静的解析支援システムの解析対象情報を受け付ける処理手順の実施の形態1を示すフローチャートである。
【図5】この発明にかかる静的解析装置における静的解析の処理手順を示すフローチャートである。
【図6】この発明にかかるソースコード静的解析支援システムの解析結果を顧客に表示する処理手順の実施の形態1を示すフローチャートである。
【図7】この発明にかかるソースコード静的解析支援システムの解析対象情報を受け付ける処理手順の実施の形態2を示すフローチャートである。
【図8】この発明にかかるソースコード静的解析支援システムの解析結果を顧客に送信する処理手順の実施の形態2を示すフローチャートである。
【符号の説明】
10 静的解析装置、11 通信部、12 通信情報データベース、13 ソフトウェア静的解析部、14 解析情報データベース、15 構成/変更管理部、16 解析履歴生成部、20 端末装置、30 ネットワーク。
Claims (8)
- ソースコードの静的解析を依頼する端末装置と、
前記ソースコードの静的解析の実施に必要な解析対象情報を前記端末装置から受信し、前記ソースコードの静的解析の結果である解析結果を前記端末装置へ送信する通信手段と、
前記端末装置から受信した前記解析対象情報を用いて前記ソースコードの静的解析を行い、解析結果を出力するソフトウェア静的解析手段と、
を有する静的解析装置と、
が、通信回線を介して接続されていることを特徴とするソースコード静的解析支援システム。 - 前記通信手段は、
前記ソースコードの静的解析の実施が初回である場合には、前記解析対象情報として、ソースコード、該ソースコードの開発環境を記述した開発環境情報、該開発環境情報に対応して作成されるシステムインクルードファイル、および前記ソースコードのコンパイル時の手続が記述されるコンパイル時手続情報を前記端末装置から受信して前記開発環境情報と前記システムインクルードファイルを格納するとともに、受信した前記ソースコードを識別するための登録情報を付与して前記端末装置に送信し、
前記ソースコードの静的解析の実施が2回目以降である場合には、前記解析対象情報としてソースコードおよびコンパイル時手続情報と、前記登録情報とを前記端末装置から受信することを特徴とする請求項1に記載のソースコード静的解析支援システム。 - 前記通信手段は、前記ソースコードの静的解析の実施が初回である場合には、前記静的解析装置に格納されている開発環境情報の一覧を前記端末装置に送信して表示させる機能をさらに有することを特徴とする請求項1または2に記載のソースコード静的解析支援システム。
- 前記静的解析装置は、前記ソースコードの静的解析の実施が2回目以降である場合に、前記ソフトウェア静的解析部によって現在実施された解析結果と、前記静的解析装置に格納されている前回の解析結果とを比較した解析履歴情報を生成する解析履歴生成手段をさらに備えることを特徴とする請求項1〜3のいずれか1つに記載のソースコード静的解析支援システム。
- ソースコードの静的解析を依頼する端末装置と通信回線を通じて接続された静的解析装置であって、
前記ソースコードの静的解析の実施に必要な解析対象情報を前記端末装置から受信し、前記ソースコードの静的解析の結果である解析結果を前記端末装置へ送信する通信手段と、
前記端末装置から受信した前記解析対象情報を用いて前記ソースコードの静的解析を行い、解析結果を出力するソフトウェア静的解析手段と、
を備えることを特徴とする静的解析装置。 - 前記通信手段は、
前記ソースコードの静的解析の実施が初回である場合には、前記解析対象情報として、ソースコード、該ソースコードの開発環境を記述した開発環境情報、該開発環境情報に対応して作成されるシステムインクルードファイル、および前記ソースコードのコンパイル時の手続が記述されるコンパイル時手続情報を前記端末装置から受信して前記開発環境情報と前記システムインクルードファイルを格納するとともに、受信した前記ソースコードを識別するための登録情報を付与して前記端末装置に送信し、
前記ソースコードの静的解析の実施が2回目以降である場合には、前記解析対象情報としてソースコードおよびコンパイル時手続情報と、前記登録情報とを前記端末装置から受信することを特徴とする請求項5に記載の静的解析装置。 - 前記通信手段は、前記ソースコードの静的解析の実施が初回である場合には、前記静的解析装置に格納されている開発環境情報の一覧を前記端末装置に送信して表示させる機能をさらに有することを特徴とする請求項5または6に記載の静的解析装置。
- 前記ソースコードの静的解析の実施が2回目以降である場合に、前記ソフトウェア静的解析部によって現在実施された解析結果と、前記静的解析装置に格納されている前回の解析結果とを比較した解析履歴情報を生成する解析履歴生成手段をさらに備えることを特徴とする請求項5〜7のいずれか1つに記載の静的解析装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003025822A JP2004240477A (ja) | 2003-02-03 | 2003-02-03 | ソースコード静的解析支援システムおよび静的解析装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003025822A JP2004240477A (ja) | 2003-02-03 | 2003-02-03 | ソースコード静的解析支援システムおよび静的解析装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004240477A true JP2004240477A (ja) | 2004-08-26 |
Family
ID=32954006
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003025822A Pending JP2004240477A (ja) | 2003-02-03 | 2003-02-03 | ソースコード静的解析支援システムおよび静的解析装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004240477A (ja) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009086814A (ja) * | 2007-09-28 | 2009-04-23 | Hitachi Software Eng Co Ltd | ソースコード管理システム |
CN103019929A (zh) * | 2011-09-14 | 2013-04-03 | 富士胶片株式会社 | 计算机软件分析系统 |
JP2013125441A (ja) * | 2011-12-15 | 2013-06-24 | Toyota Infotechnology Center Co Ltd | ソフトウェア管理システム、ソフトウェア検証装置、ソフトウェア管理方法 |
JP2013134521A (ja) * | 2011-12-26 | 2013-07-08 | Mizuho Information & Research Institute Inc | 解析結果評価システム、解析結果評価方法及び解析結果評価プログラム |
WO2014185221A1 (ja) * | 2013-05-15 | 2014-11-20 | Ntn株式会社 | 軸受性能の自動計算サービス装置 |
JP2015197902A (ja) * | 2014-04-03 | 2015-11-09 | 日本電信電話株式会社 | オンラインビルドシステム、オンラインビルド方法およびオンラインビルドプログラム |
WO2020139281A1 (en) * | 2018-12-24 | 2020-07-02 | Turkcell Teknoloji Arastirma Ve Gelistirme Anonim Sirketi | A pre-compilation error detection system |
-
2003
- 2003-02-03 JP JP2003025822A patent/JP2004240477A/ja active Pending
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009086814A (ja) * | 2007-09-28 | 2009-04-23 | Hitachi Software Eng Co Ltd | ソースコード管理システム |
CN103019929A (zh) * | 2011-09-14 | 2013-04-03 | 富士胶片株式会社 | 计算机软件分析系统 |
JP2013061843A (ja) * | 2011-09-14 | 2013-04-04 | Fujifilm Corp | コンピュータ・ソフトウエア解析システムならびにクライアント・コンピュータ,その動作制御方法およびその動作プログラム |
JP2013125441A (ja) * | 2011-12-15 | 2013-06-24 | Toyota Infotechnology Center Co Ltd | ソフトウェア管理システム、ソフトウェア検証装置、ソフトウェア管理方法 |
JP2013134521A (ja) * | 2011-12-26 | 2013-07-08 | Mizuho Information & Research Institute Inc | 解析結果評価システム、解析結果評価方法及び解析結果評価プログラム |
WO2014185221A1 (ja) * | 2013-05-15 | 2014-11-20 | Ntn株式会社 | 軸受性能の自動計算サービス装置 |
JP2014225073A (ja) * | 2013-05-15 | 2014-12-04 | Ntn株式会社 | 軸受性能の自動計算サービス装置 |
US9906473B2 (en) | 2013-05-15 | 2018-02-27 | Ntn Corporation | Bearing performance automatic calculation service device |
JP2015197902A (ja) * | 2014-04-03 | 2015-11-09 | 日本電信電話株式会社 | オンラインビルドシステム、オンラインビルド方法およびオンラインビルドプログラム |
WO2020139281A1 (en) * | 2018-12-24 | 2020-07-02 | Turkcell Teknoloji Arastirma Ve Gelistirme Anonim Sirketi | A pre-compilation error detection system |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9582556B2 (en) | Automatic generation of an extract, transform, load (ETL) job | |
US8117500B2 (en) | Systems and methods for identifying a relationship between multiple interrelated applications in a mainframe environment | |
US8375362B1 (en) | Wizard for web service search adapter | |
US20110016451A1 (en) | Method and system for generating test cases for a software application | |
JP4880376B2 (ja) | 支援装置、プログラム、情報処理システム及び支援方法 | |
KR100500622B1 (ko) | 작업 관리 시스템 및 작업 관리 방법 | |
CN104679500A (zh) | 实体类自动生成实现方法及装置 | |
US20110224954A1 (en) | Modelling of systems | |
JP2004240477A (ja) | ソースコード静的解析支援システムおよび静的解析装置 | |
US20030163809A1 (en) | Automatic provisioning for subscription computing | |
CN111459460B (zh) | 一种业务数据处理方法及系统 | |
JP2007257315A (ja) | プログラムの設定変更に伴う影響判別装置及びその方法 | |
JP6866434B2 (ja) | シナリオ提供システム、シナリオ提供装置、シナリオ情報提供方法及びプログラム | |
JP2011134190A (ja) | 組織構造管理ディレクトリを備えたディレクトリシステム及びそのプログラム | |
CA2919339A1 (en) | Impact analysis of service modifications in a service oriented architecture | |
US20020138608A1 (en) | System and method for mapping a network | |
JP4738145B2 (ja) | エンジニアリングデータベースシステムおよびその取扱方法 | |
JP2012237564A (ja) | 分析機器制御・管理システム | |
JP2017219900A (ja) | 情報処理装置およびプログラム | |
JP3761911B2 (ja) | ファイルサーバおよびファイル管理方法 | |
JP4948427B2 (ja) | ヘルプデスクにおけるオペレータ業務支援システム、オペレータ業務支援方法及びプログラム | |
JP2006018721A (ja) | 帳票定義管理システム、帳票定義開発システム、及び、帳票定義管理方法 | |
US20240168872A1 (en) | Graphical user interface and log analysis tool for analyzing log data to identify errors associated with application execution | |
US20060015389A1 (en) | Method and apparatus for real time monitoring of business services | |
US20140122518A1 (en) | Codeless array validation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060213 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060221 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20060620 |