JP2018045525A - 参考情報出力プログラム、出力プログラム、参考情報出力方法、及び参考情報出力装置 - Google Patents

参考情報出力プログラム、出力プログラム、参考情報出力方法、及び参考情報出力装置 Download PDF

Info

Publication number
JP2018045525A
JP2018045525A JP2016180869A JP2016180869A JP2018045525A JP 2018045525 A JP2018045525 A JP 2018045525A JP 2016180869 A JP2016180869 A JP 2016180869A JP 2016180869 A JP2016180869 A JP 2016180869A JP 2018045525 A JP2018045525 A JP 2018045525A
Authority
JP
Japan
Prior art keywords
application
exclusion
check
content
reference 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.)
Granted
Application number
JP2016180869A
Other languages
English (en)
Other versions
JP6840966B2 (ja
Inventor
清楓 島田
Sayaka SHIMADA
清楓 島田
大輔 檜山
Daisuke Hiyama
大輔 檜山
秀弥 池田
Hideya Ikeda
秀弥 池田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2016180869A priority Critical patent/JP6840966B2/ja
Priority to US15/651,890 priority patent/US10318258B2/en
Publication of JP2018045525A publication Critical patent/JP2018045525A/ja
Application granted granted Critical
Publication of JP6840966B2 publication Critical patent/JP6840966B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】除外申請に関して参考になる情報を出力できる参考情報出力プログラムを提供する。
【解決手段】参考情報出力プログラムは、複数の階層により階層化されたプログラムの解析結果を取得し、取得した解析結果に含まれる特定のチェック内容を、プログラムの対応する箇所と対応付けて表示させる際、過去のチェック内容の除外申請の情報が記憶された記憶部を参照し、特定のチェック内容と同種類のチェック内容の除外申請を特定し、同種類のチェック内容の除外申請の申請結果と、プログラムにおける特定のチェック内容の複数の階層における位置と同種類のチェック内容の複数の階層における位置との差分と、に応じた、特定のチェック内容についての除外申請に関する参考情報を出力する、処理をコンピュータに実行させる。
【選択図】図11

Description

本件は、参考情報出力プログラム、出力プログラム、参考情報出力方法、及び参考情報出力装置に関する。
ソースコードに対する静的解析が知られている(例えば特許文献1参照)。静的解析によりソースコードに潜在するバグやコーディング規約違反といった品質に関する種々の問題が発見される。
特開2013−134521号公報
ところで、上述した種々の問題は静的解析のチェック結果としてソースコードの開発者にフィードバックされる。チェック結果の中には有益な指摘だけでなく、無駄な指摘が含まれている場合がある。無駄な指摘としては、例えば開発者にとって重要でない指摘やプロジェクトの都合による修正不要な指摘などがある。
無駄な指摘に対しては、開発者は次回のチェック結果から除外させる除外申請を行うことができる。しかしながら、開発者はチェック結果を個別に確認して除外申請の要否を決定しなければならず、手間がかかるという問題がある。
そこで、1つの側面では、除外申請に関して参考になる情報を出力できる参考情報出力プログラム、出力プログラム、参考情報出力方法、及び参考情報出力装置を提供することを目的とする。
1つの実施態様では、参考情報出力プログラムは、複数の階層により階層化されたプログラムの解析結果を取得し、取得した前記解析結果に含まれる特定のチェック内容を、前記プログラムの対応する箇所と対応付けて表示させる際、過去のチェック内容の除外申請の情報が記憶された記憶部を参照し、前記特定のチェック内容と同種類のチェック内容の除外申請を特定し、前記同種類のチェック内容の除外申請の申請結果と、前記プログラムにおける前記特定のチェック内容の前記複数の階層における位置と前記同種類のチェック内容の前記複数の階層における位置との差分と、に応じた、前記特定のチェック内容についての除外申請に関する参考情報を出力する、処理をコンピュータに実行させることを特徴とする参考情報出力プログラムである。
1つの実施態様では、参考情報出力プログラムは、複数の階層により階層化されたプログラムの解析結果に含まれる特定のチェック内容について除外申請を受け付けると、過去のチェック内容の除外申請の情報が記憶された記憶部を参照し、前記特定のチェック内容と同種類のチェック内容の除外申請を特定し、前記同種類のチェック内容の除外申請の申請結果と、前記特定のチェック内容の前記複数の階層における位置と前記同種類のチェック内容の前記複数の階層における位置との差分と、に応じた、前記特定のチェック内容についての除外申請の認否判断に関する参考情報を出力する、処理をコンピュータに実行させることを特徴とする参考情報出力プログラムである。
1つの実施態様では、出力プログラムは、複数の階層により階層化されたプログラムの解析結果に含まれる特定のチェック内容について除外申請を受け付けると、過去のチェック内容の除外申請の情報が記憶された記憶部を参照し、前記特定のチェック内容と同種類のチェック内容を特定し、前記複数の階層のうち、前記特定のチェック内容を示す情報と前記同種類のチェック内容を示す情報とのそれぞれを、対応する位置にマッピングした図を出力する、処理をコンピュータに実行させることを特徴とする出力プログラムである。
1つの実施態様では、参考情報出力方法は、複数の階層により階層化されたプログラムの解析結果を取得し、取得した前記解析結果に含まれる特定のチェック内容を、前記プログラムの対応する箇所と対応付けて表示させる際、過去のチェック内容の除外申請の情報が記憶された記憶部を参照し、前記特定のチェック内容と同種類のチェック内容の除外申請を特定し、前記同種類のチェック内容の除外申請の申請結果と、前記プログラムにおける前記特定のチェック内容の前記複数の階層における位置と前記同種類のチェック内容の前記複数の階層における位置との差分と、に応じた、前記特定のチェック内容についての除外申請に関する参考情報を出力する、処理をコンピュータが実行することを特徴とする参考情報出力方法である。
1つの実施態様では、参考情報出力方法は、複数の階層により階層化されたプログラムの解析結果に含まれる特定のチェック内容について除外申請を受け付けると、過去のチェック内容の除外申請の情報が記憶された記憶部を参照し、前記特定のチェック内容と同種類のチェック内容の除外申請を特定し、前記同種類のチェック内容の除外申請の申請結果と、前記特定のチェック内容の前記複数の階層における位置と前記同種類のチェック内容の前記複数の階層における位置との差分と、に応じた、前記特定のチェック内容についての除外申請の認否判断に関する参考情報を出力する、処理をコンピュータが実行することを特徴とする参考情報出力方法である。
1つの実施態様では、参考情報出力装置は、複数の階層により階層化されたプログラムの解析結果を取得し、取得した前記解析結果に含まれる特定のチェック内容を、前記プログラムの対応する箇所と対応付けて表示させる際、過去のチェック内容の除外申請の情報が記憶された記憶部を参照し、前記特定のチェック内容と同種類のチェック内容の除外申請を特定し、前記同種類のチェック内容の除外申請の申請結果と、前記プログラムにおける前記特定のチェック内容の前記複数の階層における位置と前記同種類のチェック内容の前記複数の階層における位置との差分と、に応じた、前記特定のチェック内容についての除外申請に関する参考情報を出力する、処理を実行する処理部を有する参考情報出力装置である。
1つの実施態様では、参考情報出力装置は、複数の階層により階層化されたプログラムの解析結果に含まれる特定のチェック内容について除外申請を受け付けると、過去のチェック内容の除外申請の情報が記憶された記憶部を参照し、前記特定のチェック内容と同種類のチェック内容の除外申請を特定し、前記同種類のチェック内容の除外申請の申請結果と、前記特定のチェック内容の前記複数の階層における位置と前記同種類のチェック内容の前記複数の階層における位置との差分と、に応じた、前記特定のチェック内容についての除外申請の認否判断に関する参考情報を出力する、処理を実行する処理部を有する参考情報出力装置である。
除外申請に関して参考になる情報を出力することができる。
図1は参考情報出力システムの一例を説明するための図である。 図2は第2サーバのハードウェア構成の一例である。 図3は第1サーバの機能ブロック図の一例である。 図4は第2サーバの機能ブロック図の一例である。 図5はチェック結果テーブルの一例である。 図6は除外ルールテーブルの一例である。 図7は開発端末の機能ブロック図の一例である。 図8は第1サーバの動作の一例を示すフローチャートである。 図9は第2サーバの動作の一例を示すフローチャートである。 図10は開発端末の動作の一例を示すフローチャートである。 図11はエディタ画面の一例である。 図12は第2サーバの動作の一例を示すフローチャートである。 図13は履歴解析処理の一例を示すフローチャートである。 図14は履歴解析処理を説明する図の一例である。 図15は履歴解析処理を説明する図の他の一例である。 図16は開発端末の動作の一例を示すフローチャートである。 図17は除外申請画面の一例である。 図18は第2サーバの動作の一例を示すフローチャートである。 図19は管理者端末の動作の一例を示すフローチャートである。 図20は除外申請一覧画面の一例である。 図21は除外申請確認画面の一例である。
以下、本件を実施するための形態について図面を参照して説明する。
図1は参考情報出力システムSの一例を説明するための図である。参考情報出力システムSは除外申請に関して参考になる参考情報を出力するコンピュータシステムである。参考情報出力システムSは複数台の開発端末100と第1サーバ200と参考情報出力装置としての第2サーバ300と管理者端末400を備えている。図1では、開発端末100及び管理者端末400の一例としてPersonal Computer(PC)が示されているが、タブレット端末といったスマートデバイスであってもよい。また、図1では、複数台の開発端末100が示されているが、開発端末100は1台であってもよい。さらに、複数台の開発端末100の一部は互いに異なる建物(例えば遠隔地の建物など)に配置されていてもよい。
開発端末100、第1サーバ200、第2サーバ300及び管理者端末400は通信ネットワークNWを介して互いに接続されている。通信ネットワークNWとしては例えばインターネットやLocal Area Network(LAN)などの有線ネットワークがある。通信ネットワークNWの一部に電波を利用した無線ネットワークが利用されていてもよい。
開発端末100はソースコードを作成する開発者によって使用される。開発者がソースコードを作成又は修正し終えると、開発端末100は開発者からの指示に従ってソースコードを第1サーバ200に送信する。第1サーバ200はソースコードに対する静的解析を実行する。より詳しくは、第1サーバ200は開発端末100からソースコードが送信されると、ソースコードを受信して記憶する。受信後、第1サーバ200は定期的に又は非定期的に自身に搭載された種々の静的解析機能を利用してソースコードに対する静的解析を実行し、解析結果を表す電子ファイルをチェック結果として第2サーバ300へアップロードする。
第2サーバ300は第1サーバ200からアップロードされたチェック結果を記憶する。また、第2サーバ300は除外申請に関して参考になる参考情報を開発端末100に出力する。より詳しくは、第2サーバ300は開発端末100からチェック結果のチェック内容(具体的には指摘メッセージ)の提供が要求されると、チェック結果と過去のチェック結果に対してなされた除外申請に対する対応を利用して参考情報を特定し、チェック内容と特定した参考情報を組にして開発端末100に出力する。開発者は開発端末100に出力されたチェック内容と参考情報を確認して、そのチェック内容に対して除外申請を管理者に要求するか否か判断する。特に、参考情報は除外申請推奨と修正推奨を含んでいる。除外申請推奨は、特定のチェック結果の除外申請を推奨する情報である。修正推奨は除外申請を行わずに特定のチェック結果と対応付けられたソースコードの対応する箇所の修正を推奨する情報である。
したがって、開発者は開発端末100に除外申請推奨が出力されれば、無駄な指摘であることから、除外申請を管理者に要求すると除外申請が承認される可能性が高いと判断し、除外申請を行うようになる。逆に、開発者は開発端末100に修正推奨が出力されれば、有益な指摘であることから除外申請を管理者に要求しても除外申請が差し戻される可能性が高いと判断し、除外申請を行わずに、対応箇所の修正を行うようになる。これにより、開発の早い段階でソースコードの品質を向上させることができる。
開発端末100で除外申請が行われると、開発端末100は除外申請の申請内容を第2サーバ300に送信する。第2サーバ300は除外申請の申請内容を受信すると、受信した申請内容を仮登録という登録形式で記憶する。ソースコードの品質を管理する管理者は管理者端末400を操作して仮登録の申請内容を管理者端末400に表示させ、その申請内容を承認して受領するか、又は、承認せずに差し戻すか判断する。
管理者が申請内容を承認する操作を管理者端末400に行うと、管理者端末400は第2サーバ300に承認を表す情報を送信する。そして、第2サーバ300は承認を表す情報を受信すると、仮登録の申請内容を本登録の申請内容に更新する。具体的には、第2サーバ300は登録内容を仮登録から受領に書き換える。逆に、管理者が申請内容を差し戻す操作を管理者端末400に行うと、管理者端末400は第2サーバ300に差戻しを表す情報を送信する。そして、第2サーバ300は差戻しを表す情報を受信すると、同様に、仮登録の申請内容を本登録の申請内容に更新する。具体的には、第2サーバ300は登録内容を仮登録から差戻しに書き換える。これにより、第2サーバ300には、除外申請に対する対応として受領又は差戻しを含むチェック結果が履歴として蓄積される。そして、この履歴が過去のチェック結果として次回の除外申請の際に利用されるため、利用回数が増加するに従って、精度の高い参考情報が出力される。
以下、上述した開発端末100、第1サーバ200、第2サーバ300、及び管理者端末400の詳細について図面を参照して説明する。
図2は第2サーバ300のハードウェア構成の一例である。尚、開発端末100,第1サーバ200、及び管理者端末400については基本的に第2サーバ300と同様の構成であるため、説明を省略する。
第2サーバ300は、少なくともCentral Processing Unit(CPU)300A、Random Access Memory(RAM)300B、Read Only Memory(ROM)300C、及びネットワークI/F(インタフェース)300Dを含んでいる。第2サーバ300は、必要に応じて、Hard Disk Drive(HDD)300E、入力I/F300F、出力I/F300G、入出力I/F300H、ドライブ装置300Iの少なくとも1つを含んでいてもよい。CPU300Aからドライブ装置300Iまでは、内部バス300Jによって互いに接続されている。少なくともCPU300AとRAM300Bとが協働することによってコンピュータが実現される。
入力I/F300Fには、入力装置710が接続される。入力装置710としては、例えばキーボードやマウスなどがある。
出力I/F300Gには、表示装置720が接続される。表示装置720としては、例えば液晶ディスプレイがある。
入出力I/F300Hには、半導体メモリ730が接続される。半導体メモリ730としては、例えばUniversal Serial Bus(USB)メモリやフラッシュメモリなどがある。入出力I/F300Hは、半導体メモリ730に記憶されたプログラムやデータを読み取る。
入力I/F300F及び入出力I/F300Hは、例えばUSBポートを備えている。出力I/F300Gは、例えばディスプレイポートを備えている。
ドライブ装置300Iには、可搬型記録媒体740が挿入される。可搬型記録媒体740としては、例えばCompact Disc(CD)−ROM、Digital Versatile Disc(DVD)といったリムーバブルディスクがある。ドライブ装置300Iは、可搬型記録媒体740に記録されたプログラムやデータを読み込む。
ネットワークI/F300Dは、例えばポートとPhysical Layer Chip(PHYチップ)とを備えている。第2サーバ300は、ネットワークI/F300Dを介して通信ネットワークNWと接続される。
上述したRAM300Bには、ROM300CやHDD300Eに記憶されたプログラムがCPU300Aによって格納される。RAM300Bには、可搬型記録媒体740に記録されたプログラムがCPU300Aによって格納される。格納されたプログラムをCPU300Aが実行することにより、第2サーバ300は後述する各種の機能を実現し、また、後述する各種の処理を実行する。尚、プログラムは後述するフローチャートに応じたものとすればよい。
続いて、図3を参照して、第1サーバ200の機能について説明する。
図3は第1サーバ200の機能ブロック図の一例である。第1サーバ200は、図3に示すように、Git210、継続的インテグレーション部220、第1情報処理部230を含んでいる。特に、継続的インテグレーション部220は静的解析部221を含み、静的解析部221は第1静的解析部221A及び第2静的解析部221Bを含んでいる。一方、第1情報処理部230は第3静的解析部231を含んでいる。
Git210はバージョン管理システム又はリポジトリの一種である。したがって、開発端末100からソースコードSCが送信されると、Git210はソースコードSCを記憶する。
継続的インテグレーション部220はソースコードインスペクションといったソースコード作成時の品質改善やソースコードの納期短縮に関する機能を提供する。継続的インテグレーション部220としては、例えばJenkinsやHudson(登録商標)などがある。継続的インテグレーション部220はGit210からソースコードSCを定期的に又は非定期的に取得し、取得したソースコードSCを静的解析部221に格納する。例えば継続的インテグレーション部220はGit210にソースコードSCが記憶された時点でソースコードSCを取得したり、特定の設定時刻にソースコードSCを取得したりする。
第1静的解析部221A及び第2静的解析部221BはソースコードSCに対してそれぞれ異なる静的解析を実行する。例えば、第1静的解析部221Aは静的解析を実行することによりコーディング規約違反を発見し、第2静的解析部221Bは静的解析を実行することによりバグなどの欠陥を発見する。尚、第1静的解析部221Aとしては例えばCheckStyle(登録商標)がある。第2静的解析部221Bとしては例えばFindBugs(登録商標)がある。第1静的解析部221A及び第2静的解析部221Bは静的解析の解析結果を表すExtensible Markup Language(XML)形式の電子ファイルF1,F2をチェック結果として第2サーバ300に出力する。
一方、第1情報処理部230は静的解析部221に格納されたソースコードSCを複製して取得する。第3静的解析部231はソースコードSCに対して上述した第1静的解析部221A及び第2静的解析部221Bと異なる静的解析を実行する。第3静的解析部231は静的解析の解析結果を表すComma-Separated Values(CSV)形式の電子ファイルF3をチェック結果として第2サーバ300に出力する。
続いて、図4から図7までを参照して、開発端末100及び第2サーバ300の機能について説明する。
図4は第2サーバ300の機能ブロック図の一例である。図5はチェック結果テーブルT1の一例である。図6は除外ルールテーブルT2の一例である。図7は開発端末100の機能ブロック図の一例である。
まず、図4に示すように、第2サーバ300は、第2情報処理部310、チェック結果テーブルT1、及び除外ルールテーブルT2を含んでいる。特に、第2情報処理部310は、チェック結果登録部311、チェック結果検索部312、チェック結果除外部313、除外ルール履歴解析部314、除外申請仮登録部315、及び除外申請登録部316を含んでいる。
チェック結果登録部311は第1サーバ200から送信されたチェック結果をチェック結果テーブルT1に格納する。上述したように、チェック結果は異なる形式の電子ファイルF1,F2,F3であるため、チェック結果登録部311は、まず電子ファイルF1,F2,F3をとりまとめ、電子ファイルF1,F2,F3の形式を整えてからチェック結果テーブルT1に格納する。これにより、チェック結果テーブルT1はソースコードSCに対して実行された静的解析のチェック結果を記憶する。
図5を参照して具体的に説明すると、チェック結果テーブルT1はチェック結果に関する種々の項目を構成要素として含んでいる。各項目について説明すると、実行時間は静的解析が実行された時刻を表している。プロジェクト名はソースコードSCが使用されるプロジェクトの名称を表している。プロジェクト名はApplication Programming Interface(API)を利用して画面上又は画面内から取得される。ソースパスはソースコードSCのパスを表している。パッケージ、クラス、メソッドはJava(登録商標)の構造を表している。これらの構造に加えてインタフェースやメンバーを加えてもよい。行はソースコードSCの行番号を表している。ツール名は静的解析ツールの略称を表している。例えばツール名「FB」は上述したFindBugs(登録商標)を表している。ルールIDは静的解析ツールのチェック項目を一意に示す識別情報を表している。メッセージは静的解析による指摘を表している。例えば、静的解析によりソースコードSCの不具合や欠陥が発見されると、メッセージ「修正してください」などが格納される。案件名は例えばプロジェクトの対象となる企業の名称を表している。ステータスは推奨ステータスを表しており、後述する推奨ステータスを更新する処理により、除外申請推奨(図5において除外推奨と表記)又は修正推奨のいずれかが推奨ステータスとして格納される。したがって、推奨ステータスを更新する処理がなされる前であれば、ステータスには除外推奨及び修正推奨は格納されず、nullが格納される。言い換えれば、チェック結果格納直後のチェック結果テーブルT1は推奨ステータス以外の構成要素を含んでいる。
図4に戻り、除外ルールテーブルT2は過去の除外申請の申請内容とその申請内容に対する対応を表す除外ルールを記憶する。具体的には図6に示すように、除外ルールテーブルT2は除外ルールに関する種々の項目を構成要素として含んでいる。以下、除外ルールの構成要素について説明するが、上述したチェック結果と同一の構成要素についてはその説明を省略する。まず、申請日、申請者、チーム、及び申請理由はそれぞれ除外申請の申請日、申請者、申請者が所属するチームの名称、及び除外申請を行う理由を表している。ステータスは除外申請に対する対応状況を表している。例えば、申請者が除外申請を行うと、まず、申請内容などが仮登録という形式で除外ルールに格納される。そして、管理者が除外申請を承認すると、除外ルールにおけるステータスが仮登録から受領に書き換えられる。逆に、管理者が除外申請を差し戻すと、除外ルールにおけるステータスが仮登録から差戻しに書き換えられる。コメントは管理者が承認又は差戻しを行った理由を表している。対応者及び対応日はそれぞれ除外申請の対応を行った者と対応した日を表している。尚、除外ルールテーブルT2にソースコードSCの行番号を含めてもよい。このように、除外ルールテーブルT2により除外申請に対してなされた対応が履歴として管理され、パッケージ、クラス、メソッド、静的解析ツールなどに応じた、除外申請に対する過去の対応傾向が除外ルールテーブルT2に蓄積される。
次に、図7に示すように、開発端末100は統合開発環境部110を含んでいる。統合開発環境部110は例えばEclipse(登録商標)やVisual Studio、WideStudioなどによって実現される。統合開発環境部110は第3情報処理部111を含み、特に、第3情報処理部111はプラグイン実行部111A、画面表示部111B、及び除外申請部111Cを含んでいる。
プラグイン実行部111Aはエディタ画面10上に表示された特定の文字列に対し、特定の操作が行われたことを検出すると、プラグインを実行する。詳細は後述するが、例えばエディタ画面10上に表示された静的解析ツールを表す文字列に対し、その文字列を指示する特定の操作(例えば左クリックなど)が行われたことをプラグイン実行部111Aが検出すると、エディタ画面10上又はエディタ画面10が有するプロジェクト名を取得して、第2サーバ300に送信する。第2サーバ300はプロジェクト名を利用して後述する種々の情報処理を実行し、除外申請推奨や修正推奨といった参考情報とチェック内容を組にして出力する。画面表示部111Bは、第2サーバ300から出力されたチェック内容と参考情報をエディタ画面10上に出力する。これにより、エディタ画面10上に表示されたソースコードSCの該当箇所の近傍にチェック内容と除外申請推奨や修正推奨といった参考情報とが出現するとともに、除外申請画面20を起動して表示させるためのマーカーが表示される。
さらに、エディタ画面10上に表示されたマーカーに対し、そのマーカーを指示する特定の操作(例えば右クリックなど)が行われると、除外申請画面20が開発端末100に表示される。さらに、除外申請画面20上に申請する理由などが入力されて申請を指示する特定の操作が行われると、除外申請部111Cはその特定の操作を検出し、除外申請画面20上に表示された申請内容などを第2サーバ300に送信する。
図4に戻り、チェック結果検索部312は開発端末100からプロジェクト名が送信されると、受信したプロジェクト名に基づいてチェック結果テーブルT1を検索する。チェック結果除外部313はチェック結果検索部312による検索結果としてのチェック結果を取得する。また、チェック結果検索部312は受信したプロジェクト名に基づいて除外ルールテーブルT2を検索する。チェック結果除外部313はチェック結果検索部312による検索結果としての除外ルールを取得する。チェック結果除外部313は取得した除外ルールを利用してチェック結果の一部を除外(フィルタリング)し、除外済みのチェック結果と除外ルールとを除外ルール履歴解析部314に出力する。すなわち、チェック結果除外部313は除外ルールに該当しないチェック結果を後続の処理対象から除外し、後続の処理で利用するチェック結果に絞り込む。
除外ルール履歴解析部314は除外済みのチェック結果と除外ルールを利用して、除外済みのチェック結果における推奨ステータスを更新する。これにより、除外済みのチェック結果には除外申請推奨や修正推奨といった参考情報が格納される。更新後、除外ルール履歴解析部314は推奨ステータスを更新した除外済みチェック結果をプラグインフォーマット型に変換し、チェック結果検索部312に出力する。尚、除外ルール履歴解析部314については後にさらに詳しく説明する。チェック結果検索部312はプラグインフォーマット型に変換された除外済みチェック結果をJSON形式に変換し、JSON形式に変換された除外済みのチェック結果に含まれるチェック内容と参考情報を開発端末100に出力する。これにより、上述した画面表示部111Bはチェック内容と参考情報をエディタ画面10上に出力することができる。
除外申請仮登録部315は開発端末100から送信された申請内容などを仮登録というステータスで除外ルールテーブルT2に登録する。一方、上述した除外ルール履歴解析部314は管理者端末400からの指示に基づいて、除外ルールテーブルT2から全ての除外ルールを取得して保持する。また、除外ルール履歴解析部314は管理者端末400からの別の指示に基づいて、申請内容と類似する除外ルールを抽出して保持する。管理者端末400は除外ルール履歴解析部314が保持する除外ルールを申請内容と併せて取得する。これにより、管理者端末400は申請内容とその申請内容に類似する除外ルールを表示することができる。除外申請登録部316は申請内容に対する対応に関する指示を検出すると、対応に応じたステータスに除外ルールを更新する。具体的には、除外申請登録部316は申請内容を承認する場合、除外ルールの仮登録を受領に書き換える。逆に、除外申請登録部316は申請内容を差し戻す場合、除外ルールの仮登録を差戻しに書き換える。
続いて、図8から図21を参照して、開発端末100、第1サーバ200、第2サーバ300、及び管理者端末400の各動作について説明する。
まず、図8及び図9を参照して、チェック結果の登録する処理について説明する。図8は第1サーバ200の動作の一例を示すフローチャートである。図9は第2サーバ300の動作の一例を示すフローチャートである。まず、図8に示すように、第1サーバ200のGit210はソースコードSCを受信するまで待機する(ステップS101:NO)。Git210はソースコードSCを受信すると(ステップS101:YES)、Git210はソースコードSCを記憶する(ステップS102)。ステップS102の処理が完了すると、次いで、継続的インテグレーション部220はGit210に記憶されたソースコードSCを取得する(ステップS103)。ステップS103の処理が完了すると、次いで、第1情報処理部230は継続的インテグレーション部220が取得したソースコードSCを複製する(ステップS104)。
ステップS104の処理が完了すると、次いで、第1静的解析部221A及び第2静的解析部221Bは継続的インテグレーション部220が取得したソースコードSCに対しそれぞれ静的解析を実行し、第3静的解析部231は第1情報処理部230が複製したソースコードSCに対し静的解析を実行する(ステップS105)。ステップS105の処理が完了すると、第1静的解析部221A、第2静的解析部221B及び第3静的解析部231はそれぞれ静的解析の解析結果をチェック結果として第2サーバ300にアップロードし(ステップS106)、処理を終了する。
一方、図9に示すように、第2サーバ300のチェック結果登録部311はチェック結果がアップロードされるまで待機する(ステップS201:NO)。チェック結果登録部311はチェック結果がアップロードされると(ステップS201:YES)、チェック結果をチェック結果テーブルT1に格納し(ステップS202)、処理を終了する。これにより、チェック結果テーブルT1はソースコードSCに対する静的解析のチェック結果を記憶する。
次に、図10から図12までを参照して、エディタ画面10に参考情報を表示するまでの処理について説明する。
図10は開発端末100の動作の一例を示すフローチャートである。図11はエディタ画面10の一例である。図12は第2サーバ300の動作の一例を示すフローチャートである。
まず、図10に示すように、プラグイン実行部111Aは特定操作を検出するまで待機する(ステップS301:NO)。具体的には、図11に示すように、プラグイン実行部111Aはエディタ画面10のメニューバーなどに表示された静的解析ツールを表す特定の文字列(例えばCodeG)に対し、特定操作(例えばクリック)が行われたことを検出するまで待機する。プラグイン実行部111Aは特定操作を検出すると(ステップS301:YES)、プラグインを実行する(ステップS302)。具体的には、プラグイン実行部111Aはエディタ画面10が有するプロジェクト名(不図示)を取得して第2サーバ300に送信する。これにより、エディタ画面10上に表示されたソースコードSCに対するチェック内容と参考情報の出力が開始する。ステップS302の処理が完了すると、画面表示部111Bはチェック内容等(具体的にはチェック内容及び参考情報)を受信するまで待機する(ステップS303:NO)。
一方、図12に示すように、第2サーバ300のチェック結果検索部312はプラグインが実行されるまで待機する(ステップS401:NO)。より詳しくは、チェック結果検索部312はプラグイン実行部111Aからプロジェクト名が送信されるまで待機する。チェック結果検索部312はプラグインが実行されたと判断すると(ステップS401:YES)、チェック結果テーブルを検索する(ステップS402)。より詳しくは、チェック結果検索部312はプロジェクト名に基づいてチェック結果テーブルT1を検索する。ステップS402の処理が完了すると、チェック結果除外部313はチェック結果を取得する(ステップS403)。より詳しくは、チェック結果除外部313はプロジェクト名に応じたチェック結果をチェック結果テーブルから取得する。
ステップS403の処理が完了すると、次いで、チェック結果検索部312は除外ルールテーブルT2を検索する(ステップS404)。より詳しくは、チェック結果検索部312はプロジェクト名に基づいて除外ルールテーブルT2を検索する。ステップS404の処理が完了すると、チェック結果除外部313は除外ルールを取得する(ステップS405)。より詳しくは、チェック結果除外部313はプロジェクト名に応じた除外ルールを除外ルールテーブルT2から取得する。
ステップS405の処理が完了すると、次いで、チェック結果除外部313は除外ルールを利用してチェック結果の一部を除外する(ステップS406)。例えば、取得したチェック結果と除外ルールの対応する構成要素同士を比較して、構成要素が一致するチェック結果に絞り込む。構成要素としては、例えばパッケージ、クラス、メソッドなどがある。すなわち、除外ルールを利用できない一部のチェック結果をチェック結果除外部313はフィルタリングして、除外済みのチェック結果を出力する。ステップS406の処理が完了すると、除外ルール履歴解析部314は履歴解析処理を実行する(ステップS407)。履歴解析処理は除外済みのチェック結果と同種類の除外ルールに対してなされた過去の対応履歴を解析し、除外済みのチェック結果の推奨ステータスに参考情報を登録する処理である。履歴解析処理については後に詳しく説明する。
ステップS407の処理が完了すると、除外ルール履歴解析部314はチェック結果を変換する(ステップS408)。より詳しくは、除外ルール履歴解析部314は除外済みのチェック結果をプラグインフォーマット型に変換し、チェック結果検索部312はプラグインフォーマット型に変換された除外済みのチェック結果をJSON形式に変換する。ステップS408が完了すると、チェック結果検索部312はチェック内容と参考情報を出力する(ステップS409)。より詳しくは、チェック結果検索部312はJSON形式に変換された除外済みのチェック結果に含まれるチェック内容と参考情報を開発端末100に送信する。
図10に戻り、第2サーバ300からチェック内容と参考情報が送信されると、開発端末100の画面表示部111Bはチェック内容と参考情報とを受信し(ステップS303:YES)、チェック内容と参考情報を表示する(ステップS304)。より詳しくは、画面表示部111Bはエディタ画面10上に表示されたソースコードSCの対応する箇所に、チェック内容としてのメッセージと参考情報を組みにして表示させるとともに、対応する箇所の近傍にマーカーを表示させる。これにより、図11に示すように、例えばソースコードSCの6行目の直下に静的解析による特定のメッセージ「〜〜〜してください。」と除外申請推奨である旨の組を含む1つの画像領域IM1内が出現する。そして、ソースコードSCの6行目の行番号の左脇にマーカーM1が出現する。同様に、例えばソースコードSCの15行目の直下に静的解析による特定のメッセージ「〜〜〜してください。」と修正推奨である旨の組を含む1つの画像領域IM2内が出現する。そして、ソースコードSCの15行目の行番号の左脇にマーカーM2が出現する。
この結果、開発者は静的解析によるメッセージだけで除外申請を行うか否か判断せず、メッセージと併せて出力された参考情報(具体的には除外申請推奨又は修正推奨)も確認して除外申請を行うか否か判断する。例えば、除外申請推奨が出力されていれば、開発者はその行に対するメッセージは無駄な指摘であり、除外申請を行えば承認される可能性が高いと判断し、除外申請を行うようになる。逆に、修正推奨が出力されていれば、開発者はその行に対するメッセージは有益な指摘であり、除外申請を行えば差し戻される可能性が高いと判断し、ソースコードSCの修正を行うようになる。
したがって、開発者はチェック結果のメッセージを個別に確認して除外申請の要否を決定する必要がなく、除外申請の手間が削減される。特に、納期間近など開発終盤に大量のチェック結果がフィードバックされると開発者の開発意欲がそがれるおそれがあるが、開発初期の段階で有益な指摘と無駄な指摘が区別されたチェック結果がフィードバックされる。このため、開発者は効率的にソースコードSCを修正でき、ソースコードSCの品質低下を抑制することができる。
ここで、図13から図15までを参照して、上述した履歴解析処理についてさらに詳しく説明する。
図13は履歴解析処理の一例を示すフローチャートである。図14は履歴解析処理を説明する図の一例である。図15は履歴解析処理を説明する図の他の一例である。図12を参照して説明したステップS406の処理が完了すると、図13に示すように、除外ルール履歴解析部314はチェック結果と除外ルールのそれぞれに対し階層文字列を生成する(ステップS501)。例えば、図14(a)に示すように、除外ルール履歴解析部314は、パッケージを表す文字列a.b(例えばcom.fujitsuなど)、クラスを表す文字列c(例えばBclassなど)、メソッドを表す文字列d(例えばcopyなど)をドットで結合した階層文字列a.b.c.dを生成する。尚、パッケージだけを利用する場合には、ステップS501の処理はスキップされる。
ステップS501の処理が完了すると、図13に示すように、除外ルール履歴解析部314はチェック結果の階層文字列と除外ルールの階層文字列をそれぞれ分割する(ステップS502)。例えば、図14(b)に示すように、階層文字列の最下階層から順に最上階層になるまでドット毎に分割し、メインメモリなどの記憶領域に保持する。
ステップS502の処理が完了すると、次いで、除外ルール履歴解析部314は除外ルールの除外申請受領件数と除外申請差戻件数を階層文字列毎に計数する(ステップS503)。より詳しくは、まず、除外ルール履歴解析部314は1つ目のチェック結果のルールIDと一致するルールIDの除外ルールを1つ抽出する。次に、除外ルール履歴解析部314は抽出した除外ルールのステータスに仮登録が格納されていれば、次の除外ルールを1つ抽出する。一方、除外ルール履歴解析部314はステータスに受領が格納されていれば、除外申請受領件数をインクリメントし、差戻が格納されていれば、除外申請差戻件数をインクリメントする。そして、次の除外ルールを1つ抽出する。除外ルール履歴解析部314は1つ目の除外済みのチェック結果に対してルールIDが一致する全ての除外ルールに対して同様の処理を行う。さらに、除外ルール履歴解析部314は1つ目の除外済みのチェック結果に対する処理が完了すると、2つ目以降のチェック結果に対しても同様の処理を行う。これにより、図14(c)に示すように、除外テーブルの各階層文字列に対し、除外申請受領件数と除外申請差戻件数が計数される。
ステップS503の処理が完了すると、次いで、除外ルール履歴解析部314は受領確度ポイントP1を算出し(ステップS504)、次いで、差戻確度ポイントP2を算出する(ステップS505)。図15(a)を参照して具体的に説明すると、除外ルール履歴解析部314は、まず、受領確度ポイントP1を算出するための計算テーブルT3と差戻確度ポイントP2を算出するための計算テーブルT4を生成する。次に、除外ルール履歴解析部314は、計算テーブルT3,T4のそれぞれに対し、同じ階層文字列を項目xとして列方向にマッピングし、項目yとして行方向にマッピングする。そして、除外ルール履歴解析部314は、階層差が存在する箇所全てに対し、受領確度基礎ポイントP1´及び差戻確度基礎ポイントP2´を算出する。最後に、除外ルール履歴解析部314は、受領確度基礎ポイントP1´の行方向の総和を受領確度ポイントP1として算出し、差戻確度基礎ポイントP2´の行方向の総和を差戻確度ポイントP2として算出する。
ここで、除外ルール履歴解析部314は、受領確度基礎ポイントP1´及び差戻確度基礎ポイントP2´のいずれも所定の算出関数f(x,y)を利用して算出する。算出関数f(x,y)は以下の式により表される。
算出関数f(x,y)=(階層上昇係数^階層上昇数)
×(階層下降係数^階層下降数)
×(xの受領件数又は差戻件数)
上述した階層上昇係数及び階層下降係数は階層の関連度(例えば距離)を表しており、階層上昇係数より階層下降係数の方に大きな値が設定される。例えば階層上昇係数に0.1が設定されれば、階層下降係数には0.5が設定される。すなわち、上位の階層文字列になればなるほど、階層文字列の下位には互いに異なる階層文字列が増加し、関連度が薄くなる。逆に、下位の階層文字列になればなるほど、階層文字列の下位には互いに異なる階層文字列が減少し、関連度が高くなる。このため、階層上昇係数より階層下降係数の方に大きな値が設定される。
また、階層上昇数及び階層下降数は階層文字列の後方不一致階層数を表している。例えば、列方向に展開した階層文字列aと行方向に展開した階層文字列a.bは後方不一致階層数が1であり、階層文字列aを基準とすると階層文字列a.bでは下位に.bが結合されているため、階層は下降している。例えば、列方向に展開した階層文字列a.b.c.dと行方向に展開した階層文字列aは後方不一致階層数が3であり、階層文字列a.b.c.dを基準とすると階層文字列aでは下位に何も結合されていないため、階層は上昇している。したがって、図15(a)に示すように、計算テーブルT3,T4は階層上昇ゾーンZ1と階層下降ゾーンZ2とに大別される。そして、xの受領件数又は差戻件数は、ステップS503の処理で算出された除外申請受領件数と除外申請差戻件数に対応する。以上の処理により、除外ルール履歴解析部314は受領確度ポイントP1と差戻確度ポイントP2を算出する。尚、除外ルール履歴解析部314は、項目xと項目yをマッピングした計算テーブルT3,T4を出力してもよく、さらに、算出した受領確度ポイントP1と差戻確度ポイントP2も含めた計算テーブルT3,T4を出力してもよい。
図13に戻り、ステップS505の処理が完了すると、次いで、除外ルール履歴解析部314は受領確度ポイントP1が差戻確度ポイントP2より大きいか否かを判断する(ステップS506)。除外ルール履歴解析部314は受領確度ポイントP1が差戻確度ポイントP2より大きいと判断した場合(ステップS506:YES)、さらに、受領確度ポイントP1が閾値を超えているか否かを判断する(ステップS507)。除外ルール履歴解析部314は受領確度ポイントP1が閾値を超えていると判断した場合(ステップS507:YES)、除外済みチェック結果の推奨ステータスを除外推奨に更新し(ステップS508)、処理を終了する。一方、除外ルール履歴解析部314は受領確度ポイントP1が閾値を超えていないと判断した場合(ステップS507:NO)、ステップS508の処理をスキップし、処理を終了する。
逆に、除外ルール履歴解析部314は受領確度ポイントP1が差戻確度ポイントP2より以下であると判断した場合(ステップS506:NO)、さらに、差戻確度ポイントP2が閾値を超えているか否かを判断する(ステップS509)。除外ルール履歴解析部314は差戻確度ポイントP2が閾値を超えていると判断した場合(ステップS509:YES)、除外済みチェック結果の推奨ステータスを修正推奨に更新し(ステップS510)、処理を終了する。一方、除外ルール履歴解析部314は差戻確度ポイントP2が閾値を超えていないと判断した場合(ステップS509:NO)、ステップS510の処理をスキップし、処理を終了する。
すなわち、図15(b)に示すように、受領確度ポイントP1と差戻確度ポイントP2の大小関係が判断され、ポイント値が大きい方が選択される。そして、選択された方が所定の閾値(例えば10ポイント)を超えていれば、選択された方が採用される。図15(b)では受領確度ポイントP1が採用されて閾値を超えているため、除外申請推奨となるが、逆に、差戻確度ポイントP2が採用されて閾値を超えていれば、修正推奨となる。
このように、履歴解析処理では、静的解析の指摘件数がパッケージなどの階層によって偏る傾向を利用している。除外申請されている階層文字列と、同じ種類の指摘が出力された過去の階層文字列の関連度を比較して、受領確度ポイントP1及び差戻確度ポイントP2が算出される。
続いて、図16から図21などを参照して、除外申請及びその認否判断について説明する。
図16は開発端末100の動作の一例を示すフローチャートである。図17は除外申請画面20の一例である。図18は第2サーバ300の動作の一例を示すフローチャートである。図19は管理者端末400の動作の一例を示すフローチャートである。図20は除外申請一覧画面30の一例である。図21は除外申請確認画面40の一例である。
まず、図16に示すように、除外申請部111CはマーカーM1,M2の操作を検出するまで待機する(ステップS601:NO)。除外申請部111CはマーカーM1,M2の操作を検出すると(ステップS601:YES)、除外申請画面20を表示する(ステップS602)。
図17を参照して具体的に説明すると、エディタ画面10(図11参照)上に表示されたマーカーM1,M2に対し、マーカーM1,M2を指示する特定の操作(例えば右クリックなど)が行われると、図17に示すように、除外申請部111Cは除外申請画面20を表示する。除外申請画面20はツール名、ルールID、パッケージ、クラス、メソッド、メッセージ、チーム名、及び氏名を表示する表示欄Bx1、申請理由を入力する入力欄Bx2、並びに申請ボタンBt1及びキャンセルボタンBt2を含んでいる。除外申請部111CはマーカーM1,M2を指示する特定の操作を検出すると、指示したマーカーM1(又はマーカーM2)と関連付けられたツール名から氏名までをそれぞれ対応する表示欄Bx1に表示する。したがって、除外申請画面20を利用して除外申請を行う開発者は入力欄Bx2に対して除外申請を行う理由を入力する。
図16に戻り、ステップS602の処理が完了すると、除外申請部111Cは申請ボタン押下を検出するまで待機する(ステップS603:NO)。具体的には、図17に示すように、除外申請画面20に含まれる申請ボタンBt1を押下する操作を除外申請部111Cが検出するまで待機する。除外申請部111Cは申請ボタン押下を検出すると(ステップS603:YES)、除外申請部111Cは申請内容を送信する(ステップS604)。すなわち、除外申請部111Cは表示欄Bx1に表示された事項及び入力欄Bx2に入力された事項、その他の事項(例えば申請日、行番号、プロジェクト名など)を含む申請内容を第2サーバ300に送信する。
一方、図18に示すように、第2サーバ300の除外申請仮登録部315は申請内容を受信するまで待機する(ステップS701:NO)。除外申請仮登録部315は申請内容を受信すると(ステップS701:YES)、申請内容を除外ルールテーブルT2に仮登録する(ステップS702)。ステップS702の処理が完了すると、除外ルール履歴解析部314は一覧画面の起動を検出するまで待機する(ステップS703:NO)。一覧画面は後述する除外申請一覧画面を表している。除外ルール履歴解析部314は一覧画面の起動を検出すると(ステップS703:YES)、除外ルールテーブルT2から全ての除外ルールを取得する(ステップS704)。除外ルール履歴解析部314は全ての除外ルールを取得すると、取得した全ての除外ルールを保持する。
他方、図19に示すように、管理者端末400が備える第4情報処理部(不図示)は一覧画面が起動されるまで待機する(ステップS801:NO)。第4情報処理部は一覧画面が起動されると(ステップS801:YES)、第2サーバ300(より詳しくは除外ルール履歴解析部314)から全ての除外ルールを取得する(ステップS802)。ステップS802の処理が完了すると、第4情報処理部は除外申請一覧画面を表示する(ステップS803)。
図20を参照して除外申請一覧画面30について具体的に説明すると、除外申請一覧画面30には第4情報処理部が取得した除外ルールにおける一部の構成要素が出現する。例えば、除外ルールにおけるプロジェクト名、チーム名、申請日、申請者、ツール名、及びルールIDが出現する。構成要素の内容及び数は適宜変更してもよい。また、出現した除外ルールの一部の構成要素を表す行には選択ボタンBt3が対応付けられている。これにより、管理者は除外申請の申請状況を把握することができる。
図19に戻り、ステップS803の処理が完了すると、第4情報処理部は選択ボタンBt3が押下されるまで待機する(ステップS804:NO)。また、図18に示すように、除外ルール履歴解析部314はステップS704の処理が完了すると、選択ボタンBt3の押下を検出するまで待機する(ステップS705:NO)。
ここで、除外ルール履歴解析部314は選択ボタンBt3の押下を検出すると(ステップS705:YES)、自身が保持する除外ルールの中から選択ボタンBt3と対応付けられた申請内容と類似する除外ルールを抽出する(ステップS706)。ステップS706の処理が完了すると、除外ルール履歴解析部314は抽出した除外ルールを保持する。
一方、図19に示すように、第4情報処理部は選択ボタンBt3が押下されると(ステップS804:YES)、第2サーバから申請内容とその申請内容に類似する除外ルールを取得する(ステップS805)。ステップS805の処理が完了すると、第4情報処理部は除外申請確認画面を表示する(ステップS806)。
図21を参照して除外申請確認画面40について具体的に説明すると、除外申請確認画面40には第4情報処理部が取得した申請内容41と除外ルール42が出現する。また、除外申請確認画面40には除外申請の承認又は差戻しを選択する選択ボタンBt4、コメントの入力欄Bx3、登録ボタンBt5、キャンセルボタンBt6が出現する。管理者は除外申請確認画面40により申請内容41と類似する過去の除外申請履歴の受領状況や差戻状況を確認して、申請内容41に対する対応として承認又は差戻しを選択ボタンBt4により選択する。その際、管理者は入力欄Bx3に対し承認又は差戻しを選択した理由をコメントとして入力し、登録ボタンBt5を押下する。
ここで、図19に示すように、第4情報処理部は登録ボタンBt5が押下されるまで待機し(ステップS807:NO)、登録ボタンBt5が押下されると(ステップS807:YES)、承認又は差戻しを送信する(ステップS808)。より詳しくは、第4情報処理部は選択ボタンBt4により選択された方の対応を第2サーバ300に送信する。
一方、図18に示すように、除外申請登録部316は管理者端末400から承認等を受信するまで待機し(ステップS707:NO)、承認等を受信すると(ステップS707:YES)、申請内容を本登録する(ステップS708)。すなわち、除外申請登録部316は対象の除外申請に対して承認が選択された場合には、その除外申請の申請内容を含む除外ルールのステータスを仮登録から受領に書き換える。逆に、除外申請登録部316は対象の除外申請に対して差戻しが選択された場合には、その除外申請の申請内容を含む除外ルールのステータスを仮登録から差戻しに書き換える。これにより、ステータスに受領や差戻しが格納された除外ルールが蓄積される。この除外ルールは次の参考情報の出力の際に利用されるため、適切な参考情報の出力精度が向上する。
このように、管理者は除外申請を行った開発者に例えば電話でその都度申請理由を確認しないで済み、管理者と開発者との間で発生する無駄なコミュニケーションを削減することができる。
以上、本発明の好ましい実施形態について詳述したが、本発明に係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。例えば、本実施形態では参考情報として特定の文字列(除外申請推奨及び修正推奨)を表示したが、例えば参考情報を○や×といった記号で表示してもよい。
なお、以上の説明に関して更に以下の付記を開示する。
(付記1)複数の階層により階層化されたプログラムの解析結果を取得し、取得した前記解析結果に含まれる特定のチェック内容を、前記プログラムの対応する箇所と対応付けて表示させる際、過去のチェック内容の除外申請の情報が記憶された記憶部を参照し、前記特定のチェック内容と同種類のチェック内容の除外申請を特定し、前記同種類のチェック内容の除外申請の申請結果と、前記プログラムにおける前記特定のチェック内容の前記複数の階層における位置と前記同種類のチェック内容の前記複数の階層における位置との差分と、に応じた、前記特定のチェック内容についての除外申請に関する参考情報を出力する、処理をコンピュータに実行させることを特徴とする参考情報出力プログラム。
(付記2)前記参考情報は、前記特定のチェック内容の除外申請を推奨する除外申請推奨の表示、又は、前記プログラムの対応する箇所の修正を推奨する修正推奨の表示を含む、ことを特徴とする付記1に記載の参考情報出力プログラム。
(付記3)前記特定のチェック内容を表示させる際、ユーザの属性を特定し、前記解析結果に含まれるチェック内容のうち、特定した前記属性に対応する他のチェック内容のみ表示させる、ことを特徴とする付記1又は2に記載の参考情報出力プログラム。
(付記4)複数の階層により階層化されたプログラムの解析結果に含まれる特定のチェック内容について除外申請を受け付けると、過去のチェック内容の除外申請の情報が記憶された記憶部を参照し、前記特定のチェック内容と同種類のチェック内容の除外申請を特定し、前記同種類のチェック内容の除外申請の申請結果と、前記特定のチェック内容の前記複数の階層における位置と前記同種類のチェック内容の前記複数の階層における位置との差分と、に応じた、前記特定のチェック内容についての除外申請の認否判断に関する参考情報を出力する、処理をコンピュータに実行させることを特徴とする参考情報出力プログラム。
(付記5)前記認否判断に関する参考情報は、承認又は差戻しの選択である、ことを特徴とする付記4に記載の参考情報出力プログラム。
(付記6)複数の階層により階層化されたプログラムの解析結果に含まれる特定のチェック内容について除外申請を受け付けると、過去のチェック内容の除外申請の情報が記憶された記憶部を参照し、前記特定のチェック内容と同種類のチェック内容を特定し、前記複数の階層のうち、前記特定のチェック内容を示す情報と前記同種類のチェック内容を示す情報とのそれぞれを、対応する位置にマッピングした図を出力する、処理をコンピュータに実行させることを特徴とする出力プログラム。
(付記7)複数の階層により階層化されたプログラムの解析結果を取得し、取得した前記解析結果に含まれる特定のチェック内容を、前記プログラムの対応する箇所と対応付けて表示させる際、過去のチェック内容の除外申請の情報が記憶された記憶部を参照し、前記特定のチェック内容と同種類のチェック内容の除外申請を特定し、前記同種類のチェック内容の除外申請の申請結果と、前記プログラムにおける前記特定のチェック内容の前記複数の階層における位置と前記同種類のチェック内容の前記複数の階層における位置との差分と、に応じた、前記特定のチェック内容についての除外申請に関する参考情報を出力する、処理をコンピュータが実行することを特徴とする参考情報出力方法。
(付記8)複数の階層により階層化されたプログラムの解析結果に含まれる特定のチェック内容について除外申請を受け付けると、過去のチェック内容の除外申請の情報が記憶された記憶部を参照し、前記特定のチェック内容と同種類のチェック内容の除外申請を特定し、前記同種類のチェック内容の除外申請の申請結果と、前記特定のチェック内容の前記複数の階層における位置と前記同種類のチェック内容の前記複数の階層における位置との差分と、に応じた、前記特定のチェック内容についての除外申請の認否判断に関する参考情報を出力する、処理をコンピュータが実行することを特徴とする参考情報出力方法。
(付記9)複数の階層により階層化されたプログラムの解析結果を取得し、取得した前記解析結果に含まれる特定のチェック内容を、前記プログラムの対応する箇所と対応付けて表示させる際、過去のチェック内容の除外申請の情報が記憶された記憶部を参照し、前記特定のチェック内容と同種類のチェック内容の除外申請を特定し、前記同種類のチェック内容の除外申請の申請結果と、前記プログラムにおける前記特定のチェック内容の前記複数の階層における位置と前記同種類のチェック内容の前記複数の階層における位置との差分と、に応じた、前記特定のチェック内容についての除外申請に関する参考情報を出力する、処理を実行する処理部を有する参考情報出力装置。
(付記10)前記参考情報は、前記特定のチェック内容の除外申請を推奨する除外申請推奨の表示、又は、前記プログラムの対応する箇所の修正を推奨する修正推奨の表示を含む、ことを特徴とする付記9に記載の参考情報出力装置。
(付記11)前記処理部は、前記特定のチェック内容を表示させる際、ユーザの属性を特定し、前記解析結果に含まれるチェック内容のうち、特定した前記属性に対応する他のチェック内容のみ表示させる、ことを特徴とする付記9又は10に記載の参考情報出力装置。
(付記12)複数の階層により階層化されたプログラムの解析結果に含まれる特定のチェック内容について除外申請を受け付けると、過去のチェック内容の除外申請の情報が記憶された記憶部を参照し、前記特定のチェック内容と同種類のチェック内容の除外申請を特定し、前記同種類のチェック内容の除外申請の申請結果と、前記特定のチェック内容の前記複数の階層における位置と前記同種類のチェック内容の前記複数の階層における位置との差分と、に応じた、前記特定のチェック内容についての除外申請の認否判断に関する参考情報を出力する、処理を実行する処理部を有する参考情報出力装置。
(付記13)前記認否判断に関する参考情報は、承認又は差戻しの選択である、ことを特徴とする付記12に記載の参考情報出力装置。
S 参考情報出力システム
100 開発端末
200 第1サーバ
300 第2サーバ
310 第2情報処理部
311 チェック結果登録部
312 チェック結果検索部
313 チェック結果除外部
314 除外ルール履歴解析部
315 除外申請仮登録部
316 除外申請登録部
400 管理者端末
T1 チェック結果テーブル
T2 除外ルールテーブル

Claims (10)

  1. 複数の階層により階層化されたプログラムの解析結果を取得し、
    取得した前記解析結果に含まれる特定のチェック内容を、前記プログラムの対応する箇所と対応付けて表示させる際、過去のチェック内容の除外申請の情報が記憶された記憶部を参照し、前記特定のチェック内容と同種類のチェック内容の除外申請を特定し、
    前記同種類のチェック内容の除外申請の申請結果と、前記プログラムにおける前記特定のチェック内容の前記複数の階層における位置と前記同種類のチェック内容の前記複数の階層における位置との差分と、に応じた、前記特定のチェック内容についての除外申請に関する参考情報を出力する、
    処理をコンピュータに実行させることを特徴とする参考情報出力プログラム。
  2. 前記参考情報は、前記特定のチェック内容の除外申請を推奨する除外申請推奨の表示、又は、前記プログラムの対応する箇所の修正を推奨する修正推奨の表示を含む、
    ことを特徴とする請求項1に記載の参考情報出力プログラム。
  3. 前記特定のチェック内容を表示させる際、ユーザの属性を特定し、
    前記解析結果に含まれるチェック内容のうち、特定した前記属性に対応する他のチェック内容のみ表示させる、
    ことを特徴とする請求項1又は2に記載の参考情報出力プログラム。
  4. 複数の階層により階層化されたプログラムの解析結果に含まれる特定のチェック内容について除外申請を受け付けると、過去のチェック内容の除外申請の情報が記憶された記憶部を参照し、前記特定のチェック内容と同種類のチェック内容の除外申請を特定し、
    前記同種類のチェック内容の除外申請の申請結果と、前記特定のチェック内容の前記複数の階層における位置と前記同種類のチェック内容の前記複数の階層における位置との差分と、に応じた、前記特定のチェック内容についての除外申請の認否判断に関する参考情報を出力する、
    処理をコンピュータに実行させることを特徴とする参考情報出力プログラム。
  5. 前記認否判断に関する参考情報は、承認又は差戻しの選択である、
    ことを特徴とする請求項4に記載の参考情報出力プログラム。
  6. 複数の階層により階層化されたプログラムの解析結果に含まれる特定のチェック内容について除外申請を受け付けると、過去のチェック内容の除外申請の情報が記憶された記憶部を参照し、前記特定のチェック内容と同種類のチェック内容を特定し、
    前記複数の階層のうち、前記特定のチェック内容を示す情報と前記同種類のチェック内容を示す情報とのそれぞれを、対応する位置にマッピングした図を出力する、
    処理をコンピュータに実行させることを特徴とする出力プログラム。
  7. 複数の階層により階層化されたプログラムの解析結果を取得し、
    取得した前記解析結果に含まれる特定のチェック内容を、前記プログラムの対応する箇所と対応付けて表示させる際、過去のチェック内容の除外申請の情報が記憶された記憶部を参照し、前記特定のチェック内容と同種類のチェック内容の除外申請を特定し、
    前記同種類のチェック内容の除外申請の申請結果と、前記プログラムにおける前記特定のチェック内容の前記複数の階層における位置と前記同種類のチェック内容の前記複数の階層における位置との差分と、に応じた、前記特定のチェック内容についての除外申請に関する参考情報を出力する、
    処理をコンピュータが実行することを特徴とする参考情報出力方法。
  8. 複数の階層により階層化されたプログラムの解析結果に含まれる特定のチェック内容について除外申請を受け付けると、過去のチェック内容の除外申請の情報が記憶された記憶部を参照し、前記特定のチェック内容と同種類のチェック内容の除外申請を特定し、
    前記同種類のチェック内容の除外申請の申請結果と、前記特定のチェック内容の前記複数の階層における位置と前記同種類のチェック内容の前記複数の階層における位置との差分と、に応じた、前記特定のチェック内容についての除外申請の認否判断に関する参考情報を出力する、
    処理をコンピュータが実行することを特徴とする参考情報出力方法。
  9. 複数の階層により階層化されたプログラムの解析結果を取得し、
    取得した前記解析結果に含まれる特定のチェック内容を、前記プログラムの対応する箇所と対応付けて表示させる際、過去のチェック内容の除外申請の情報が記憶された記憶部を参照し、前記特定のチェック内容と同種類のチェック内容の除外申請を特定し、
    前記同種類のチェック内容の除外申請の申請結果と、前記プログラムにおける前記特定のチェック内容の前記複数の階層における位置と前記同種類のチェック内容の前記複数の階層における位置との差分と、に応じた、前記特定のチェック内容についての除外申請に関する参考情報を出力する、
    処理を実行する処理部を有する参考情報出力装置。
  10. 複数の階層により階層化されたプログラムの解析結果に含まれる特定のチェック内容について除外申請を受け付けると、過去のチェック内容の除外申請の情報が記憶された記憶部を参照し、前記特定のチェック内容と同種類のチェック内容の除外申請を特定し、
    前記同種類のチェック内容の除外申請の申請結果と、前記特定のチェック内容の前記複数の階層における位置と前記同種類のチェック内容の前記複数の階層における位置との差分と、に応じた、前記特定のチェック内容についての除外申請の認否判断に関する参考情報を出力する、
    処理を実行する処理部を有する参考情報出力装置。
JP2016180869A 2016-09-15 2016-09-15 参考情報出力プログラム、参考情報出力方法、及び参考情報出力装置 Active JP6840966B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2016180869A JP6840966B2 (ja) 2016-09-15 2016-09-15 参考情報出力プログラム、参考情報出力方法、及び参考情報出力装置
US15/651,890 US10318258B2 (en) 2016-09-15 2017-07-17 Reference information output method and reference information output device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016180869A JP6840966B2 (ja) 2016-09-15 2016-09-15 参考情報出力プログラム、参考情報出力方法、及び参考情報出力装置

Publications (2)

Publication Number Publication Date
JP2018045525A true JP2018045525A (ja) 2018-03-22
JP6840966B2 JP6840966B2 (ja) 2021-03-10

Family

ID=61559998

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016180869A Active JP6840966B2 (ja) 2016-09-15 2016-09-15 参考情報出力プログラム、参考情報出力方法、及び参考情報出力装置

Country Status (2)

Country Link
US (1) US10318258B2 (ja)
JP (1) JP6840966B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111766848B (zh) * 2020-06-29 2021-09-10 北京广利核系统工程有限公司 仪控系统中子系统的拒动率验证方法和装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006092475A (ja) * 2004-09-27 2006-04-06 Hitachi Software Eng Co Ltd ソースコードインスペクションシステム

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7430670B1 (en) * 1999-07-29 2008-09-30 Intertrust Technologies Corp. Software self-defense systems and methods
US7478385B2 (en) * 2003-01-17 2009-01-13 National Instruments Corporation Installing software using programmatic component dependency analysis
US20040181790A1 (en) * 2003-03-12 2004-09-16 Herrick Joseph W. System and method for maintaining installed software compliance with build standards
US7604138B2 (en) * 2003-08-12 2009-10-20 Koninklijke Philips Electronics N.V. Closure device for a container
US7574706B2 (en) * 2003-12-15 2009-08-11 Microsoft Corporation System and method for managing and communicating software updates
US20060075001A1 (en) * 2004-09-30 2006-04-06 Canning Jeffrey C System, method and program to distribute program updates
US7555551B1 (en) * 2005-04-13 2009-06-30 Symantec Corporation Automatic controllable deployment of software updates
US7774760B2 (en) * 2005-12-23 2010-08-10 Microsoft Corporation Tracing errors in software
US20100002392A1 (en) * 2008-07-07 2010-01-07 I-Ming Liu Assembled Heat Sink Structure
US8347272B2 (en) * 2008-07-23 2013-01-01 International Business Machines Corporation Call graph dependency extraction by static source code analysis
JP5335885B2 (ja) 2011-12-26 2013-11-06 みずほ情報総研株式会社 解析結果評価システム、解析結果評価方法及び解析結果評価プログラム
JP5901668B2 (ja) 2013-02-28 2016-04-13 タタ コンサルタンシー サービシズ リミテッドTATA Consultancy Services Limited 静的解析中に発生した警告をグループ化するシステムおよび方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006092475A (ja) * 2004-09-27 2006-04-06 Hitachi Software Eng Co Ltd ソースコードインスペクションシステム

Also Published As

Publication number Publication date
US20180074801A1 (en) 2018-03-15
JP6840966B2 (ja) 2021-03-10
US10318258B2 (en) 2019-06-11

Similar Documents

Publication Publication Date Title
US9652441B2 (en) System and method for creation of templates
US10565293B2 (en) Synchronizing DOM element references
US10031746B2 (en) Analyzing components related to a software application in a software development environment
US9785421B1 (en) External dependency attribution
US10901585B2 (en) Iterative detection of forms-usage patterns
JPWO2011118003A1 (ja) ウェブアプリケーション構築システム、ウェブアプリケーション構築方法、ウェブアプリケーション構築プログラムおよびウェブアプリケーション構築プログラムを記録した記録媒体
US9990348B2 (en) System and method for managing data using a spreadsheet model
CN103703462A (zh) 包括呈现版本化后的元数据的起源和谱系的元数据版本化
CN108885444B (zh) 信息管理装置、信息管理方法及信息管理系统
US20140052758A1 (en) Techniques Providing A Software Fitting Assessment
JP6840966B2 (ja) 参考情報出力プログラム、参考情報出力方法、及び参考情報出力装置
JP6446819B2 (ja) 文書差分表示プログラム及び情報処理装置
JP2006277644A (ja) データ移行支援システム及びデータ移行支援プログラム
JP2009253847A (ja) 情報処理装置およびその制御方法、プログラム、記憶媒体
US9135267B2 (en) Method for adding real time collaboration to existing data structure
US20150254366A1 (en) Application software, electronic forms, and associated methods
US20210397745A1 (en) Data providing server device and data providing method
JP2017072957A (ja) ファイル編集方法、ファイル編集装置及びファイル編集プログラム
US20150213158A1 (en) System and method for creating a design for home improvements
JP6336922B2 (ja) 業務バリエーションに基づく業務影響箇所抽出方法および業務影響箇所抽出装置
WO2022018899A1 (ja) Kpiツリーから部分ツリーを抽出するシステム
EP3591481A1 (en) Device configuration management apparatus, system, and program
JP5532052B2 (ja) 評価モデル分析システム、評価モデル分析方法およびプログラム
JP6703925B2 (ja) 見積装置、プログラム
US20190035038A1 (en) Revision Tracking and Storage for Contract Renewals

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190611

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200423

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200526

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200717

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201006

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201126

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: 20210119

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210201

R150 Certificate of patent or registration of utility model

Ref document number: 6840966

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150