Soumettre la recherche
Mettre en ligne
C-HelperでC言語を効率的に学習しよう
•
6 j'aime
•
27,336 vues
Kota Uchida
Suivre
APASEC2013春で発表した資料です。 C-HelperはC言語初学者向きの静的解析ツールです。 サイボウズ・ラボユースで開発しました。
Lire moins
Lire la suite
Technologie
Signaler
Partager
Signaler
Partager
1 sur 43
Télécharger maintenant
Télécharger pour lire hors ligne
Recommandé
解説?FSharp.Quotations.Compiler
解説?FSharp.Quotations.Compiler
bleis tift
F#の基礎(?)
F#の基礎(?)
bleis tift
第76回TokyoR
第76回TokyoR
ShoKato2
スペル修正プログラムの作り方 #pronama
スペル修正プログラムの作り方 #pronama
Hiroyoshi Komatsu
C# コンパイラーの書き換え作業の話
C# コンパイラーの書き換え作業の話
信之 岩永
きつねさんでもわかるLLVM読書会amagasaki.rb第5章
きつねさんでもわかるLLVM読書会amagasaki.rb第5章
Takayuki Kurosawa
Introduction to Erlang/OTP
Introduction to Erlang/OTP
Masahiko Sakamoto
わんくま東京#38 LT 「Func<> と ref / out 小咄」
わんくま東京#38 LT 「Func<> と ref / out 小咄」
Takeshi Kiriya
Recommandé
解説?FSharp.Quotations.Compiler
解説?FSharp.Quotations.Compiler
bleis tift
F#の基礎(?)
F#の基礎(?)
bleis tift
第76回TokyoR
第76回TokyoR
ShoKato2
スペル修正プログラムの作り方 #pronama
スペル修正プログラムの作り方 #pronama
Hiroyoshi Komatsu
C# コンパイラーの書き換え作業の話
C# コンパイラーの書き換え作業の話
信之 岩永
きつねさんでもわかるLLVM読書会amagasaki.rb第5章
きつねさんでもわかるLLVM読書会amagasaki.rb第5章
Takayuki Kurosawa
Introduction to Erlang/OTP
Introduction to Erlang/OTP
Masahiko Sakamoto
わんくま東京#38 LT 「Func<> と ref / out 小咄」
わんくま東京#38 LT 「Func<> と ref / out 小咄」
Takeshi Kiriya
Fluent Feature in F#
Fluent Feature in F#
igeta
鬱くしい日本語のための形態素解析入門
鬱くしい日本語のための形態素解析入門
Hiroyoshi Komatsu
C#erがF#に這い寄ってみた
C#erがF#に這い寄ってみた
Hiroshi Maekawa
RFinanceJはじめました
RFinanceJはじめました
Nagi Teramo
文字の正統性
文字の正統性
t yamo
C++でぼくが忘れがちなこと
C++でぼくが忘れがちなこと
Toshihiko Ando
eSys01krtt
eSys01krtt
kurotatu
esys01krtt
esys01krtt
Tatsuya Ishiguro
正規言語でプログラミング
正規言語でプログラミング
Ryoma Sin'ya
Ruby × Arduinoで フィジカルコンピューティング やってみた
Ruby × Arduinoで フィジカルコンピューティング やってみた
shiftky
人が神姫ん感(原文ママ)を感じるコンピュータ
人が神姫ん感(原文ママ)を感じるコンピュータ
haru2036
ラボユース最終成果報告会(Web公開版)
ラボユース最終成果報告会(Web公開版)
Shinichi Awamoto
世界最速の正規表現JITエンジンの実装
世界最速の正規表現JITエンジンの実装
Ryoma Sin'ya
中間成果報告会 発表資料
中間成果報告会 発表資料
sn_monochr
サイボウズ・ラボユース 最終成果報告会プレゼンテーション
サイボウズ・ラボユース 最終成果報告会プレゼンテーション
sn_monochr
Emnlp読み会資料
Emnlp読み会資料
Jiro Nishitoba
EMNLP 2015 yomikai
EMNLP 2015 yomikai
Yo Ehara
Humor Recognition and Humor Anchor Extraction
Humor Recognition and Humor Anchor Extraction
裕樹 奥田
星野「調査観察データの統計科学」第3章
星野「調査観察データの統計科学」第3章
Shuyo Nakatani
Learning Better Embeddings for Rare Words Using Distributional Representations
Learning Better Embeddings for Rare Words Using Distributional Representations
Takanori Nakai
星野「調査観察データの統計科学」第1&2章
星野「調査観察データの統計科学」第1&2章
Shuyo Nakatani
[Yang, Downey and Boyd-Graber 2015] Efficient Methods for Incorporating Knowl...
[Yang, Downey and Boyd-Graber 2015] Efficient Methods for Incorporating Knowl...
Shuyo Nakatani
Contenu connexe
Tendances
Fluent Feature in F#
Fluent Feature in F#
igeta
鬱くしい日本語のための形態素解析入門
鬱くしい日本語のための形態素解析入門
Hiroyoshi Komatsu
C#erがF#に這い寄ってみた
C#erがF#に這い寄ってみた
Hiroshi Maekawa
RFinanceJはじめました
RFinanceJはじめました
Nagi Teramo
文字の正統性
文字の正統性
t yamo
C++でぼくが忘れがちなこと
C++でぼくが忘れがちなこと
Toshihiko Ando
eSys01krtt
eSys01krtt
kurotatu
esys01krtt
esys01krtt
Tatsuya Ishiguro
Tendances
(8)
Fluent Feature in F#
Fluent Feature in F#
鬱くしい日本語のための形態素解析入門
鬱くしい日本語のための形態素解析入門
C#erがF#に這い寄ってみた
C#erがF#に這い寄ってみた
RFinanceJはじめました
RFinanceJはじめました
文字の正統性
文字の正統性
C++でぼくが忘れがちなこと
C++でぼくが忘れがちなこと
eSys01krtt
eSys01krtt
esys01krtt
esys01krtt
En vedette
正規言語でプログラミング
正規言語でプログラミング
Ryoma Sin'ya
Ruby × Arduinoで フィジカルコンピューティング やってみた
Ruby × Arduinoで フィジカルコンピューティング やってみた
shiftky
人が神姫ん感(原文ママ)を感じるコンピュータ
人が神姫ん感(原文ママ)を感じるコンピュータ
haru2036
ラボユース最終成果報告会(Web公開版)
ラボユース最終成果報告会(Web公開版)
Shinichi Awamoto
世界最速の正規表現JITエンジンの実装
世界最速の正規表現JITエンジンの実装
Ryoma Sin'ya
中間成果報告会 発表資料
中間成果報告会 発表資料
sn_monochr
サイボウズ・ラボユース 最終成果報告会プレゼンテーション
サイボウズ・ラボユース 最終成果報告会プレゼンテーション
sn_monochr
Emnlp読み会資料
Emnlp読み会資料
Jiro Nishitoba
EMNLP 2015 yomikai
EMNLP 2015 yomikai
Yo Ehara
Humor Recognition and Humor Anchor Extraction
Humor Recognition and Humor Anchor Extraction
裕樹 奥田
星野「調査観察データの統計科学」第3章
星野「調査観察データの統計科学」第3章
Shuyo Nakatani
Learning Better Embeddings for Rare Words Using Distributional Representations
Learning Better Embeddings for Rare Words Using Distributional Representations
Takanori Nakai
星野「調査観察データの統計科学」第1&2章
星野「調査観察データの統計科学」第1&2章
Shuyo Nakatani
[Yang, Downey and Boyd-Graber 2015] Efficient Methods for Incorporating Knowl...
[Yang, Downey and Boyd-Graber 2015] Efficient Methods for Incorporating Knowl...
Shuyo Nakatani
A Neural Attention Model for Sentence Summarization [Rush+2015]
A Neural Attention Model for Sentence Summarization [Rush+2015]
Yuta Kikuchi
Kubernetes in 30 minutes (2017/03/10)
Kubernetes in 30 minutes (2017/03/10)
lestrrat
並列化と実行時コード生成を用いた正規表現マッチングの高速化
並列化と実行時コード生成を用いた正規表現マッチングの高速化
Ryoma Sin'ya
2016プロシンスポンサー 加筆版
2016プロシンスポンサー 加筆版
Hirokazu Nishio
rust primer
rust primer
You&I
I2CでRaspberry Piから複数の周辺機器を制御する
I2CでRaspberry Piから複数の周辺機器を制御する
Hirokazu Nishio
En vedette
(20)
正規言語でプログラミング
正規言語でプログラミング
Ruby × Arduinoで フィジカルコンピューティング やってみた
Ruby × Arduinoで フィジカルコンピューティング やってみた
人が神姫ん感(原文ママ)を感じるコンピュータ
人が神姫ん感(原文ママ)を感じるコンピュータ
ラボユース最終成果報告会(Web公開版)
ラボユース最終成果報告会(Web公開版)
世界最速の正規表現JITエンジンの実装
世界最速の正規表現JITエンジンの実装
中間成果報告会 発表資料
中間成果報告会 発表資料
サイボウズ・ラボユース 最終成果報告会プレゼンテーション
サイボウズ・ラボユース 最終成果報告会プレゼンテーション
Emnlp読み会資料
Emnlp読み会資料
EMNLP 2015 yomikai
EMNLP 2015 yomikai
Humor Recognition and Humor Anchor Extraction
Humor Recognition and Humor Anchor Extraction
星野「調査観察データの統計科学」第3章
星野「調査観察データの統計科学」第3章
Learning Better Embeddings for Rare Words Using Distributional Representations
Learning Better Embeddings for Rare Words Using Distributional Representations
星野「調査観察データの統計科学」第1&2章
星野「調査観察データの統計科学」第1&2章
[Yang, Downey and Boyd-Graber 2015] Efficient Methods for Incorporating Knowl...
[Yang, Downey and Boyd-Graber 2015] Efficient Methods for Incorporating Knowl...
A Neural Attention Model for Sentence Summarization [Rush+2015]
A Neural Attention Model for Sentence Summarization [Rush+2015]
Kubernetes in 30 minutes (2017/03/10)
Kubernetes in 30 minutes (2017/03/10)
並列化と実行時コード生成を用いた正規表現マッチングの高速化
並列化と実行時コード生成を用いた正規表現マッチングの高速化
2016プロシンスポンサー 加筆版
2016プロシンスポンサー 加筆版
rust primer
rust primer
I2CでRaspberry Piから複数の周辺機器を制御する
I2CでRaspberry Piから複数の周辺機器を制御する
C-HelperでC言語を効率的に学習しよう
1.
C-HelperでC言語を
効率よく勉強しよう サイボウズ・ラボユース 成果報告 13年4月5日金曜日
2.
自己紹介
• サイボウズ・ラボユース2期生 • プログラミング教育に興味あり 13年4月5日金曜日
3.
いざ会場へ 13年4月5日金曜日
4.
迷った!! 13年4月5日金曜日
5.
迷った!!
_人人人人人人人人_ > 20分無駄歩き <  ̄Y^Y^Y^Y^Y^Y^Y ̄ 13年4月5日金曜日
6.
会場発見
• 会場「BumB」はセキュリティに配慮 • その証拠↓ 13年4月5日金曜日
7.
会場発見
• 会場「BumB」はセキュリティに配慮 • その証拠↓ 13年4月5日金曜日
8.
おまけ
(本編) 13年4月5日金曜日
9.
独学 13年4月5日金曜日
10.
独学
本を買う 13年4月5日金曜日
11.
独学
本を買う 読む 13年4月5日金曜日
12.
独学
本を買う 読む 分からない 13年4月5日金曜日
13.
独学
本を買う 読む 分からない 質問する人がいない 13年4月5日金曜日
14.
独学
本を買う 読む 分からない 質問する人がいない :::::::::::::::::::: :::::::::::::::: :::::::::::: Λ_Λ ::::::: /彡ミヘ )ー、 :::: /:ノ:ヽ \::| ::: /:|:: \ ヽ| ::: ‾ ̄L_ノ‾ ̄‾ ̄‾ ̄\ノ‾ ̄‾ ̄ 13年4月5日金曜日
15.
独学 13年4月5日金曜日
16.
独学
∧_∧ 掲示板に質問する ( ·・ω·・) _| ⊃/(___ / └-(____/ 13年4月5日金曜日
17.
独学
∧_∧ 掲示板に質問する ( ·・ω·・) _| ⊃/(___ / └-(____/ <͡/ヽ-、___ /<_/____/ 返信来ない 13年4月5日金曜日
18.
そうだ
自動化、 しよう。 13年4月5日金曜日
19.
C-Helperとは 13年4月5日金曜日
20.
C-Helperとは
• C言語初学者向け静的解析ツール • Eclipseプラグイン 13年4月5日金曜日
21.
静的解析
ソースコード 様々な解析 警告・提案 13年4月5日金曜日
22.
検出例 インデントの乱れ
1 void f(void) { 2 int i; 3 while(!foo()){ 4 for(i=0;i<20;i++){ 5 bar();} 6 } 7 } test.c:2:1:行頭から書き始めるのは分かりにくいため、 スペース 4 個分インデントすべきです。 test.c:4:1:インデントが乱れています。 スペース 8 個分インデントすべきです。 test.c:5:1:インデントが乱れています。 スペース 12 個 分インデントすべきです。 13 / 33 13年4月5日金曜日
23.
検出例 インデントの乱れ
1 void f(void) { 2 int i; 3 while(!foo()){ 4 for(i=0;i<20;i++){ 5 bar();} 6 } 7 } test.c:2:1:行頭から書き始めるのは分かりにくいため、 スペース 4 個分インデントすべきです。 test.c:4:1:インデントが乱れています。 スペース 8 個分インデントすべきです。 test.c:5:1:インデントが乱れています。 スペース 12 個 分インデントすべきです。 14 / 33 13年4月5日金曜日
24.
検出例 インデントの乱れ
1 void f(void) { 2 int i; 3 while(!foo()){ 4 for(i=0;i<20;i++){ 5 bar();} 6 } 7 } test.c:2:1:行頭から書き始めるのは分かりにくいため、 スペース 4 個分インデントすべきです。 test.c:4:1:インデントが乱れています。 スペース 8 個分インデントすべきです。 test.c:5:1:インデントが乱れています。 スペース 12 個 分インデントすべきです。 15 / 33 13年4月5日金曜日
25.
検出例 インデントの乱れ
1 void f(void) { 2 int i; 3 while(!foo()){ 4 for(i=0;i<20;i++){ 5 bar();} 6 } 7 } test.c:2:1:行頭から書き始めるのは分かりにくいため、 スペース 4 個分インデントすべきです。 test.c:4:1:インデントが乱れています。 スペース 8 個分インデントすべきです。 test.c:5:1:インデントが乱れています。 スペース 12 個 分インデントすべきです。 16 / 33 13年4月5日金曜日
26.
検出例 文字列の代入
void f(void) { char arr[20]; arr[20] = "string"; } char型配列の1つの要素に文字列を格納できません。 strcpy を使うことを検討してください。 17 / 33 13年4月5日金曜日
27.
検出例 余分なセミコロン
int main(void); { } 関数定義にはセミコロン ; を付けません。 Splint test.c:2:2: Parse Error. (For help on parse errors, see splint -help parseerrors.) *** Cannot continue. 18 / 33 13年4月5日金曜日
28.
検出例 sizeofの使用
char *p = malloc(128); printf("%un", sizeof(p)); sizeof(p) は 128 ではなく 4 を返します (仮定6)。 それは本当に意図したことですか? 仮定 6: ポインタ変数のサイズを 4 バイト と仮定しています 19 / 33 13年4月5日金曜日
29.
検出例 メモリリーク
int f(void) { char *p, *q; p = malloc(10); q = malloc(20); if (!q) return -1; // do something free(p); free(q); return 0; } メモリリークする可能性があります 20 / 33 13年4月5日金曜日
30.
検出例 実体定義
hoge.c #include "hoge.h" hoge.h int g_x; ヘッダファイルには実体を定義すべきではありません。 (extern宣言を用いてください。 (extern int g_x;) ) 21 / 33 13年4月5日金曜日
31.
実装
• ソースコードをEclipse CDTでパース • 型情報付き抽象構文木を取得 ソースコード 抽象構文木 標準ヘッダ 制御フロー 最小限の内容 到達定義 22 / 33 13年4月5日金曜日
32.
実装
• 制御フロー情報を基にポインタ解析 • 種々の情報を組み合わせ、問題を検出 制御フロー ポインタ解析 抽象構文木 問題検出 指摘・提案 到達定義 23 / 33 13年4月5日金曜日
33.
ねらい 13年4月5日金曜日
34.
ねらい
• 初学者が陥りやすいミスを認識 13年4月5日金曜日
35.
ねらい
• 初学者が陥りやすいミスを認識 • 分かりやすい言葉で指摘 13年4月5日金曜日
36.
ねらい
• 初学者が陥りやすいミスを認識 • 分かりやすい言葉で指摘 • 可能なら解決策を提案 13年4月5日金曜日
37.
ねらい
• 初学者が陥りやすいミスを認識 • 分かりやすい言葉で指摘 • 可能なら解決策を提案 • →学習効率が向上! 13年4月5日金曜日
38.
合宿でやったこと
• バグ取り • 新機能の実装 • 囲碁 • 政治談義 13年4月5日金曜日
39.
新機能 13年4月5日金曜日
40.
新機能
• 宣言されていない関数名を警告 • 標準関数→ヘッダ名 13年4月5日金曜日
41.
使ってみよう
• ブログで使い方など紹介 「uchanote c-helper」で検索! • アンケートにご協力を 修士論文研究の一環なんです… 13年4月5日金曜日
42.
まとめ
• バグが取れた • 新機能ができた • 政治談義できた 13年4月5日金曜日
43.
まとめ
• バグが取れた • 新機能ができた • 政治談義できた 有意義な合宿!! 13年4月5日金曜日
Télécharger maintenant