IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社 ミックウェアの特許一覧

<>
  • 特開-監視装置、監視方法及びプログラム 図1
  • 特開-監視装置、監視方法及びプログラム 図2
  • 特開-監視装置、監視方法及びプログラム 図3
  • 特開-監視装置、監視方法及びプログラム 図4
  • 特開-監視装置、監視方法及びプログラム 図5
  • 特開-監視装置、監視方法及びプログラム 図6
  • 特開-監視装置、監視方法及びプログラム 図7
  • 特開-監視装置、監視方法及びプログラム 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023105959
(43)【公開日】2023-08-01
(54)【発明の名称】監視装置、監視方法及びプログラム
(51)【国際特許分類】
   G06F 8/30 20180101AFI20230725BHJP
   G06F 11/34 20060101ALI20230725BHJP
   G06F 11/36 20060101ALI20230725BHJP
【FI】
G06F8/30
G06F11/34 176
G06F11/36 164
【審査請求】未請求
【請求項の数】4
【出願形態】OL
(21)【出願番号】P 2022007026
(22)【出願日】2022-01-20
(71)【出願人】
【識別番号】504050275
【氏名又は名称】株式会社 ミックウェア
(72)【発明者】
【氏名】多久和 智
【テーマコード(参考)】
5B042
5B376
【Fターム(参考)】
5B042MA08
5B042MA11
5B042MC23
5B042MC36
5B376BC17
5B376BC36
5B376BC38
5B376BC57
5B376BC69
5B376BC79
(57)【要約】      (修正有)
【課題】ビルドワーニングの検出状況を統合監視する監視装置、方法及びプログラムを提供する。
【解決手段】複数の端末装置、リポジトリサーバ、ビルドサーバ及び監視装置が、ネットワークを介して通信接続されるビルドシステムにおいて、監視装置は、ビルドの実行記録であるビルドログファイルを取得し、取得したビルドログファイルに、ワーニング対象のコード部分を指摘するワーニングログが含まれる場合、ワーニングログを抽出し、抽出したワーニングログを、ビルドログファイルに記述されているファイルパス毎に分類し、ファイルパス毎に分類されたワーニングログの数を含む集計情報を生成して出力する。
【選択図】図8
【特許請求の範囲】
【請求項1】
ビルドの実行記録であるビルドログファイルを取得する取得部と、
前記ビルドログファイルに記述されているファイルパスとグループ情報とを対応付けた対応情報を記憶する記憶部と、
前記ビルドログファイルに、ワーニング対象のコード部分を指摘するワーニングログが含まれる場合、前記ワーニングログを抽出する抽出部と、
前記対応情報に基いて、前記ワーニングログを前記グループ情報と対応付けて分類する分類部と、
前記グループ情報毎に分類された前記ワーニングログの数を含む集計情報を生成する生成部と、
前記集計情報を出力する出力部と、を備える、
監視装置。
【請求項2】
前記記憶部は、特定コード部分を指定する抽出除外情報を更に記憶し、
前記抽出部は、前記抽出除外情報に基いて、前記特定コード部分を指摘する前記ワーニングログを除外して前記ワーニングログを抽出する、
請求項1に記載の監視装置。
【請求項3】
ビルドの実行記録であるビルドログファイルを取得し、
取得した前記ビルドログファイルに、ワーニング対象のコード部分を指摘するワーニングログが含まれる場合、前記ワーニングログを抽出し、
抽出した前記ワーニングログを、前記ビルドログファイルに記述されているファイルパス毎に分類し、
前記ファイルパス毎に分類された前記ワーニングログの数を含む集計情報を生成して出力する、
監視方法。
【請求項4】
コンピューターに監視処理を実行させるプログラムであって、
前記監視処理は、
ビルドの実行記録であるビルドログファイルを取得するステップと、
前記ビルドログファイルに、ワーニング対象のコード部分を指摘するワーニングログが含まれる場合、前記ワーニングログを抽出するステップと、
前記ワーニングログを前記ビルドログファイルに記述されているファイルパス毎に分類するステップと、
前記ファイルパス毎に分類された前記ワーニングログの数を含む集計情報を生成するステップと、
前記集計情報を出力するステップと、を含む、
プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ソースコードをビルドする際に検出され得るワーニング(単に「警告」ともいう。)の検出状況を統合監視する技術に関する。
【背景技術】
【0002】
大規模なソフトウェア開発では、複数のソフトウェア開発者がチームを組み、同時並行で担当分のソースコードを作成する。
【0003】
各ソフトウェア開発者が作成したソースコードは、ソースコードの更新履歴を管理するリポジトリサーバに保存される。保存されたソースコードは、ビルドサーバが自動取得してビルドを行う。ビルドサーバは、取得したソースコードに問題がないか静的解析を行い、問題がなければ、各ソースコードをコンパイルして複数のオブジェクトファイルを生成する。
【0004】
ビルドサーバは、生成した複数のオブジェクトファイルをリンカでリンクして実行ファイルを作成する。自動的にビルドを行うシステム自体は公知技術であり、例えば、特許文献1に開示しているオンラインビルドシステムがある。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2015-197902号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
ビルドサーバは、ソースコードの静的解析において、文法又は言語仕様上のエラーがあるコード部分を検出した場合、エラー内容を指摘するエラーメッセージ(単に「エラー」ともいう。)を生成し、ソースコードを作成したソフトウェア開発者が操作する端末装置にエラーを通知する。ビルドサーバは、エラーを内在したままのソースコードをコンパイルすることはできないので、ソフトウェア開発者は、エラーで指摘されたコード部分を必ず修正する。
【0007】
ところで、静的解析では、エラーではないが、不適切または不正確なコード部分についても検出する。ビルドサーバは、該当のコード部分を指摘するワーニングメッセージ(単に「ワーニング」ともいう。)を生成し、ソースコードを作成したソフトウェア開発者が操作する端末装置にワーニングを通知する。
【0008】
ビルドサーバは、ワーニングが指摘するコード部分が修正されなくてもソースコードをコンパイルすることができる。そのため、ソフトウェア開発者は、ワーニングで指摘されたコード部分を修正しない場合がある。
【0009】
ワーニングが指摘するコード部分の修正無しでソースコードをコンパイルしてオブジェクトファイルを生成した場合、そのオブジェクトファイルを含む実行ファイルには予期せぬ不具合が含まれている可能性がある。
【0010】
一方、ソースコードの内容によっては、ワーニングメッセージが指摘するコード部分を修正することが望ましくない場合もある。例えば、ソースコードのライセンス契約において、ソースコードの改変に制約が設けられている場合である。
【0011】
このように、ワーニングについては、ワーニングが検出されたソースコードを作成したソフトウェア開発者だけでなく、関係する他のソフトウェア開発者、管理者(以下、「関係者」という。)も、ワーニングの検出状況を監視できるようにして、適切な対応がとれるようにしておくことが望ましい。
【0012】
1つの側面として、本発明は、ビルドワーニングの検出状況を統合監視することができる監視装置、監視方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0013】
(1)本開示の一態様である監視装置は、取得部と、記憶部と、抽出部と、分類部と、生成部と、出力部とを備える。取得部は、ビルドの実行記録であるビルドログファイルを取得する。記憶部は、ビルドログファイルに記述されているファイルパスとグループ情報とを対応付けた対応情報を記憶する。抽出部は、ビルドログファイルに、ワーニング対象のコード部分を指摘するワーニングログが含まれる場合、ワーニングログを抽出する。分類部は、対応情報に基いて、ワーニングログをグループ情報と対応付けて分類する。生成部は、グループ情報毎に分類されたワーニングログの数を含む集計情報を生成する。出力部は、集計情報を出力する。
【0014】
(2)上記(1)の監視装置において、記憶部は、特定コード部分を指定する抽出除外情報を更に記憶し、抽出部は、抽出除外情報に基いて、特定コード部分を指摘するワーニングログを除外してワーニングログを抽出する、としてもよい。
【0015】
(3)本開示の一態様である監視方法は、ビルドの実行記録であるビルドログファイルを取得し、取得したビルドログファイルに、ワーニング対象のコード部分を指摘するワーニングログが含まれる場合、ワーニングログを抽出し、抽出したワーニングログを、ビルドログファイルに記述されているファイルパス毎に分類し、ファイルパス毎に分類されたワーニングログの数を含む集計情報を生成して出力する。
【0016】
(4)本開示の一態様であるプログラムは、コンピューターに監視処理を実行させるプログラムである。監視処理は、ビルドの実行記録であるビルドログファイルを取得するステップと、ビルドログファイルに、ワーニング対象のコード部分を指摘するワーニングログが含まれる場合、ワーニングログを抽出するステップと、ワーニングログをビルドログファイルに記述されているファイルパス毎に分類するステップと、ファイルパス毎に分類されたワーニングログの数を含む集計情報を生成するステップと、集計情報を出力するステップと、を含む。
【発明の効果】
【0017】
本発明を用いれば、関係者はビルドワーニングの検出状況を統合監視することができる。
【図面の簡単な説明】
【0018】
図1】ビルドシステム10の構成の一例を示す図である。
図2】ビルドサーバ4の構成の一例を示す図である。
図3】監視装置5の構成の一例を示す図である。
図4】ビルドログファイルの一例を示す図である。
図5】抽出除外情報の一例を示す図である。
図6】対応情報の一例を示す図である。
図7】ワーニング一覧の一例を示す図である。
図8】ビルドシステム10の動作の一例を示すシーケンス図である。
【発明を実施するための形態】
【0019】
以下、図面を参照しながら、本発明の一実施形態について説明する。なお、図面に表現された同一の構成部については同じ符号を付し、繰り返しの説明は省略する。
【0020】
[ビルドシステム10の構成]
図1に示すように、ビルドシステム10は、第1端末装置1、第2端末装置2、リポジトリサーバ3、ビルドサーバ4、監視装置5を含む。第1端末装置1、第2端末装置2、リポジトリサーバ3、ビルドサーバ4、監視装置5は、ネットワーク6を介して通信接続される。なお、ビルドシステム10には、第1端末装置1、第2端末装置2以外の端末装置が複数接続されることを想定しているが、図1では省略している。
【0021】
ネットワーク6は、データ通信が可能な通信路である。ネットワーク6は、インターネットやイントラネット、無線LAN、移動通信網等で構成される。
【0022】
第1端末装置1及び第2端末装置2(以下、総称して「端末装置」という。)は、ソフトウェア開発者若しくは管理者が使用する端末装置である。端末装置は、図示していないが、マンマシーンインターフェースの機能を備えたコンピューターであり、CPU(Central Processig Unit)、メモリ、記憶媒体を備え、記憶媒体に記憶されているプログラムをCPUが実行することにより各種機能を実現する。端末装置は、マウス、キーボード等の操作入力部、映像を表示する表示部、音声を出力するスピーカー、ネットワーク6を介して他の通信機器と通信する通信機能を備える。
【0023】
ソフトウェア開発者は、例えば、第1端末装置1を操作して、開発対象のソースコード39を作成することができる。他のソフトウェア開発者または管理者等の関係者は、例えば、第2端末装置2を操作して、監視装置5が集計したグループ毎のワーニング数等を含む集計情報62を表示部に表示して、グループ毎のワーニングの検出数、検出したワーニング内容等の検出状況を監視することができる。
【0024】
リポジトリサーバ3は、ソフトウェア開発者が端末装置を操作して作成したソースコード39を保管するためのコンピューターである。リポジトリサーバ3は、図示していないが、CPU、メモリ、記憶媒体を備え、記憶媒体に記憶されているプログラムをCPUが実行することにより各種機能を実現する。
【0025】
リポジトリサーバ3は、ソースコード39のバージョンを管理する履歴管理機能を備える。リポジトリサーバ3の履歴管理機能により、ソフトウェア開発者がソースコード39の履歴情報を確認することで、いつ誰がソースコード39を更新したのかを把握することができる。リポジトリサーバ3は、ネットワーク6を介して他の通信機器と通信する通信機能を備える。
【0026】
[ビルドサーバ4の構成]
ビルドサーバ4は、ソースコード39を取得してビルドを自動的に行うビルド自動化機能(「ビルドエンジン」ともいう。)を備える。図2に示すように、ビルドサーバ4は、サーバ通信部31、サーバ制御部32、サーバ記憶部33を備える。ビルドサーバ4は、図示していないが、CPU、メモリ、記憶媒体を備えたコンピューターであり、記憶媒体に記憶されているプログラムをCPUが実行することにより各種機能を実現する。
【0027】
サーバ通信部31は、ネットワーク6を介して他の通信機器と通信する通信機能を有する。サーバ制御部32は、ソースコード取得部34,静的解析部35、コンパイル部36、リンカ部37、ロガー部38を有する。
【0028】
ソースコード取得部34は、ソフトウェア開発者によってソースコード39が新たに作成または更新され、リポジトリサーバ3に保存された場合、該当のソースコード39を自動取得する機能を有する。なお、ソフトウェア開発者が、ソースコード39を新たに作成または更新して、ビルドの実行をビルドサーバ4に指示した場合も、ソースコード取得部34は該当のソースコード39を取得する。
【0029】
静的解析部35は、取得したソースコード39を解析して、文法又は言語仕様上のエラーの有無、或いは、不適切または不正確なコードの表現の有無を検出する機能を有する。
【0030】
コンパイル部36は、静的解析部35の解析の結果、エラーが検出されなかったソースコード39をコンパイルして、オブジェクトファイル40を生成する機能を有する。
【0031】
リンカ部37は、コンパイル部36が生成した、関連する複数のオブジェクトファイル40を結合して共有ライブラリ41または実行ファイル42を作成する機能を有する。係る機能を実現するプログラムを「リンカ」または「リンケージエディタ」ともいう。
【0032】
ロガー部38は、ビルドの進行状況に関する情報を収集し、ビルドログファイル43を生成する機能を有する。静的解析部35が、ソースコード39を解析した結果、エラーに該当するコード部分を検出した場合は、ロガー部38は、該当のコード部分を指摘するエラーログを生成する。また、静的解析部35が不適切または不正確なコード部分を検出した場合は、ロガー部38は該当のコード部分を指摘するワーニングログを生成する。
【0033】
サーバ記憶部33は、各種データ、制御プログラムを記憶する記憶媒体である。サーバ記憶部33は、不揮発性の記憶装置、例えば、ハードディスクドライブ、SSD、フラッシュメモリ等で構成される。サーバ記憶部33は、ソースコード取得部34がリポジトリサーバ3から取得したソースコード39、コンパイル部36が生成したオブジェクトファイル40、リンカ部37が作成した共有ライブラリ41、実行ファイル42、ロガー部38が生成したビルドログファイル43を記憶する。
【0034】
[監視装置5の構成]
監視装置5は、ビルドサーバ4からビルドログファイル43を取得して、ワーニングログを抽出し、ビルドログファイル43に記述されているファイルパスに基いて、ワーニングログを分類し、分類したグループ別のワーニングログの数を含む集計情報を生成する機能を有する。
【0035】
監視装置5は、BI(Business Intelligence)ツール機能を備え、BIツール機能を用いて集計情報を生成してもよい。BIツールは、分析ツールであり、収集したデータの整形、クロス集計などの操作を効率的に行えるようにしたソフトウェアである。
【0036】
監視装置5は、図3に示すように、通信部51、制御部52、記憶部53を備える。監視装置5は、図示していないが、CPU、メモリ、記憶媒体を備えたコンピューターであり、記憶媒体に記憶されているプログラムをCPUが実行することにより各種機能を実現する。通信部51は、ネットワーク6を介して他の通信機器と通信する通信機能を有する。
【0037】
制御部52は、取得部54、抽出部55、分類部56、生成部57、出力部58を有する。ロガー部38がビルドログファイル43を新たに生成して、サーバ記憶部33に記憶すると、取得部54は、通信部51を介してビルドログファイル43を取得する機能を有する。取得部54は、定期的にビルドサーバ4にアクセスしてロガー部38が新たにビルドログファイル43を生成していないかどうか確認し、生成していればビルドログファイル43を取得するとしてもよい。
【0038】
抽出部55は、取得したビルドログファイル43にワーニングログが含まれている場合、これを抽出する機能を有する。ビルドログファイル43には、図4のビルドログファイル43の一例に示すように、ワーニングログには、ワーニングログであることを示す情報、例えば、「:warning:」が付与されている。なお、ワーニングログであることを示す情報は、「:warning:」に限られないのは、もちろんである。例えば、ワーニングログであることを示す記号であってもよく、ワーニングログを特定する情報であれば、どのような形態であってもよい。
【0039】
抽出部55は、この「:warning:」が付与されているログをワーニングログとして抽出する。但し、抽出部55は、「:warning:」が付与されているログであったとしても、図6に示す抽出除外情報60に記述されている特定のコード部分(以下、単に「特定コード部分」という。)を含むログはワーニングログとして抽出しない。
【0040】
抽出除外情報60に記載されている特定コード部分は、ソースコードの修正が望ましくないコード部分が記載されている。例えば、GPL(GNU General Public License)が適用されたOSS(Open Source Software)のソースコードが該当する。
【0041】
GPLが適用されたOSSは、無料で利用することができ、改変も自由にできるが、利用条件が定められている。その利用条件の1つとして、例えば、OSSの一部を改変して実行ファイルをユーザに提供した場合、提供者は、改変したソースコードをユーザが入手できるように開示しなければならない、という条件がある。
【0042】
ソースコードの開示は、ユーザが更なる改変を行うことで、提供者が提供する実行ファイルの動作とは異なる、望ましくない動作をする可能性がある。よって、改変によってソースコードの開示義務が発生しないように、ワーニングが検出されたとしても改変しないことが望ましい場合がある。
【0043】
また、ライセンス契約によっては、改変がそもそも許可されていないソフトウェアを利用する場合もある。このように、抽出部55は、特定コード部分を含むワーニングログについては、抽出除外情報60に基いて抽出しない。
【0044】
分類部56は、図6に示す対応情報61に基いて、抽出したワーニングログを、ビルドログファイル43に記述されているファイルパス別に分類して、グループ情報と対応付ける機能を有する。例えば、抽出したワーニングログが含まれていたビルドログファイル43に記述されているファイルパスが「Xxx/aaa/bbb/ccc/・・・」の場合、分類部56は、対応情報61に基いて、当該ワーニングログをAグループに対応付けて分類する。
【0045】
グループ情報の分類は、ソフトウェア開発者或いは管理者が、ワーニングの検出数の統合監視がし易い単位であればよく、例えば、開発しているソフトウェアに含まれる機能単位でまとめる場合は、グループ情報は機能の名称であってもよい。或いは、いくつかの機能についてまとめてチームで開発をする場合は、グループ情報をチーム名にしてもよい。
【0046】
ビルドログファイル43に記述されるファイルパスは、ビルドサーバ4の設定で変更することが可能である。例えば、ソフトウェア開発者XのIDとグループ情報「A」とを対応付けることで、ソフトウェア開発者Xが作成したソースコードのビルドログファイル43は、Aグループに対応付けたファイルパスを記述するように設定することができる。
【0047】
生成部57は、分類部56で分類されたワーニングログのグループ別の数を含む集計情報62を生成する機能を有する。生成部57は、集計情報62を定期的に更新して生成する。例えば、生成部57は、15分毎に集計情報62を更新して生成するとしてもよい。
【0048】
出力部58は、端末装置から集計情報62の出力指示を受けると、指示があった端末装置に集計情報62を出力する機能を有する。出力指示は、通信部51を介して、第1端末装置1又は第2端末装置2から受けて、指示があった端末装置に通信部51を介して集計情報62を送信する。
【0049】
監視装置5から集計情報62を受信した端末装置は、例えば、図7に示すように、集計情報62を表示部に表示する。集計情報62には、グループ別のワーニング検出数を集計したグループ別ワーニング検出数情報63、ワーニングで指摘されたワーニング内容、該当コードを一覧にしたワーニング一覧情報64が含まれる。
【0050】
ワーニング一覧情報64の表示項目としては、ビルド番号、グループ情報、ファイルパス、ワーニングで指摘されたコード部分の行番号、ワーニング内容、該当コードがある。関係者は、グループ別ワーニング検出数情報63から、グループ別のワーニング検出状況を把握し、詳細なワーニングログを確認したい場合は、ワーニング一覧情報64からワーニング内容、該当コードを確認することができる。
【0051】
[ビルドシステム10の動作]
図8に示すシーケンス図でビルドシステム10の動作を説明する。なお、図8に示す記号「S」はステップを意味する。
【0052】
第1端末装置1は、ソフトウェア開発者の入力操作によりソースコード39を生成する(S1)。第1端末装置1は、生成されたソースコード39をリポジトリサーバ3に送信する(S2)。リポジトリサーバ3は、ソースコード39を保存する(S3)。
【0053】
ビルドサーバ4は、リポジトリサーバ3にソースコード39が保存されると、当該ソースコード39を取得する(S4)。ビルドサーバ4は、取得したソースコード39のビルドを実行する(S5)。ビルドサーバ4は、ビルドを実行するとビルドログファイル43を生成する(S6)。
【0054】
監視装置5は、ビルドサーバ4がビルドログファイル43を生成すると、当該ビルドログファイル43を取得する(S7)。監視装置5は、取得したビルドログファイル43からワーニングログを抽出する(S8)。監視装置5は、抽出したワーニングログを対応情報61に基いて分類し(S9)、グループ毎のワーニング数を含む集計情報62を生成する(S10)。
【0055】
監視装置5は、第2端末装置2から集計情報62の出力指示を受け付けると、第2端末装置2に集計情報62を出力する(S11)。第2端末装置2は、監視装置5から受信した集計情報62を表示部に表示する(S12)。
【0056】
関係者は、第2端末装置2の表示部に表示された集計情報から、ワーニングの検出状況をグループ毎に把握することができ、適切な対応を取ることができる。例えば、管理者は、ワーニング検出数が多いグループに所属するソフトウェア開発者に適切な注意喚起をすることができる。
【0057】
以上、各実施形態について説明したが、本発明は上記の実施形態に限定されるものではなく、上記の実施形態の各種変形形態および代替形態を包含するものとして理解されるべきである。例えば、本発明の趣旨および範囲を逸脱しない範囲で構成要素を変形して具体化したものや、上記の実施形態に開示されている複数の構成要素を適宜組み合わせた実施形態や、実施形態に示される全構成要素からいくつかの構成要素を削除して、または実施形態に示される構成要素にいくつかの構成要素を追加した実施形態も含まれる。
【0058】
上述の例において、プログラムは、様々なタイプの非一時的なコンピューター可読媒体(non-transitory computer readable medium)を用いて格納され、コンピューターに供給することができる。非一時的なコンピューター可読媒体の例は、磁気記録媒体(例えば、フレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば、光磁気ディスク)、CD -ROM(Read Only Memory)、CD-R、CD-R/W、半導体メモリを含む。また、プログラムは、様々なタイプの一時的なコンピューター可読媒体(transitory computer readable medium)によってコンピューターに供給してもよい。一時的なコンピューター可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピューター可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピューターに供給することができる。
【0059】
本発明は、監視装置5として実現する他、監視方法であってもよく、コンピューターに関し処理を実行させるプログラム、係るプログラムを記憶した記憶媒体であってもよい。
【符号の説明】
【0060】
1 第1端末装置
2 第2端末装置
3 リポジトリサーバ
4 ビルドサーバ
5 監視装置
6 ネットワーク
10 ビルドシステム
31 サーバ通信部
32 サーバ制御部
33 サーバ記憶部
34 ソースコード取得部
35 静的解析部
36 コンパイル部
37 リンカ部
38 ビルドログ生成部
39 ソースコード
40 オブジェクトファイル
41 共有ライブラリ
42 実行ファイル
43 ビルドログファイル
51 通信部
52 制御部
53 記憶部
54 取得部
55 抽出部
56 分類部
57 生成部
58 出力部
59 ビルドログファイル
60 抽出除外情報
61 対応情報
62 集計情報
図1
図2
図3
図4
図5
図6
図7
図8