SlideShare a Scribd company logo
1 of 8
Download to read offline
ICST2015 勉強会 論文紹介
セッション: Static Analysis 静的解析
紹介者: 鷲崎 弘宜
早稲田大学グローバルソフトウェアエンジニアリング研究所
2015年7月4日
“A Lightweight, Static Approach to Detecting
Unbounded Thread-Instantiation Loops”
Jing Xu 他 (University of Texas at Arlington)
• 目的: 上限なくスレッドを生成してしまう可能性の
あるループを簡易に発見
• アイディア:
– スレッド生成の決定ロジックはたいていシンプル
– 経験則によりパターンを幾つか定義
• 貢献
– 軽量なスレッド生成非有界ループの静的解析手法
– 手法のEclipseプラグイン実装
– 24のJavaサーバアプリケーションにおいて有用性を確
認
2
動機づけの例
• Tornado: マルチス
レッドWebサーバ
• minIdleThreadsは
定数
• しかしidleThreads
は単調増加「しな
い」可能性あり
3
1 public void run() {
2 int minIdleThreads = Tornado.getConfig().getMinIdle();
3 int maxIdleThreads = Tornado.getConfig().getMaxIdle();
4 while (true) {
5 try {
6 Thread.sleep(this.sleepTime);
7 } catch (InterruptedException e) {}
8 int idleThreads = this.threadPool.getIdleThreads();
9 Tornado.log.debug(idleThreads + " idle; "
+ this.threadPool.getBusyThreads() + " busy");
10 if (idleThreads < minIdleThreads) {
11 spawnThreads(minIdleThreads - idleThreads);
12 continue;
13 }
14 if (idleThreads <= maxIdleThreads)
15 continue;
16 killThreads(idleThreads - maxIdleThreads);
17 }
18 }
19 private void spawnThreads(int num) {
20 Tornado.log.debug(num + "new threads spawned");
21 for (int i = 0; i < num; i++)
22 this.threadPool.addThread();
23 }
24 public void addThread() {
25 ServerThread t = new ServerThread(this.serverGroup,
this.taskPool, this);
26 t.start();
27 }
Jing Xu, et al, “A Lightweight, Static Approach to Detecting Unbounded Thread-Instantiation Loops,” ICST2015.
手法など
• 具体的には
– 5つのスレッド生成有界パターンを経験則で定義
– パス解析によりパターンに適合しなければNG判定
– 呼び出しやループのネスト数の制限により解析時間
を調整可能(従って見逃しもある)
• 評価
– 24のJava OSSマルチスレッドサーバ
– 41のNG判定、うち38は正しかった
– 実行時間は数分~15時間以上
• 所感
– 実用を十分に検討(ただし見逃しは?)
– やっぱりパターン!
4
Jing Xu, et al, “A Lightweight, Static Approach to Detecting Unbounded Thread-Instantiation Loops,” ICST2015.
“QuickChecking Static Analysis Properties”
Jan Midtgaard 他 (Aarhus University)
• 目的: 動的言語における静的解析ツールの性質テスト
• アイディア:
– 静的解析の正しさは、仕様が束(ラティス)を形成することと、
その束上で関数が単調写像であること
– 関数型言語向けのQuickchecking手法の応用: 入力の生成と
性質のテスト
• 貢献:
– 動的言語における型解析の束構造のテスト
– テストしたい性質を定義する型安全なOcamlベースDSL
– 型安全な汎用のコンビネータを複数用意
– Lua言語用の型解析系において欠陥を発見、単順なカバレッ
ジテストでは発見困難
• 所感: 「静的解析ツールは正しいのか?」というメタな問
いへのチャレンジ。他にも同様の問いかけはありそう。
5
6
module L = struct
let name = "examplelattice"
type elem = Top | Bot
let leq a b = match a,b with
| Bot, _ -> true
| _, Top -> true
| _, _ -> false
let join e e’ = if e = Bot then e’ else Top
let meet e e’ = if e = Bot then Bot else e’
(* ... *)
let to_string e = if e = Bot then "Bot" else "Top"
end
let flip e = if e = L.Bot then L.Top else L.Bot
Jan Midtgaard, et al. “QuickChecking Static Analysis Properties,” ICST 2015.
単調写像ではない関数
TopとBotからなる束
“Sound and Quasi-Complete Detection of
Infeasible Test Requirements”
Sebastien Bardin 他 (CEA)
• 目的: 実行不可能なテスト要求を概ね全て静的解析
により自動検出
• アイディア:
– 値解析と最弱事前条件計算の利用
– カバレッジ上のテスト要求 ⇒ ラベル ⇒ アサーション
• 貢献:
– 実行不可能なテスト要求の自動検出
– 12の小規模プログラムに対して、条件網羅、複数(複合)
条件網羅における実行不可能なテスト要求をほぼ全て検
出成功
– テスト自動生成の効率化に寄与: 平均3.8倍
• 所感:
– 自動テスト用途では有用そう
– 現実の一定規模プログラムにスケールするか? 7
8
statement_1;
if (x==y && a<b)
{...};
statement_3;
statement_1;
//! l1: x==y
//! l2: x!=y
//! l3: a<b
//! l4: a>=b
if (x==y && a<b)
{...};
statement_3;
statement_1;
//! l1: x==y && a<b
//! l2: x!=y && a<b
//! l3: x==y && a>=b
//! l4: x!=y && a>=b
if (x==y && a<b)
{...};
statement_3;
条件網羅 複数(複合)条件網羅
if (x) {
//! l1: !x && !y
if (!x || y)
{...};
}
if (x) {
//@ assert !(!x && !y);
if (!x || y)
{...};
}
非実行可能なテスト要求から妥当な表明への変換
Sebastien Bardin, “Sound and Quasi-Complete Detection of Infeasible Test Requirements,” ICST2015.

More Related Content

Similar to ICST2015勉強会 Static Analysis トラック論文紹介

EfficientDet: Scalable and Efficient Object Detection
EfficientDet: Scalable and Efficient Object DetectionEfficientDet: Scalable and Efficient Object Detection
EfficientDet: Scalable and Efficient Object Detectionharmonylab
 
図書館総合展ネクスト主催フォーラム「アカデミックとリアルの谷を埋める道」基調講演 2011年11月11日
図書館総合展ネクスト主催フォーラム「アカデミックとリアルの谷を埋める道」基調講演 2011年11月11日図書館総合展ネクスト主催フォーラム「アカデミックとリアルの谷を埋める道」基調講演 2011年11月11日
図書館総合展ネクスト主催フォーラム「アカデミックとリアルの谷を埋める道」基調講演 2011年11月11日Yoji Kiyota
 
企業等に蓄積されたデータを分析するための処理機能の提案
企業等に蓄積されたデータを分析するための処理機能の提案企業等に蓄積されたデータを分析するための処理機能の提案
企業等に蓄積されたデータを分析するための処理機能の提案Toshiyuki Shimono
 
第2回nseg slideshare
第2回nseg slideshare第2回nseg slideshare
第2回nseg slideshareko ty
 
opensource and accessibility (Dec2000) Part 2
opensource and accessibility (Dec2000) Part 2opensource and accessibility (Dec2000) Part 2
opensource and accessibility (Dec2000) Part 2Takuya Nishimoto
 
2014/5/29 東大相澤山崎研勉強会:パターン認識とニューラルネットワーク,Deep Learningまで
2014/5/29 東大相澤山崎研勉強会:パターン認識とニューラルネットワーク,Deep Learningまで2014/5/29 東大相澤山崎研勉強会:パターン認識とニューラルネットワーク,Deep Learningまで
2014/5/29 東大相澤山崎研勉強会:パターン認識とニューラルネットワーク,Deep LearningまでHokuto Kagaya
 

Similar to ICST2015勉強会 Static Analysis トラック論文紹介 (6)

EfficientDet: Scalable and Efficient Object Detection
EfficientDet: Scalable and Efficient Object DetectionEfficientDet: Scalable and Efficient Object Detection
EfficientDet: Scalable and Efficient Object Detection
 
図書館総合展ネクスト主催フォーラム「アカデミックとリアルの谷を埋める道」基調講演 2011年11月11日
図書館総合展ネクスト主催フォーラム「アカデミックとリアルの谷を埋める道」基調講演 2011年11月11日図書館総合展ネクスト主催フォーラム「アカデミックとリアルの谷を埋める道」基調講演 2011年11月11日
図書館総合展ネクスト主催フォーラム「アカデミックとリアルの谷を埋める道」基調講演 2011年11月11日
 
企業等に蓄積されたデータを分析するための処理機能の提案
企業等に蓄積されたデータを分析するための処理機能の提案企業等に蓄積されたデータを分析するための処理機能の提案
企業等に蓄積されたデータを分析するための処理機能の提案
 
第2回nseg slideshare
第2回nseg slideshare第2回nseg slideshare
第2回nseg slideshare
 
opensource and accessibility (Dec2000) Part 2
opensource and accessibility (Dec2000) Part 2opensource and accessibility (Dec2000) Part 2
opensource and accessibility (Dec2000) Part 2
 
2014/5/29 東大相澤山崎研勉強会:パターン認識とニューラルネットワーク,Deep Learningまで
2014/5/29 東大相澤山崎研勉強会:パターン認識とニューラルネットワーク,Deep Learningまで2014/5/29 東大相澤山崎研勉強会:パターン認識とニューラルネットワーク,Deep Learningまで
2014/5/29 東大相澤山崎研勉強会:パターン認識とニューラルネットワーク,Deep Learningまで
 

More from Hironori Washizaki

Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringHironori Washizaki
 
IEEE Computer Society 2024 Technology Predictions Update
IEEE Computer Society 2024 Technology Predictions UpdateIEEE Computer Society 2024 Technology Predictions Update
IEEE Computer Society 2024 Technology Predictions UpdateHironori Washizaki
 
鷲崎弘宜, "国際規格ISO/IEC 24773とその意義", 情報処理学会 第86回全国大会
鷲崎弘宜, "国際規格ISO/IEC 24773とその意義", 情報処理学会 第86回全国大会鷲崎弘宜, "国際規格ISO/IEC 24773とその意義", 情報処理学会 第86回全国大会
鷲崎弘宜, "国際規格ISO/IEC 24773とその意義", 情報処理学会 第86回全国大会Hironori Washizaki
 
IEEE Computer Society’s Strategic Activities and Products including SWEBOK Guide
IEEE Computer Society’s Strategic Activities and Products including SWEBOK GuideIEEE Computer Society’s Strategic Activities and Products including SWEBOK Guide
IEEE Computer Society’s Strategic Activities and Products including SWEBOK GuideHironori Washizaki
 
TISO/IEC JTC1におけるソフトウェア工学知識体系、技術者認証および品質の標準化と研究・教育他への活用
TISO/IEC JTC1におけるソフトウェア工学知識体系、技術者認証および品質の標準化と研究・教育他への活用TISO/IEC JTC1におけるソフトウェア工学知識体系、技術者認証および品質の標準化と研究・教育他への活用
TISO/IEC JTC1におけるソフトウェア工学知識体系、技術者認証および品質の標準化と研究・教育他への活用Hironori Washizaki
 
アジャイル品質のパターンとメトリクス Agile Quality Patterns and Metrics (QA2AQ) 20240225
アジャイル品質のパターンとメトリクス Agile Quality Patterns and Metrics (QA2AQ) 20240225アジャイル品質のパターンとメトリクス Agile Quality Patterns and Metrics (QA2AQ) 20240225
アジャイル品質のパターンとメトリクス Agile Quality Patterns and Metrics (QA2AQ) 20240225Hironori Washizaki
 
Joseph Yoder : Being Agile about Architecture
Joseph Yoder : Being Agile about ArchitectureJoseph Yoder : Being Agile about Architecture
Joseph Yoder : Being Agile about ArchitectureHironori Washizaki
 
世界標準のソフトウェア工学知識体系SWEBOK Guide最新第4版を通じた開発アップデート
世界標準のソフトウェア工学知識体系SWEBOK Guide最新第4版を通じた開発アップデート世界標準のソフトウェア工学知識体系SWEBOK Guide最新第4版を通じた開発アップデート
世界標準のソフトウェア工学知識体系SWEBOK Guide最新第4版を通じた開発アップデートHironori Washizaki
 
SWEBOK Guide Evolution and Its Emerging Areas including Machine Learning Patt...
SWEBOK Guide Evolution and Its Emerging Areas including Machine Learning Patt...SWEBOK Guide Evolution and Its Emerging Areas including Machine Learning Patt...
SWEBOK Guide Evolution and Its Emerging Areas including Machine Learning Patt...Hironori Washizaki
 
デジタルトランスフォーメーション(DX)におけるソフトウェアの側面とダイバーシティ・インクルーシブに関する研究実践動向
デジタルトランスフォーメーション(DX)におけるソフトウェアの側面とダイバーシティ・インクルーシブに関する研究実践動向デジタルトランスフォーメーション(DX)におけるソフトウェアの側面とダイバーシティ・インクルーシブに関する研究実践動向
デジタルトランスフォーメーション(DX)におけるソフトウェアの側面とダイバーシティ・インクルーシブに関する研究実践動向Hironori Washizaki
 
SQuBOKガイドV3概説 ~IoT・AI・DX時代のソフトウェア品質とシステム監査~
SQuBOKガイドV3概説 ~IoT・AI・DX時代のソフトウェア品質とシステム監査~SQuBOKガイドV3概説 ~IoT・AI・DX時代のソフトウェア品質とシステム監査~
SQuBOKガイドV3概説 ~IoT・AI・DX時代のソフトウェア品質とシステム監査~Hironori Washizaki
 
人生100年・60年カリキュラム時代のDX人材育成: スマートエスイー 2021年度成果および2022年度募集
人生100年・60年カリキュラム時代のDX人材育成: スマートエスイー 2021年度成果および2022年度募集人生100年・60年カリキュラム時代のDX人材育成: スマートエスイー 2021年度成果および2022年度募集
人生100年・60年カリキュラム時代のDX人材育成: スマートエスイー 2021年度成果および2022年度募集Hironori Washizaki
 
スマートエスイーコンソーシアムの概要と2021年度成果紹介
スマートエスイーコンソーシアムの概要と2021年度成果紹介スマートエスイーコンソーシアムの概要と2021年度成果紹介
スマートエスイーコンソーシアムの概要と2021年度成果紹介Hironori Washizaki
 
DXの推進において企業内に求められる人材やデジタル人材の育て方
DXの推進において企業内に求められる人材やデジタル人材の育て方DXの推進において企業内に求められる人材やデジタル人材の育て方
DXの推進において企業内に求められる人材やデジタル人材の育て方Hironori Washizaki
 
対応性のある運用のパターン
対応性のある運用のパターン対応性のある運用のパターン
対応性のある運用のパターンHironori Washizaki
 
モデル訓練のパターン
モデル訓練のパターンモデル訓練のパターン
モデル訓練のパターンHironori Washizaki
 
パターンのつながりとAI活用成熟度
パターンのつながりとAI活用成熟度パターンのつながりとAI活用成熟度
パターンのつながりとAI活用成熟度Hironori Washizaki
 
データ表現のパターン
データ表現のパターンデータ表現のパターン
データ表現のパターンHironori Washizaki
 
機械学習デザインパターンの必要性と機械学習ライフサイクル
機械学習デザインパターンの必要性と機械学習ライフサイクル機械学習デザインパターンの必要性と機械学習ライフサイクル
機械学習デザインパターンの必要性と機械学習ライフサイクルHironori Washizaki
 
青山幹雄先生を偲んで(開拓、理論、実践、コミュニティ&国際)
青山幹雄先生を偲んで(開拓、理論、実践、コミュニティ&国際)青山幹雄先生を偲んで(開拓、理論、実践、コミュニティ&国際)
青山幹雄先生を偲んで(開拓、理論、実践、コミュニティ&国際)Hironori Washizaki
 

More from Hironori Washizaki (20)

Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their Engineering
 
IEEE Computer Society 2024 Technology Predictions Update
IEEE Computer Society 2024 Technology Predictions UpdateIEEE Computer Society 2024 Technology Predictions Update
IEEE Computer Society 2024 Technology Predictions Update
 
鷲崎弘宜, "国際規格ISO/IEC 24773とその意義", 情報処理学会 第86回全国大会
鷲崎弘宜, "国際規格ISO/IEC 24773とその意義", 情報処理学会 第86回全国大会鷲崎弘宜, "国際規格ISO/IEC 24773とその意義", 情報処理学会 第86回全国大会
鷲崎弘宜, "国際規格ISO/IEC 24773とその意義", 情報処理学会 第86回全国大会
 
IEEE Computer Society’s Strategic Activities and Products including SWEBOK Guide
IEEE Computer Society’s Strategic Activities and Products including SWEBOK GuideIEEE Computer Society’s Strategic Activities and Products including SWEBOK Guide
IEEE Computer Society’s Strategic Activities and Products including SWEBOK Guide
 
TISO/IEC JTC1におけるソフトウェア工学知識体系、技術者認証および品質の標準化と研究・教育他への活用
TISO/IEC JTC1におけるソフトウェア工学知識体系、技術者認証および品質の標準化と研究・教育他への活用TISO/IEC JTC1におけるソフトウェア工学知識体系、技術者認証および品質の標準化と研究・教育他への活用
TISO/IEC JTC1におけるソフトウェア工学知識体系、技術者認証および品質の標準化と研究・教育他への活用
 
アジャイル品質のパターンとメトリクス Agile Quality Patterns and Metrics (QA2AQ) 20240225
アジャイル品質のパターンとメトリクス Agile Quality Patterns and Metrics (QA2AQ) 20240225アジャイル品質のパターンとメトリクス Agile Quality Patterns and Metrics (QA2AQ) 20240225
アジャイル品質のパターンとメトリクス Agile Quality Patterns and Metrics (QA2AQ) 20240225
 
Joseph Yoder : Being Agile about Architecture
Joseph Yoder : Being Agile about ArchitectureJoseph Yoder : Being Agile about Architecture
Joseph Yoder : Being Agile about Architecture
 
世界標準のソフトウェア工学知識体系SWEBOK Guide最新第4版を通じた開発アップデート
世界標準のソフトウェア工学知識体系SWEBOK Guide最新第4版を通じた開発アップデート世界標準のソフトウェア工学知識体系SWEBOK Guide最新第4版を通じた開発アップデート
世界標準のソフトウェア工学知識体系SWEBOK Guide最新第4版を通じた開発アップデート
 
SWEBOK Guide Evolution and Its Emerging Areas including Machine Learning Patt...
SWEBOK Guide Evolution and Its Emerging Areas including Machine Learning Patt...SWEBOK Guide Evolution and Its Emerging Areas including Machine Learning Patt...
SWEBOK Guide Evolution and Its Emerging Areas including Machine Learning Patt...
 
デジタルトランスフォーメーション(DX)におけるソフトウェアの側面とダイバーシティ・インクルーシブに関する研究実践動向
デジタルトランスフォーメーション(DX)におけるソフトウェアの側面とダイバーシティ・インクルーシブに関する研究実践動向デジタルトランスフォーメーション(DX)におけるソフトウェアの側面とダイバーシティ・インクルーシブに関する研究実践動向
デジタルトランスフォーメーション(DX)におけるソフトウェアの側面とダイバーシティ・インクルーシブに関する研究実践動向
 
SQuBOKガイドV3概説 ~IoT・AI・DX時代のソフトウェア品質とシステム監査~
SQuBOKガイドV3概説 ~IoT・AI・DX時代のソフトウェア品質とシステム監査~SQuBOKガイドV3概説 ~IoT・AI・DX時代のソフトウェア品質とシステム監査~
SQuBOKガイドV3概説 ~IoT・AI・DX時代のソフトウェア品質とシステム監査~
 
人生100年・60年カリキュラム時代のDX人材育成: スマートエスイー 2021年度成果および2022年度募集
人生100年・60年カリキュラム時代のDX人材育成: スマートエスイー 2021年度成果および2022年度募集人生100年・60年カリキュラム時代のDX人材育成: スマートエスイー 2021年度成果および2022年度募集
人生100年・60年カリキュラム時代のDX人材育成: スマートエスイー 2021年度成果および2022年度募集
 
スマートエスイーコンソーシアムの概要と2021年度成果紹介
スマートエスイーコンソーシアムの概要と2021年度成果紹介スマートエスイーコンソーシアムの概要と2021年度成果紹介
スマートエスイーコンソーシアムの概要と2021年度成果紹介
 
DXの推進において企業内に求められる人材やデジタル人材の育て方
DXの推進において企業内に求められる人材やデジタル人材の育て方DXの推進において企業内に求められる人材やデジタル人材の育て方
DXの推進において企業内に求められる人材やデジタル人材の育て方
 
対応性のある運用のパターン
対応性のある運用のパターン対応性のある運用のパターン
対応性のある運用のパターン
 
モデル訓練のパターン
モデル訓練のパターンモデル訓練のパターン
モデル訓練のパターン
 
パターンのつながりとAI活用成熟度
パターンのつながりとAI活用成熟度パターンのつながりとAI活用成熟度
パターンのつながりとAI活用成熟度
 
データ表現のパターン
データ表現のパターンデータ表現のパターン
データ表現のパターン
 
機械学習デザインパターンの必要性と機械学習ライフサイクル
機械学習デザインパターンの必要性と機械学習ライフサイクル機械学習デザインパターンの必要性と機械学習ライフサイクル
機械学習デザインパターンの必要性と機械学習ライフサイクル
 
青山幹雄先生を偲んで(開拓、理論、実践、コミュニティ&国際)
青山幹雄先生を偲んで(開拓、理論、実践、コミュニティ&国際)青山幹雄先生を偲んで(開拓、理論、実践、コミュニティ&国際)
青山幹雄先生を偲んで(開拓、理論、実践、コミュニティ&国際)
 

ICST2015勉強会 Static Analysis トラック論文紹介

  • 1. ICST2015 勉強会 論文紹介 セッション: Static Analysis 静的解析 紹介者: 鷲崎 弘宜 早稲田大学グローバルソフトウェアエンジニアリング研究所 2015年7月4日
  • 2. “A Lightweight, Static Approach to Detecting Unbounded Thread-Instantiation Loops” Jing Xu 他 (University of Texas at Arlington) • 目的: 上限なくスレッドを生成してしまう可能性の あるループを簡易に発見 • アイディア: – スレッド生成の決定ロジックはたいていシンプル – 経験則によりパターンを幾つか定義 • 貢献 – 軽量なスレッド生成非有界ループの静的解析手法 – 手法のEclipseプラグイン実装 – 24のJavaサーバアプリケーションにおいて有用性を確 認 2
  • 3. 動機づけの例 • Tornado: マルチス レッドWebサーバ • minIdleThreadsは 定数 • しかしidleThreads は単調増加「しな い」可能性あり 3 1 public void run() { 2 int minIdleThreads = Tornado.getConfig().getMinIdle(); 3 int maxIdleThreads = Tornado.getConfig().getMaxIdle(); 4 while (true) { 5 try { 6 Thread.sleep(this.sleepTime); 7 } catch (InterruptedException e) {} 8 int idleThreads = this.threadPool.getIdleThreads(); 9 Tornado.log.debug(idleThreads + " idle; " + this.threadPool.getBusyThreads() + " busy"); 10 if (idleThreads < minIdleThreads) { 11 spawnThreads(minIdleThreads - idleThreads); 12 continue; 13 } 14 if (idleThreads <= maxIdleThreads) 15 continue; 16 killThreads(idleThreads - maxIdleThreads); 17 } 18 } 19 private void spawnThreads(int num) { 20 Tornado.log.debug(num + "new threads spawned"); 21 for (int i = 0; i < num; i++) 22 this.threadPool.addThread(); 23 } 24 public void addThread() { 25 ServerThread t = new ServerThread(this.serverGroup, this.taskPool, this); 26 t.start(); 27 } Jing Xu, et al, “A Lightweight, Static Approach to Detecting Unbounded Thread-Instantiation Loops,” ICST2015.
  • 4. 手法など • 具体的には – 5つのスレッド生成有界パターンを経験則で定義 – パス解析によりパターンに適合しなければNG判定 – 呼び出しやループのネスト数の制限により解析時間 を調整可能(従って見逃しもある) • 評価 – 24のJava OSSマルチスレッドサーバ – 41のNG判定、うち38は正しかった – 実行時間は数分~15時間以上 • 所感 – 実用を十分に検討(ただし見逃しは?) – やっぱりパターン! 4 Jing Xu, et al, “A Lightweight, Static Approach to Detecting Unbounded Thread-Instantiation Loops,” ICST2015.
  • 5. “QuickChecking Static Analysis Properties” Jan Midtgaard 他 (Aarhus University) • 目的: 動的言語における静的解析ツールの性質テスト • アイディア: – 静的解析の正しさは、仕様が束(ラティス)を形成することと、 その束上で関数が単調写像であること – 関数型言語向けのQuickchecking手法の応用: 入力の生成と 性質のテスト • 貢献: – 動的言語における型解析の束構造のテスト – テストしたい性質を定義する型安全なOcamlベースDSL – 型安全な汎用のコンビネータを複数用意 – Lua言語用の型解析系において欠陥を発見、単順なカバレッ ジテストでは発見困難 • 所感: 「静的解析ツールは正しいのか?」というメタな問 いへのチャレンジ。他にも同様の問いかけはありそう。 5
  • 6. 6 module L = struct let name = "examplelattice" type elem = Top | Bot let leq a b = match a,b with | Bot, _ -> true | _, Top -> true | _, _ -> false let join e e’ = if e = Bot then e’ else Top let meet e e’ = if e = Bot then Bot else e’ (* ... *) let to_string e = if e = Bot then "Bot" else "Top" end let flip e = if e = L.Bot then L.Top else L.Bot Jan Midtgaard, et al. “QuickChecking Static Analysis Properties,” ICST 2015. 単調写像ではない関数 TopとBotからなる束
  • 7. “Sound and Quasi-Complete Detection of Infeasible Test Requirements” Sebastien Bardin 他 (CEA) • 目的: 実行不可能なテスト要求を概ね全て静的解析 により自動検出 • アイディア: – 値解析と最弱事前条件計算の利用 – カバレッジ上のテスト要求 ⇒ ラベル ⇒ アサーション • 貢献: – 実行不可能なテスト要求の自動検出 – 12の小規模プログラムに対して、条件網羅、複数(複合) 条件網羅における実行不可能なテスト要求をほぼ全て検 出成功 – テスト自動生成の効率化に寄与: 平均3.8倍 • 所感: – 自動テスト用途では有用そう – 現実の一定規模プログラムにスケールするか? 7
  • 8. 8 statement_1; if (x==y && a<b) {...}; statement_3; statement_1; //! l1: x==y //! l2: x!=y //! l3: a<b //! l4: a>=b if (x==y && a<b) {...}; statement_3; statement_1; //! l1: x==y && a<b //! l2: x!=y && a<b //! l3: x==y && a>=b //! l4: x!=y && a>=b if (x==y && a<b) {...}; statement_3; 条件網羅 複数(複合)条件網羅 if (x) { //! l1: !x && !y if (!x || y) {...}; } if (x) { //@ assert !(!x && !y); if (!x || y) {...}; } 非実行可能なテスト要求から妥当な表明への変換 Sebastien Bardin, “Sound and Quasi-Complete Detection of Infeasible Test Requirements,” ICST2015.