JP7114959B2 - プログラム、情報処理方法、及び情報処理装置 - Google Patents

プログラム、情報処理方法、及び情報処理装置 Download PDF

Info

Publication number
JP7114959B2
JP7114959B2 JP2018049093A JP2018049093A JP7114959B2 JP 7114959 B2 JP7114959 B2 JP 7114959B2 JP 2018049093 A JP2018049093 A JP 2018049093A JP 2018049093 A JP2018049093 A JP 2018049093A JP 7114959 B2 JP7114959 B2 JP 7114959B2
Authority
JP
Japan
Prior art keywords
source code
evaluation
image
color information
characters
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2018049093A
Other languages
English (en)
Other versions
JP2018156654A (ja
Inventor
徹 手塚
雅稔 森崎
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
Publication of JP2018156654A publication Critical patent/JP2018156654A/ja
Application granted granted Critical
Publication of JP7114959B2 publication Critical patent/JP7114959B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3624Software debugging by performing operations on the source code, e.g. via a compiler
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3608Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/33Intelligent editors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/73Program documentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/10Interfaces, programming languages or software development kits, e.g. for simulating neural networks
    • G06N3/105Shells for specifying net layout

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • General Health & Medical Sciences (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Biophysics (AREA)
  • Evolutionary Computation (AREA)
  • Biomedical Technology (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Library & Information Science (AREA)
  • Stored Programmes (AREA)
  • Image Analysis (AREA)

Description

本件は、プログラム、情報処理方法、及び情報処理装置に関する。
ソースコードに対する静的解析が知られている(例えば特許文献1参照)。静的解析により例えばコーディング規約違反といった品質に関する問題が発見される。ソースコードが静的解析を通過すると、レビューアなどと呼ばれるソースコードの評価担当者がそのソースコードを評価(レビュー)する。評価担当者は静的解析の解析結果を踏まえつつ、さらに、ソースコードの保守性の高さや潜在的なバグの少なさといった評価観点でそのソースコードを評価する。
特開2013-134521号公報
しかしながら、評価担当者はソースコードを目視により評価するため、効率的でないという問題がある。また、ソースコードに限らず、評価や検証の対象である文書を、担当者が目視で評価や検証する場合には、同様に、効率的ではないという問題がある。
そこで、1つの側面では、ソースコード等の文書を効率的に評価できるプログラム、情報処理方法、及び情報処理装置を提供することを目的とする。
1つの実施態様では、プログラムは、ソースコードを取得し、文字の種別に応じて文字を色に置き換えるルールに従って、前記ソースコードについて変換処理を実行して色情報の画像を生成し、生成した前記色情報の画像を出力する、処理をコンピュータに実行させる。
ソースコード等の文書を効率的に評価することができる。
図1は第1実施形態に係るソースコードレビューシステムの一例である。 図2はサーバ装置のハードウェア構成の一例である。 図3は第1実施形態に係るサーバ装置のブロック図の一例である。 図4(a)は教師データ生成画面の一例である。図4(b)は学習対象記憶部の一例である。 図5はサーバ装置の動作の一例を示すフローチャートである。 図6は学習部生成処理の一例を示すフローチャートである。 図7は第1実施形態に係る画像化ツールの処理の一例を説明するための図である。 図8(a)は可読性評価用マッピングルールの一例である。図8(b)は可読性評価用マッピングルールに基づく置換の一例を説明する図である。 図9(a)は複雑度評価用マッピングルールの一例である。図9(b)は複雑度評価用マッピングルールに基づく置換の一例を説明する図である。 図10(a)はコメント密度評価用マッピングルールの一例である。図10(b)はコメント密度評価用マッピングルールに基づく置換の一例を説明する図である。 図11は評価処理の一例を示すフローチャートである。 図12はソースコード評価処理の一例を示すフローチャートである。 図13(a)~(d)は評価結果の一例を説明するための図である。 図14は第2実施形態に係る画像化ツールの処理の一例を説明するための図(その1)である。 図15は第2実施形態に係る画像化ツールの処理の一例を説明するための図(その2)である。 図16は第3実施形態に係るコードレビューシステムの一例である。 図17は第3実施形態に係る制御装置とサーバ装置のブロック図の一例である。 図18(a)は評価済画像記憶部の一例である。図18(b)は未評価画像記憶部の一例である。
以下では、評価や検証の対象の文書が、ソースコードであるとして説明を行う。まず、本件の実施形態を説明する前に、比較例を簡単に説明する。例えば、静的解析を通過したソースコードが評価担当者に集中すると、評価担当者は目視によりソースコードを評価するため、評価担当者に負荷がかかるという問題がある。なお、この問題は評価や検証の対象がソースコード以外の文書であっても、同様である。このような場合、評価担当者が行う評価の一部を例えば人工知能によって実現することが想定される。評価担当者の評価観点を教師データとして人工知能が学習できれば、ソースコードに対する一部の評価を人工知能が担当するため、評価担当者の負荷は低減する。
しかしながら、ソースコードの一部をスクリーンショットにより切り出した画像とその画像に対する評価とを教師データとして人工知能に投入して学習させる場合、投入する画像の大きさはスクリーンの大きさ(具体的にはディスプレイの大きさ)に相当する。このような大きさの画像を人工知能に投入して学習させる場合、教師データの学習に時間がかかるという課題がある。そこで、学習時間が少ない教師データを生成できる実施形態を説明する。
以下、本件を実施するための形態について図面を参照して説明する。
(第1実施形態)
図1は第1実施形態に係るソースコードレビューシステムS1の一例である。ソースコードレビューシステムS1は端末装置100と情報処理装置としてのサーバ装置200を含んでいる。端末装置100とサーバ装置200は同一の拠点(例えばオフィスなど)内に設置される。端末装置100とサーバ装置200は通信ネットワークNWによって接続されている。通信ネットワークNWとしては例えばLocal Area Network(LAN)がある。尚、図1において、端末装置100の一例としてPersonal Computer(PC)が示されているが、端末装置100はPCに限定されず、例えばスマートフォンやタブレット端末といったスマートデバイスであってもよい。
端末装置100は入力装置110と表示装置120と制御装置130とを含んでいる。制御装置130は入力装置110からの情報の入力を受け付けて、表示装置120の表示内容を制御する。また、制御装置130は入力装置110からの入力を受け付けて各種の情報をサーバ装置200に送信したり、サーバ装置200から送信された各種の情報を受信したりする。例えば、入力装置110から評価対象のソースコードに対する評価を要求する情報を入力すると、制御装置130はその情報の入力を受け付けて、サーバ装置300にソースコードの評価を要求する。サーバ装置200はその要求を受信すると、評価対象のソースコードを評価し、評価結果を制御装置130に送信する。制御装置130は評価結果を受信すると、表示装置120に評価結果を表示する。
以下、図面を参照して、サーバ装置200の詳細について説明する。
図2はサーバ装置200のハードウェア構成の一例である。尚、上述した端末装置100は基本的にサーバ装置200と同様のハードウェア構成であるため、説明を省略する。
図2に示すように、サーバ装置200は、少なくともCentral Processing Unit(CPU)200A、Random Access Memory(RAM)200B、Read Only Memory(ROM)200C及びネットワークI/F(インタフェース)200Dを含んでいる。サーバ装置200は、必要に応じて、Hard Disk Drive(HDD)200E、入力I/F200F、出力I/F200G、入出力I/F200H、ドライブ装置200Iの少なくとも1つを含んでいてもよい。CPU200Aからドライブ装置200Iまでは、内部バス200Jによって互いに接続されている。少なくともCPU200AとRAM200Bとが協働することによってコンピュータが実現される。
入力I/F200Fには、入力装置710が接続される。入力装置710としては、例えばキーボードやマウスなどがある。尚、上述した入力装置110も基本的に入力装置710と同様である。
出力I/F200Gには、表示装置720が接続される。表示装置720としては、例えば液晶ディスプレイがある。尚、上述した表示装置120も基本的に表示装置720と同様である。
入出力I/F200Hには、半導体メモリ730が接続される。半導体メモリ730としては、例えばUniversal Serial Bus(USB)メモリやフラッシュメモリなどがある。入出力I/F200Hは、半導体メモリ730に記憶されたプログラムやデータを読み取る。
入力I/F200F及び入出力I/F200Hは、例えばUSBポートを備えている。出力I/F200Gは、例えばディスプレイポートを備えている。
ドライブ装置200Iには、可搬型記録媒体740が挿入される。可搬型記録媒体740としては、例えばCompact Disc(CD)-ROM、Digital Versatile Disc(DVD)といったリムーバブルディスクがある。ドライブ装置200Iは、可搬型記録媒体740に記録されたプログラムやデータを読み込む。
ネットワークI/F200Dは、例えばLANポートを備えている。ネットワークI/F200Dは上述した通信ネットワークNWと接続される。
上述したRAM200Bには、ROM200CやHDD200Eに記憶されたプログラムがCPU200Aによって格納される。RAM200Bには、可搬型記録媒体740に記録されたプログラムがCPU200Aによって格納される。格納されたプログラムをCPU200Aが実行することにより、後述する各種の機能が実現され、また、後述する各種の処理が実行される。尚、プログラムは後述するフローチャートに応じたものとすればよい。
図3は第1実施形態に係るサーバ装置200のブロック図の一例である。図4(a)は教師データ生成画面の一例である。図4(b)は学習対象記憶部251の一例である。図3ではサーバ装置200の機能構成をブロック図により表している。サーバ装置200は、制御アプリ210と画像化ツール220とニューラルネットワークライブラリ又は機械学習ライブラリ(以下、単にニューラルネットワークライブラリという)230とを備えている。制御アプリ210は画像化ツール220とニューラルネットワークライブラリ230の動作を制御する。例えば制御アプリ210は上述した要求を制御装置130から受信すると、画像化ツール220とニューラルネットワークライブラリ230を駆動する。これにより、画像化ツール220とニューラルネットワークライブラリ230はそれぞれ自身の処理を実行する。
画像化ツール220はソースコードを分割し、分割したソースコードを画像に変換する処理を実行する。言い換えれば、画像化ツール220はソースコードを分割し、分割したソースコードを画像化する。図3に示すように、画像化ツール220はソースコード分割部221とソースコード変換部222を含んでいる。
ソースコード分割部221はソースコードを予め定めた行数毎に複数の部分ソースコードに分割する。例えば、ソースコード分割部221は学習対象記憶部251が教師データとして記憶する学習対象のソースコードを取得し、取得したソースコードを40行毎に複数の部分ソースコードに分割する。同様に、ソースコード分割部221は評価対象記憶部252が記憶する評価対象のソースコードを取得し、取得したソースコードを40行毎に複数の部分ソースコードに分割する。
ここで、学習対象記憶部251は予め所定の行単位で評価が付与された複数の評価観点におけるソ-スコード全文を教師データとして記憶している。例えば、評価担当者は入力装置110を操作して、図4(a)に示すように、教師データ生成画面(以下、単に生成画面という)を表示装置120に表示させる。生成画面は画像化ツール220に相当する機能を備えている。評価担当者は生成画面に含まれる入力欄Bx1にプログラマが作成し終えたソースコードの格納先(例えばフォルダ名など)を入力し、入力欄Bx2にソースコードの名称(例えばファイル名)を入力する。また、評価担当者は入力欄Bx3に教師データの格納先を入力し、評価結果の入力欄Bx4を未入力のまま、選択欄Bx5で複数の評価観点の中からいずれか1つの評価観点(例えば「可読性」)を選択する。尚、選択欄Bx6,Bx7のそれぞれにおいて選択欄Bx5で選択した評価項目と異なる評価項目(例えば「複雑度」及び「コメント密度」)を選択してもよい。
評価担当者は種々の入力及び選択を終えると、入力装置110を操作してポインタPtにより画像化開始ボタンBt1を押下する指示を行う。これにより、制御装置130はソースコードの格納先及びファイル名に基づいて、ソースコードの格納先からそのファイル名が付与されたソースコードを取得し、取得したソースコードを部分ソースコードに分割し、部分ソースコードの画像と対応付けて生成画面上に表示する。部分ソースコードを画像に変換する画像化は、選択欄Bx5で選択した評価観点に応じた画像化のルール(後述する種々のマッピングルール)に則って実施する。画像化したソースコードは生成画面上でその内容を目視で確認することができる。評価担当者は表示中の部分ソースコード1またはその画像化を確認して評価を行い、評価結果の入力欄Bx4に評価結果「〇」又は「×」を入力する。評価結果「〇」は高評価を表し、評価結果「×」は低評価を表す。
入力欄Bx4には3つの評価観点の結果を入力できるが必須なのは選択欄Bx5で選択した観点のみで、他の観点での評価結果は省略可能である。3つのすべての入力欄Bx4への入力(省略も含む)を終えると、生成画面は次の40行分の部分ソースコードと画像を表示する。再び評価担当者が、表示中のソースコードを評価し、評価結果を入力する。このように40行ずつ刻んで評価の入力を繰りかえし、最後の行まで評価し終えた段階で、入力装置110を操作してポインタPtにより保存ボタンBt2を押下する指示を行う。
これにより、制御装置130(例えばローカルドライブ)は所定の行単位に評価が付与された複数の評価観点におけるソ-スコード全文を教師データとして記憶する。そして、制御装置130からの指示に基づいて制御アプリ210が学習部の生成を開始すると、制御アプリ210は制御装置130から教師データを取得して、図4(b)に示すように、学習対象記憶部251に教師データを格納する。
ソースコード変換部222は複数の部分ソースコードを画像に変換する。この変換によりソースコード上の文字1桁は、画像上の1ピクセルにマッピングされる。より詳しくは、ソースコード変換部222はソースコード分割部221から複数の部分ソースコードを取得すると、マッピングルール記憶部253が記憶するマッピングルールを取得する。マッピングルールはプログラミング言語が予め定義する文字であるかや、プログラマが予め任意に定義できる文字であるかといった、予め定めた文字の種別に基づいて文字を異なる色に置換する情報(例えば電子ファイル)である。例えばプログラミング言語がJava(登録商標)である場合、プログラミング言語が予め定義する文字としては予約語などがあり、プログラマが任意に定義できる文字としてはクラス名やメソッド名といった識別子などがある。尚、マッピングルールについては後に詳しく説明する。
ソースコード変換部222はマッピングルールを取得すると、マッピングルールに基づいて、複数の部分ソースコードのそれぞれに含まれる文字を色のついたピクセルに置換する。そして、ソースコード変換部222は文字を色のついたピクセルに置換した複数の部分ソースコードを画像に変換する。ソースコード変換部222は部分ソースコードの分割元が学習対象のソースコードである場合には、制御アプリ210を介して画像を評価済画像として評価済画像記憶部255に格納する。これにより、図18(a)に示すように、評価済画像記憶部255は複数の評価済画像を記憶する。一方、ソースコード変換部222は部分ソースコードの分割元が評価対象のソースコードである場合には、画像を未評価画像記憶部254に格納する。これにより、図18(b)に示すように、未評価画像記憶部254は複数の未評価画像を記憶する。
ニューラルネットワークライブラリ230は、第1学習部231、第2学習部232、及び第3学習部233を含んでいる。第1学習部231、第2学習部232、及び第3学習部233はいずれも制御アプリ210がニューラルネットワークとして生成し、ニューラルネットワークライブラリ230に格納する。尚、ニューラルネットワークライブラリ230は第1学習部231、第2学習部232、及び第3学習部233のいずれか1つ又は2つを含んでいてもよいし、第1学習部231、第2学習部232、及び第3学習部233に加えて、第4学習部(不図示)などを含んでいてもよい。
第1学習部231は第1の評価観点の評価済画像を学習する。例えば、制御アプリ210がソースコードの可読性に関する評価済画像を評価済画像記憶部255から取得して第1学習部231に投入すると、第1学習部231は取得した評価済画像をDeep Learning(ディープラーニング:深層学習)により学習する。これにより、第1学習部231はソースコードの可読性を動的に評価することができる。第1学習部231は評価済画像の学習を終えると、制御アプリ210は学習結果を第1学習部231から取得し、取得した学習結果を第1の評価観点の学習済ニューラルネットとしてニューラルネット記憶部256に保存する。尚、可読性とはソースコードのコメント以外の部分をプログラマ以外の者が読んだときの、その目的や処理の流れの理解し易さを表している。
一方、第1学習部231はまだ評価が付与されていない画像が制御アプリ210から投入された場合、投入された画像に対応する部分ソースコードの可読性を評価する。より詳しくは、制御アプリ210が評価対象のソースコードを受け付けた場合、制御アプリ210は第1学習部231を生成し、第1学習部231に第1の評価観点の学習済ニューラルネットを投入する。そして、制御アプリ210は評価対象のソースコードが分割されて画像に変換された画像を未評価画像記憶部254から取得して、第1学習部231に投入する。これにより、第1学習部231は投入された画像に対応する部分ソースコードの可読性を評価する。第1学習部231は評価を終えると、制御アプリ210は評価結果を取得し、取得した評価結果を評価結果記憶部257に格納する。評価結果記憶部257が評価結果を記憶すると、制御アプリ210は評価結果記憶部257から評価結果を取得し、制御装置130に送信する。制御装置130は評価結果を受信すると、評価結果を表示装置120に表示する。
尚、第2学習部232は第2の評価観点の評価済画像を学習し、制御アプリ210から投入された画像に対応する部分ソースコードを第2の評価観点で評価する点を除いて、第1学習部231と同様であるため、詳細な説明を省略する。第2の評価観点としては、ソースコードの複雑度などがある。例えば丸括弧記号(「(」及び「)」)のネスト(入れ子構造)が深かったり、オペレータ記号(例えば「!」、「=」、「&&」、「||」など)に挟まれてドット(「.」)が連なっていたり、一文が長い行にわたって記述されている場合、そのソースコードは複雑であると評価される。
同様に、第3学習部233は第3の評価観点の評価済画像を学習し、制御アプリ210から投入された画像に対応する部分ソースコードを第3の評価観点で評価する点を除いて、第1学習部231と同様であるため、詳細な説明を省略する。第3の評価観点としては、ソースコードのコメント密度などがある。例えば条件分岐(「if」や「else」など)や繰り返し処理の制御文(例えば「for」や「while」など)、その他の制御文(例えば「case」や「switch」など)の直前にコメントが記述されていない場合、そのソースコードはコメント不足であると評価される。
続いて、サーバ装置200の動作について説明する。
図5はサーバ装置200の動作の一例を示すフローチャートである。より詳しくは、図5は学習部の生成に関する動作の一例を示すフローチャートである。
まず、図5に示すように、制御アプリ210は最初の評価観点の教師データを格納する(ステップS101)。例えば、制御アプリ210は最初の評価観点の教師データを制御装置130から取得して、学習対象記憶部251に格納する。ステップS101の処理が完了すると、次いで、制御アプリ210は学習部生成処理を実行する(ステップS102)。学習部生成処理は、評価済画像をニューラルネットワークに学習させて評価観点に応じた第1学習部231、第2学習部232、又は第3学習部233を生成する処理である。尚、学習部生成処理の詳細については後述する。
ステップS102の処理が完了すると、次いで、制御アプリ210は次の評価観点があるか否かを判断する(ステップS103)。例えば、制御アプリ210は評価観点「可読性」に関して学習部生成処理を実行し、評価観点「複雑度」や評価観点「コメント密度」に関する学習部生成処理を実行していない場合、次の評価観点があると判断し(ステップS103:YES)、次の評価観点の教師データを格納する(ステップS104)。例えば、制御アプリ210は次の評価観点の教師データを制御装置130から取得して、学習対象記憶部251に格納する。
一方、全ての評価観点について学習部生成処理を実行し終えた場合、制御アプリ210は次の評価観点がないと判断する(ステップS103:NO)。この場合、制御アプリ210は処理を終える。
続いて、図6から図10を参照して、上述した学習部生成処理の詳細について説明する。
図6は学習部生成処理の一例を示すフローチャートである。図7は第1実施形態に係る画像化ツール220の処理の一例を説明するための図である。図8(a)は可読性評価用マッピングルールの一例である。図8(b)は可読性評価用マッピングルールに基づく置換の一例を説明する図である。図9(a)は複雑度評価用マッピングルールの一例である。図9(b)は複雑度評価用マッピングルールに基づく置換の一例を説明する図である。図10(a)はコメント密度評価用マッピングルールの一例である。図10(b)はコメント密度評価用マッピングルールに基づく置換の一例を説明する図である。
まず、図5を参照して説明したステップS101の処理が完了すると、図6に示すように、ソースコード分割部221はソースコードを分割する(ステップS111)。より詳しくは、ソースコード分割部221は学習対象記憶部251が記憶する教師データを取得し、取得した教師データのソースコードを分割する。例えば、図7に示すように、学習対象記憶部251が120桁(具体的には120文字分)×521行のソースコード全文を含むテキストタイプのソースコードを記憶している場合、ソースコード分割部221は、所定行単位に付与された評価を維持した状態で、そのソースコードを複数の部分ソースコードに分割する。本実施形態ではソースコード分割部221は40行単位でソースコードを分割するため、ソースコード分割部221はソースコードを部分ソースコード1から14に分割する。尚、単位行数については適宜変更してもよい。
ステップS111の処理が完了すると、次いで、ソースコード変換部222はマッピングルールを取得する(ステップS112)。より詳しくは、ソースコード変換部222はマッピングルール記憶部253から対象の評価観点に応じたマッピングルールを取得する。ここで、マッピングルール記憶部253は、予め複数種類のマッピングルールを記憶している。
具体的には、図8(a)、図9(a)、及び図10(a)に示すように、マッピングルール記憶部253は、可読性評価用マッピングルール、複雑度評価用マッピングルール、及びコメント密度評価用マッピングルールを予め記憶している。可読性評価用マッピングルールはソースコード(より詳しくは部分ソースコード)の可読性を評価する際に適した置換を定義する情報である。同様に、複雑度評価用マッピングルールはソースコードの複雑度を評価する際に適した置換を定義する情報である。コメント密度評価用マッピングルールはソースコードのコメント密度を評価する際に適した置換を定義する情報である。ソースコード変換部222はマッピングルール記憶部253から対象の評価観点に応じて、可読性評価用マッピングルール、複雑度評価用マッピングルール、及びコメント密度評価用マッピングルールのいずれかを取得する。
ステップS112の処理が完了すると、次いで、図6に示すように、ソースコード変換部222は部分ソースコードを画像化する(ステップS113)。より詳しくは、ソースコード変換部222は取得したマッピングルールに基づいて、図7に示すように、評価を維持した状態で、複数の部分ソースコード1から14を複数の画像ファイルに変換する。特に、ソースコード変換部222は1行を縦1ピクセル(画素)相当に、1桁を横1ピクセル相当に対応付けて複数の部分ソースコード1~14を複数の画像に変換する。したがって、ソースコード変換部222は部分ソースコード1から14に応じた40ピクセル×120ピクセルの14個の画像を生成する。14個の画像は、いずれも一又は複数の色を含んでいる。
ここで、ソースコード変換部222が可読性評価用マッピングルールを取得した場合、図8(b)に示すように、取得した可読性評価用マッピングルールに基づいて、まず、部分ソースコード1に含まれる文字を色に置換する。例えば、ソースコード変換部222は予約語「if」の2文字をいずれも桃色に変換する。例えば、ソースコード変換部222は識別子「FDUtil」の6文字及び識別子「has」の3文字をいずれも黄色に変換する。残りの文字についても同様に、ソースコード変換部222は可読性評価用マッピングルールに基づいて文字を色に変換する。これにより、ソースコード変換部222は部分ソースコード1の可読性の評価に適した複数の色を含む画像を生成する。ソースコード変換部222は部分ソースコード1の画像化を終えると、順に、部分ソースコード2から14についても同様に画像化する。ソースコード変換部222は複数の画像を生成すると、評価と関連付けられた複数の画像を制御アプリ210に出力し、制御アプリ210は評価と関連付けられた複数の画像を評価済画像として評価済画像記憶部255に格納する(図18(a)参照)。
図6に戻り、ステップS113の処理が完了すると、次いで、制御アプリ210は学習部を生成する(ステップS114)。例えば、制御アプリ210は評価済画像記憶部255に評価済画像を格納すると、第1学習部231の生成を開始し、第1学習部231をニューラルネットワークライブラリ230に格納する。ステップS114の処理が完了すると、次いで、制御アプリ210は学習部を初期化する(ステップS115)。例えば、制御アプリ210が第1学習部231を生成した場合、第1学習部231を初期化する。
ステップS115の処理が完了すると、次いで、制御アプリ210は学習部に評価済画像を投入する(ステップS116)。例えば、制御アプリ210は評価済画像記憶部255が記憶する評価済画像を取得して、第1学習部231に投入する。ステップS116の処理が完了すると、学習部は学習する(ステップS117)。したがって、第1学習部231は投入された評価済画像を学習する。すなわち、第1学習部231は可読性の評価が付与された画像を学習する。ステップS117の処理が完了すると、第1学習部231は学習済ニューラルネットを保存する(ステップS118)。すなわち、第1学習部231は画像の学習を終えると、可読性の評価観点に関する学習結果を表す学習済ニューラルネットをニューラルネット記憶部256に保存する。ステップS118の処理が完了すると、図5を参照して説明したステップS103の処理が開始される。
したがって、次の評価観点がある場合、制御アプリ210は次の評価観点のソースコードに対して同様に学習部生成処理を実行する。例えば、次の評価観点として複雑度を評価する場合、図9(b)に示すように、部分ソースコード1に対して、複雑度評価用マッピングルールに基づいて、部分ソースコード1に含まれる文字を色に置換する。例えば、ソースコード変換部222は予約語「if」の2文字をいずれも赤色に変換する。例えば、ソースコード変換部222は識別子「FDUtil」の6文字及び識別子「has」の3文字をいずれも紫色に変換する。残りの文字についても同様に、ソースコード変換部222は複雑度評価用マッピングルールに基づいて文字を色に変換する。部分ソースコード2から部分ソースコード14についても部分ソースコード1と同様である。これにより、評価済画像記憶部255は複雑度の評価が付与された複数の画像を評価済画像として記憶する(図18(a)参照)。第2学習部232は画像の学習を終えると、複雑度の評価観点に関する学習結果を表す学習済ニューラルネットをニューラルネット記憶部256に保存する。
また、例えば、次の評価観点としてコメント密度を評価する場合、図10(b)に示すように、部分ソースコード1に対して、コメント密度評価用マッピングルールに基づいて、部分ソースコード1に含まれる文字を色に置換する。例えば、ソースコード変換部222は予約語「if」の2文字をいずれも紫色に変換する。例えば、ソースコード変換部222は識別子「FDUtil」の6文字及び識別子「has」の3文字をいずれも水色に変換する。残りの文字についても同様に、ソースコード変換部222はコメント密度評価用マッピングルールに基づいて文字を色に変換する。部分ソースコード2から部分ソースコード14についても部分ソースコード1と同様である。これにより、評価済画像記憶部255はコメント密度の評価が付与された複数の画像を評価済画像として記憶する(図18(a)参照)。第3学習部233は画像の学習を終えると、コメント密度の評価観点に関する学習結果を表す学習済ニューラルネットをニューラルネット記憶部256に保存する。
続いて、図11を参照して、まだ評価が付与されていないソースコードに対する評価を行う評価処理について説明する。
図11は評価処理の一例を示すフローチャートである。まず、制御アプリ210は評価対象のソースコードを受け付ける(ステップS201)。例えば、制御装置130が上述した生成画面とは異なる画面(不図示の評価画面)で入力されたソースコードの格納先及びファイル名を送信すると、制御アプリ210はソースコードの格納先及びファイル名により特定されるソースコードを評価対象として受け付ける。制御アプリ210は評価対象のソースコードを受け付けると、評価対象記憶部252に格納する。
ステップS201の処理が完了すると、次いで、ソースコード分割部221はソースコードを分割する(ステップS202)。より詳しくは、ソースコード分割部221は評価対象記憶部252が記憶する評価対象のソースコードを取得し、取得したソースコードを複数の部分ソースコードに分割する。ステップS203の処理が完了すると、次いで、ソースコード分割部221はマッピングルールを取得する(ステップS203)。すなわち、ソースコード分割部221は、可読性評価用マッピングルール、複雑度評価用マッピングルール、及びコメント密度評価用マッピングルールのいずれか1つを取得する。
ステップS203の処理が完了すると、次いで、ソースコード変換部222は部分ソースコードを画像化する(ステップS204)。より詳しくは、ソースコード変換部222は取得したマッピングルールに基づいて、複数の部分ソースコードをそれぞれ画像化する。ソースコード変換部222は部分ソースコードを画像化し終えると、画像化した複数の部分ソースコードを未評価画像として未評価画像記憶部254に格納する(図18(b)参照)。
ステップS204の処理が完了すると、次いで、制御アプリ210はマッピングルールに応じた学習部を選択する(ステップS205)。具体的には、ソースコード変換部222が可読性評価用マッピングルールを取得した場合、制御アプリ210がニューラルネット記憶部256から可読性評価に関する学習済ニューラルネットを取り込んでニューラルネットワークライブラリ230に格納する。ステップS205の処理が完了すると、次いで、制御アプリ210はソースコード評価処理を実行する(ステップS206)。ソースコード評価処理は、まだ評価されていない画像を学習済ニューラルネットに基づいて動的に評価することにより、ソースコードを評価する処理である。尚、ソースコード評価処理の詳細については後述する。
ステップS206の処理が完了すると、次いで、制御アプリ210は未取得のマッピングルールがあるか否かを判断する(ステップS207)。例えば、ステップS203の処理において、ソースコード変換部222が可読性評価用マッピングルールを取得しており、まだ複雑度評価用マッピングルール及びコメント密度評価用マッピングルールを取得していない場合、制御アプリ210は未取得のマッピングルールがあると判断する(ステップS207:YES)。この場合、ソースコード変換部222はステップS203の処理を再び実行する。すなわち、ソースコード変換部222は、まだ取得していない複雑度評価用マッピングルール及びコメント密度評価用マッピングルールのいずれかを取得して、ステップS204からステップS206までの処理を実行する。
一方、ソースコード変換部222は未取得のマッピングルールがないと判断すると(ステップS207:NO)、制御アプリ210は評価結果を集計し(ステップS208)、集計した評価結果を出力する(ステップS209)。より詳しくは、制御アプリ210は評価結果記憶部257から評価結果を取得して集計し、集計した評価結果を制御装置130に向けて出力する。制御装置130は評価結果を受信すると、表示装置120に評価結果を表示させる。これにより、表示装置120には評価結果が表れる。
続いて、図12を参照して、上述したソースコード評価処理の詳細について説明する。尚、ソースコード評価処理は第1学習部231を一例として説明するが、第2学習部232及び第3学習部233についても第1学習部231と同様であるため、説明を省略する。
図12はソースコード評価処理の一例を示すフローチャートである。図11を参照して説明したステップS205の処理が完了すると、図12に示すように、制御アプリ210は未評価画像記憶部254から最初の未評価画像を取得する(ステップS211)。ステップS211の処理が完了すると、次いで、制御アプリ210は選択した学習部に未評価画像を投入する(ステップS212)。例えば、ステップS205の処理において制御アプリ210が第1学習部231を選択した場合、第1学習部231に未評価画像を投入する。
ステップS212の処理が完了すると、次いで、制御アプリ210は評価結果を取得する(ステップS213)。すなわち、制御アプリ210が第1学習部231に未評価画像を投入した場合、第1学習部231が未評価画像に対してパターン認識により動的に評価した評価結果を取得する。ステップS213の処理が完了すると、次いで、制御アプリ210は評価観点に応じたリストに評価結果を格納する(ステップS214)。例えば、制御アプリ210は未評価画像に対応する部分ソースコードを識別する識別情報と評価結果を格納するための空欄とを対応付けたリストを保持しており、評価結果を取得すると、対応する識別情報の空欄に評価結果を格納する。
ステップS214の処理が完了すると、次いで、制御アプリ210は次の未評価画像があるか否かを判断する(ステップS215)。例えば、未評価画像記憶部254にまだ評価を終えていない未評価画像があれば、制御アプリ210は次の未評価画像があると判断し(ステップS215:YES)、次の未評価画像を取得し(ステップS216)、ステップS212からS215までの処理を繰り返す。これにより、上述した空欄全てに評価結果が格納されたリストが完成する。
一方、未評価画像記憶部254に評価を終えていない未評価画像がなければ、制御アプリ210は次の未評価画像がないと判断し(ステップS215:NO)、評価結果を評価結果記憶部257に保存する(ステップS217)。これにより、評価結果記憶部257はステップS203の取得したマッピングルールの評価観点で評価したリストを記憶する。
図13(a)~(d)は評価結果の一例を説明するための図である。
まず、図13(a)に示すように、例えば部分ソースコードX(不図示)に対応する未評価画像10が第1学習部231に入力されると、第1学習部231は可読性評価に関する学習済ニューラルネットに基づいて、未評価画像10に対する評価値を算出し、算出した評価値が所定の閾値(例えば0.5)以上であれば、その部分ソースコードXに対して評価結果「〇」を出力する。図13(b)に示すように、例えば部分ソースコードY(不図示)に対応する未評価画像20が第1学習部231に入力されると、第1学習部231は可読性評価に関する学習済ニューラルネットに基づいて、未評価画像20に対する評価値を算出し、算出した評価値が所定の閾値未満であれば、その部分ソースコードYに対して評価結果「×」を出力する。
例えば、図13(c)に示すように、部分ソースコードXに対応する未評価画像10が第2学習部232に入力されると、第2学習部232は複雑度評価に関する学習済ニューラルネットに基づいて、未評価画像10に対する評価値を算出し、算出した評価値が所定の閾値未満であれば、その部分ソースコードXに対して評価結果「×」を出力する。また、図13(d)に示すように、例えば部分ソースコードXに対応する未評価画像10が第3学習部233に入力されると、第3学習部233はコメント密度評価に関する学習済ニューラルネットに基づいて、未評価画像10に対する評価値を算出し、算出した評価値が所定の閾値以上であれば、その部分ソースコードXに対して評価結果「〇」を出力する。
以上、第1実施形態によれば、サーバ装置200は画像化ツール220を備えている。画像化ツール220はソースコード分割部221とソースコード変換部222を備えており、ソースコード分割部221は教師データとしてのソースコードを複数の部分ソースコードに分割する。一方、ソースコード変換部222はプログラミング言語が予め定義する文字であるか任意に定義できる文字であるかなどに基づいて文字を異なる色に置換するマッピングルールを取得し、取得したマッピングルールに基づいて、部分ソースコードに含まれる文字を色に置換する。そして、ソースコード変換部222は文字を色に置換した部分ソースコードを画像に変換する。このような画像を利用することで、ソースコードを効率的に評価することができる。
(第2実施形態)
続いて、図14及び図15を参照して、本件の第2実施形態について説明する。
図14は第2実施形態に係る画像化ツール220の処理の一例を説明するための図(その1)である。図15は第2実施形態に係る画像化ツール220の処理の一例を説明するための図(その2)である。
図11のステップS201で説明したように、第1実施形態では、制御アプリ210は評価対象のソースコードを受け付けたが、制御アプリ210は評価対象のソースコードと併せてオーバーラップ率を受け付けてもよい。オーバーラップ率は例えば第1実施形態で説明した評価画面で入力される。
例えば、制御アプリ210がオーバーラップ率「50%」を受け付けると、図14に示すように、ソースコード分割部221は評価対象のソースコードを複数の部分ソースコード1~27に分割する。特に、ソースコード分割部221が40行単位でソースコードを分割する場合、40行の50%である20行をオーバーラップさせ、評価対象のソースコードを20行毎に分割する。これにより、ソースコード分割部221は27個の部分ソースコードを生成する。
ソースコード分割部221が評価対象のソースコードを分割し終えると、次いで、ソースコード変換部222は複数の部分ソースコードを画像に変換する。すなわち、ソースコード分割部221が27個の部分ソースコードを生成した場合、図15に示すように、ソースコード変換部222は27個の部分ソースコードを27個の画像に変換する。変換後、ソースコード変換部222はこれらの画像を未評価画像として未評価画像記憶部254に格納する。
未評価画像記憶部254が未評価画像を記憶すると、次いで、制御アプリ210は未評価画像記憶部254から未評価画像を取得して、第1学習部231に入力する。第1学習部231はオーバーラップ率が利用された画像が入力された場合、第1実施形態のように個別に評価結果を出力せずに、図15に示すように、それぞれの未評価画像に対して算出した評価値をヒストグラム形式で評価結果として出力する。個別に評価結果を出力する場合に比べて、部分ソースコード間に対する評価が補間されるため、評価結果は滑らかになる。これにより、ソースコード全文に対する全体的な評価結果を円滑に把握することができる。
(第3実施形態)
続いて、図16及び図17を参照して、本件の第3実施形態を説明する。
図16は第3実施形態に係るコードレビューシステムS2の一例である。図17は第3実施形態に係る制御装置130とサーバ装置200のブロック図の一例である。第1実施形態では、端末装置100とサーバ装置200が同一拠点にある場合を説明したが、図16に示すように、サーバ装置200は端末装置100と異なる拠点にあってもよい。例えば、サーバ装置200はクラウドCL上のデータセンターDC内に配備されていてもよい。この場合、通信ネットワークNWとしてはインターネットが利用される。
図16に示すように、サーバ装置200が端末装置100と異なる拠点にある場合、図17に示すように、制御装置130が上述した画像化ツール220を備えていてもよい。この場合、制御装置130は画像化ツール220と併せて、学習対象記憶部251、評価対象記憶部252、及びマッピングルール記憶部253を含んでいてもよい。
第1実施形態では制御アプリ210が画像化ツール220を制御したが、第3実施形態では制御装置130の制御部131が画像化ツール220を制御する。例えば、制御部131はソースコード変換部222から出力された未評価の画像を未評価画像記憶部254に向けて送信したり、評価済画像を評価済画像記憶部255に向けて送信したりする。これにより、サーバ装置200は評価済画像記憶部255に記憶された評価済画像に基づいて学習を行い、未評価画像記憶部254に記憶された未評価の画像の評価を行う。画像の評価が完了すると、制御アプリ210は評価結果記憶部257から評価結果を取得して、制御部131に送信する。これにより、制御部131は表示装置120に評価結果を表示する。このように、ソースコードの画像化を端末装置100側で実施できれば、通信ネットワークNW上をソースコードが流通せず、ソースコードの流出が回避される。
(第4実施形態)
第1実施形態乃至第3実施形態では、評価や検証の対象がソースコードであるとして説明を行ったが、対象はソースコードに限られない。たとえば、医療分野のレセプトなどの文書を対象としてもよい。この場合、マッピングルールとして、文字や数字に応じて、所定の色を設定する。例えば、文字の種別に応じて所定の色を設定することができる。文字の種別としては例えば、ASCIIコードを利用してもよいし、レセプト内に記載される病名の別などを利用してもよい。そして、マッピングルールに応じて、評価または検証の対象文書が画像化され、画像化された文書情報を用いて、学習や評価が行われる。
以上、本発明の好ましい実施形態について詳述したが、本発明に係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。例えば、上述した第1実施形態から第3実施形態では、評価結果「〇」及び「×」といった記号を用いて説明したが、例えば評価結果を「〇」、「×」及び「△」などの記号で、3つ以上に細かく評価してもよい。また、記号に代えて評価の高低を表す数値を利用してもよい。
なお、以上の説明に関して更に以下の付記を開示する。
(付記1)ソースコードを取得し、文字の種別に応じて文字を色に変換する、または文字の色を変換するルールに従って、前記ソースコードについて変換処理を実行して色情報を生成し、生成した前記色情報を出力する、処理をコンピュータに実行させるプログラム。
(付記2)前記ルールは、前記ソースコードに対する評価の観点毎に異なる色に文字を置換するルールである、ことを特徴とする付記1に記載のプログラム。
(付記3)他のソースコードを取得し、前記ルールに従って、前記他のソースコードについて変換処理を実行して他の色情報を生成し、前記色情報と前記他の色情報とのパターン認識に基づいて、前記他のソースコードに対する評価結果を出力する、処理を含むことを特徴とする付記1又は2に記載のプログラム。
(付記4)前記出力する処理は、前記色情報と前記他の色情報とのパターン認識に基づいて、前記他のソースコードに対する評価の観点毎に異なる評価結果を出力する、ことを特徴とする付記3に記載のプログラム。
(付記5)さらに、前記ソースコードを部分的に重畳する複数の部分ソースコードに分割するとともに、前記他のソースコードを部分的に重畳する複数の他の部分ソースコードに分割し、前記ルールに従って、分割した前記複数の部分ソースコード、及び前記複数の他の部分ソースコードについて変換処理を実行して色情報を生成する、ことを特徴とする付記3又は4に記載のプログラム。
(付記6)ソースコードを取得し、文字の種別に応じて文字を色に変換する、または文字の色を変換するルールに従って、前記ソースコードについて変換処理を実行して色情報を生成し、生成した前記色情報を出力する、処理をコンピュータが実行する情報処理方法。
(付記7)ソースコードを取得し、文字の種別に応じて文字を色に変換する、または文字の色を変換するルールに従って、前記ソースコードについて変換処理を実行して色情報を生成し、生成した前記色情報を出力する、処理部を備える情報処理装置。
(付記8)前記ルールは、前記ソースコードに対する評価の観点毎に異なる色に文字を置換するルールである、ことを特徴とする付記7に記載の情報処理装置。
(付記9)前記処理部は、他のソースコードを取得し、前記ルールに従って、前記他のソースコードについて変換処理を実行して他の色情報を生成し、前記色情報と前記他の色情報とのパターン認識に基づいて、前記他のソースコードに対する評価結果を出力する、ことを特徴とする付記7又は8に記載の情報処理装置。
(付記10)前記処理部は、前記色情報と前記他の色情報とのパターン認識に基づいて、前記他のソースコードに対する評価の観点毎に異なる評価結果を出力する、ことを特徴とする付記9に記載の情報処理装置。
(付記11)前記処理部は、さらに、前記ソースコードを部分的に重畳する複数の部分ソースコードに分割するとともに、前記他のソースコードを部分的に重畳する複数の他の部分ソースコードに分割し、前記ルールに従って、分割した前記複数の部分ソースコード、及び前記複数の他の部分ソースコードについて変換処理を実行して色情報を生成する、ことを特徴とする付記9又は10に記載の情報処理装置。
(付記12)複数の文字を含む文書の情報を取得し、文字の種別に応じて文字を特定の色に変換する、または文字の色を変換するルールに従って、前記文書の情報について変換処理を実行して色情報を生成し、生成した前記色情報を出力する、処理をコンピュータに実行させるプログラム。
100 端末装置
200 サーバ装置
210 制御アプリ
220 画像化ツール
221 ソースコード分割部
222 ソースコード変換部
230 ニューラルネットワークライブラリ
231 第1学習部
232 第2学習部
233 第3学習部

Claims (9)

  1. ソースコードを取得し、
    文字の種別に応じて文字を色に置き換えるルールに従って、前記ソースコードについて変換処理を実行して色情報の画像を生成し、
    生成した前記色情報の画像を出力する、
    処理をコンピュータに実行させるプログラム。
  2. 前記ルールは、前記ソースコードに対する評価の観点毎に異なる色に文字を置き換えるルールである、
    ことを特徴とする請求項1に記載のプログラム。
  3. 他のソースコードを取得し、
    前記ルールに従って、前記他のソースコードについて前記変換処理を実行して他の色情報の画像を生成し、
    前記色情報の画像を教師データとして学習した学習部により行われる、前記他の色情報の画像に対するパターン認識に基づいて、前記他のソースコードに対する評価結果を出力する、
    処理を含むことを特徴とする請求項1又は2に記載のプログラム。
  4. 前記出力する処理は、前記他の色情報の画像に対するパターン認識に基づいて、前記他のソースコードに対する評価の観点毎に異なる評価結果を出力する、
    ことを特徴とする請求項3に記載のプログラム。
  5. さらに、前記ソースコードを部分的に重畳する複数の部分ソースコードに分割するとともに、前記他のソースコードを部分的に重畳する複数の他の部分ソースコードに分割し、
    前記ルールに従って、分割した前記複数の部分ソースコード、及び前記複数の他の部分ソースコードについて前記変換処理を実行して色情報の画像を生成する、
    ことを特徴とする請求項3又は4に記載のプログラム。
  6. ソースコードを取得し、
    文字の種別に応じて文字を色に置き換えるルールに従って、前記ソースコードについて変換処理を実行して色情報の画像を生成し、
    生成した前記色情報の画像を出力する、
    処理をコンピュータが実行する情報処理方法。
  7. ソースコードを取得し、
    文字の種別に応じて文字を色に置き換えるルールに従って、前記ソースコードについて変換処理を実行して色情報の画像を生成し、
    生成した前記色情報の画像を出力する、
    処理部を備える情報処理装置。
  8. 複数の文字を含む文書の情報を取得し、
    文字の種別に応じて文字を特定の色に置き換えるルールに従って、前記文書の情報について変換処理を実行して色情報の画像を生成し、
    生成した前記色情報の画像を出力する、
    処理をコンピュータに実行させるプログラム。
  9. 他の文書の情報を取得し、
    前記ルールに従って、前記他の文書の情報について前記変換処理を実行して他の色情報の画像を生成し、
    前記色情報の画像を教師データとして学習する学習部により行われる、前記他の色情報の画像に対するパターン認識に基づいて、前記他の文書の情報に対する評価結果を出力する、
    処理を含むことを特徴とする請求項8に記載のプログラム。
JP2018049093A 2017-03-16 2018-03-16 プログラム、情報処理方法、及び情報処理装置 Active JP7114959B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2017051906 2017-03-16
JP2017051906 2017-03-16

Publications (2)

Publication Number Publication Date
JP2018156654A JP2018156654A (ja) 2018-10-04
JP7114959B2 true JP7114959B2 (ja) 2022-08-09

Family

ID=63519372

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018049093A Active JP7114959B2 (ja) 2017-03-16 2018-03-16 プログラム、情報処理方法、及び情報処理装置

Country Status (2)

Country Link
US (1) US10540257B2 (ja)
JP (1) JP7114959B2 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200121611A (ko) 2019-04-16 2020-10-26 삼성전자주식회사 서버 및 그 제어 방법
US20210303662A1 (en) * 2020-03-31 2021-09-30 Irdeto B.V. Systems, methods, and storage media for creating secured transformed code from input code using a neural network to obscure a transformation function
US11269626B2 (en) * 2020-04-23 2022-03-08 International Business Machines Corporation Quality analysis of source code
FI20205460A1 (en) 2020-05-05 2021-11-06 Qentinel Oy Smart code editor for detecting and visualizing deviations
US11379748B2 (en) 2020-06-15 2022-07-05 Bank Of America Corporation System for threshold detection using learning reinforcement
US11875141B2 (en) * 2020-11-20 2024-01-16 Infosys Limited System and method for training a neural machine translation model
CN116436974B (zh) * 2023-06-15 2023-08-11 国能日新科技股份有限公司 一种数据传输方法及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000350151A (ja) 1999-06-02 2000-12-15 Canon Inc 情報処理装置及びデジタルカメラ並びにそれらの制御方法
JP2002288004A (ja) 2001-03-27 2002-10-04 Canon Inc プログラムソース処理装置、プログラムソース処理方法、およびプログラムソース処理プログラム

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03127226A (ja) * 1989-10-13 1991-05-30 Fuji Xerox Co Ltd プログラムの表示・印刷方式
JP3291989B2 (ja) * 1995-07-25 2002-06-17 富士ゼロックス株式会社 文書処理装置
US7379076B2 (en) * 2004-07-15 2008-05-27 Microsoft Corporation Using pixel homogeneity to improve the clarity of images
US7634454B2 (en) * 2006-11-21 2009-12-15 Microsoft Corporation Concept keywords colorization in program identifiers
US8631323B1 (en) * 2007-04-18 2014-01-14 Wolfram Research, Inc. Updating the display treatment of source code based on a real time semantic and syntactic analysis
US8391603B2 (en) * 2009-06-18 2013-03-05 Omisa Inc. System and method for image segmentation
JP5335885B2 (ja) 2011-12-26 2013-11-06 みずほ情報総研株式会社 解析結果評価システム、解析結果評価方法及び解析結果評価プログラム
CN104428791A (zh) * 2012-05-14 2015-03-18 澳宝提克斯公司 通过检测图像中的圆形物体操作计算装置
US20140047413A1 (en) * 2012-08-09 2014-02-13 Modit, Inc. Developing, Modifying, and Using Applications
JP6176979B2 (ja) 2013-04-04 2017-08-09 三菱電機株式会社 プロジェクト管理支援システム
EP2829970B1 (en) 2013-07-26 2017-02-01 Fujitsu Limited A method and apparatus for porting source code
US9395894B2 (en) * 2013-11-06 2016-07-19 Software Ag System and method for browser side colorizing of icon images
US20150143209A1 (en) * 2013-11-18 2015-05-21 PlayMeBook Ltd. System and method for personalizing digital content
US9502003B2 (en) * 2014-01-05 2016-11-22 Spatial Cam Llc Apparatus and methods to display a modified image
WO2015134665A1 (en) * 2014-03-04 2015-09-11 SignalSense, Inc. Classifying data with deep learning neural records incrementally refined through expert input
US10127284B2 (en) * 2014-12-18 2018-11-13 International Business Machines Corporation Scoring attributes in deep question answering systems based on algorithmic source code influences
JP2016177359A (ja) 2015-03-18 2016-10-06 Kddi株式会社 検索装置及びプログラム
US9971581B1 (en) * 2015-12-28 2018-05-15 Wells Fargo Bank, N.A. Programming language conversion
US20170212829A1 (en) * 2016-01-21 2017-07-27 American Software Safety Reliability Company Deep Learning Source Code Analyzer and Repairer
US10671938B2 (en) * 2016-01-27 2020-06-02 Bonsai AI, Inc. Artificial intelligence engine configured to work with a pedagogical programming language to train one or more trained artificial intelligence models
JP6766611B2 (ja) * 2016-11-22 2020-10-14 富士通株式会社 修正支援プログラム、修正支援方法、および修正支援装置
US20180150742A1 (en) * 2016-11-28 2018-05-31 Microsoft Technology Licensing, Llc. Source code bug prediction

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000350151A (ja) 1999-06-02 2000-12-15 Canon Inc 情報処理装置及びデジタルカメラ並びにそれらの制御方法
JP2002288004A (ja) 2001-03-27 2002-10-04 Canon Inc プログラムソース処理装置、プログラムソース処理方法、およびプログラムソース処理プログラム

Also Published As

Publication number Publication date
US20180267883A1 (en) 2018-09-20
JP2018156654A (ja) 2018-10-04
US10540257B2 (en) 2020-01-21

Similar Documents

Publication Publication Date Title
JP7114959B2 (ja) プログラム、情報処理方法、及び情報処理装置
US20150278710A1 (en) Machine learning apparatus, machine learning method, and non-transitory computer-readable recording medium
Ye et al. MasterplanGAN: Facilitating the smart rendering of urban master plans via generative adversarial networks
Kopp et al. When cognitive fit outweighs cognitive load: Redundant data labels in charts increase accuracy and speed of information extraction
US11954536B2 (en) Data engine
CN105830060A (zh) 信息处理设备、信息处理程序、存储介质和信息处理方法
CN111767883A (zh) 一种题目批改方法及装置
CN115562753A (zh) 数据处理方法及装置
Winter et al. Flatpack ML: How to support designers in creating a new generation of customizable machine learning applications
Tavakoli et al. Explaining the effect of artificial intelligence on the technology acceptance model in media: a cloud computing approach
Ivaschenko et al. Accented visualization in digital industry applications
Kortum et al. Dissection of AI job advertisements: A text mining-based analysis of employee skills in the disciplines computer vision and natural language processing
Ellingsen et al. Developing large-scale electronic patient records conforming to the openehr architecture
Issa Artificial intelligence technologies and the evolution of web 3.0
Brown et al. Augmenting and assisting model elicitation tasks with 3D virtual world context metadata
Wells Introduction to data catalogs
CN110163975B (zh) 空间直线的绘制方法、装置、设备及存储介质
CN114550545A (zh) 一种课程生成、课程展示方法以及装置
Charlton et al. Web-based data visualization platform for matsim
CN110909726B (zh) 一种基于图像识别的书面文档互动系统和方法
JP2013191193A (ja) モバイル端末におけるハイブリッド童話絵本提供装置及び方法
Salman Paletto: An Interactive Colour Palette Generator: Facilitating Designers’ Colour Selection Processes
CN115129971A (zh) 基于能力评估数据的课程推荐方法、设备及可读存储介质
WO2016077862A1 (en) Training systems for secure software code
Renaud et al. The role of knowledge visualisation in supporting postgraduate dissertation assessment

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201210

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20211117

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211221

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220216

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220711

R150 Certificate of patent or registration of utility model

Ref document number: 7114959

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150