Presentation is loading. Please wait.

Presentation is loading. Please wait.

Myoungkyu Song and Eli Tilevich 発表者: 石尾 隆(大阪大学)

Similar presentations


Presentation on theme: "Myoungkyu Song and Eli Tilevich 発表者: 石尾 隆(大阪大学)"— Presentation transcript:

1 Myoungkyu Song and Eli Tilevich 発表者: 石尾 隆(大阪大学)
論文R2 Metadata Invariants: Checking and Inferring Metadata Coding Conventions Myoungkyu Song and Eli Tilevich 発表者: 石尾 隆(大阪大学)

2 論文の概要 Metadata Invariants という概念の提案
特定のパターンに該当するプログラム要素(パッケージ/クラス/メソッド/フィールド)が持つべきメタデータを指定する Metadata Invariants Language (MIL) の定義 Java 5 Annotation, XML によるメタデータ記述の2種類に対応 AspectJ のポイントカットに類似した宣言的記述を提供 MIL をソースコードから自動推論する方法の提案 出てきたものを人間が確認・加工して,検査ツールに投入できる JUnit では,名前が “Test” で終わるクラスの “public void” で始まるメソッドは のいずれかを持つこと Hibernate name=“fieldName” } int fieldname; の name 属性とフィールド名が一致すること

3 Metadata Invariants とは
構成要素 プログラム要素を選択するパターン “class *Test” や “public void *” など,Java のパッケージ/クラス/メソッド/フィールド宣言の形式で表現.一部をワイルドカード (*) に変換してもよい パターンに該当した要素が満たすべき条件 @Test のような Java 5 Annotation <class name=“C”><field name=“f”>… のような特定のXMLメタデータ 名前や継承関係に関するルール 検証方法 対象プログラムから,パターンにマッチするプログラム要素をすべて列挙し,それぞれが,Invariants に定義された条件のメタデータを持つことを確認する Class c in p Where (* class *Test) 名前がTest で終わるクラス c の Method m in c Where (public void *) -- public void メソッド m について Assert m) が存在することを要求

4 Metadata Invariants の推論
候補の列挙 を持つメソッド) 列挙された名前から共通部分文字列を計算し,それ以外の部分を “*” で置き換えて,プログラム要素のパターンを作成する ※ ケーススタディに出てくる結果を見る限り,論文に書かれていないルールがかなりありそう 候補の検査 プログラム要素のパターンを実際に適用し,マッチした要素が,メタデータを持っている割合を評価する 実験では閾値 96% 以上であれば Invariant として出力

5 ケーススタディ 様々な対象に対して実験 Metadata Invariants が存在していることを示した
Hibernate, JEdit, Spring, JBoss Seam, IntelliJ, RunaWFE, OpenVPN ALS Metadata Invariants が存在していることを示した 例1: Hibernate のソースコードから,Hibernate での JUnit の使い方が出てきた 例2: JEdit の記述が抽出された False positive も発生するが,個数などは紹介されていない Class c in p Where (* class *Test | * class Test*) Method m in c Where (public void *)    Assert m) Class c in p Method m in c Where m) Assert (c.super has m)


Download ppt "Myoungkyu Song and Eli Tilevich 発表者: 石尾 隆(大阪大学)"

Similar presentations


Ads by Google