Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
基于AST的代码优化
Search
flyerhzm
October 10, 2015
Programming
900
10
Share
基于AST的代码优化
flyerhzm
October 10, 2015
More Decks by flyerhzm
See All by flyerhzm
玩转 AST
flyerhzm
0
360
Find and Replace Code based on AST
flyerhzm
0
480
Rails Performance Tips
flyerhzm
0
1.4k
Refactor ruby code based on AST
flyerhzm
4
4.3k
Write ruby code to change ruby code
flyerhzm
5
3.8k
Building Asynchronous APIs
flyerhzm
25
9.1k
构建异步API服务
flyerhzm
19
7.4k
JRuby @ OpenFeint
flyerhzm
23
3.4k
Other Decks in Programming
See All in Programming
SkillがSkillを生む:QA観点出しを自動化した
sontixyou
6
3.4k
ハーネスエンジニアリングにどう向き合うか 〜ルールファイルを超えて開発プロセスを設計する〜 / How to approach harness engineering
rkaga
23
13k
CDK Deployのための ”反響定位”
watany
4
770
Google Nest CamとApple Vision frameworkと猫🐈🐈⬛ / onishi50
yutailang0119
0
110
10年分の技術的負債、完済へ ― Claude Code主導のAI駆動開発でスポーツブルを丸ごとリプレイスした話
takuya_houshima
0
2.6k
今こそ押さえておきたい アマゾンウェブサービス(AWS)の データベースの基礎 おもクラ #6版
satoshi256kbyte
1
250
AIベース静的検査器の偽陽性率を抑える工夫3選
orgachem
PRO
3
300
The Monolith Strikes Back: Why AI Agents ❤️ Rails Monoliths
serradura
0
330
Coding as Prompting Since 2025
ragingwind
0
830
의존성 주입과 모듈화
fornewid
0
140
How We Benchmarked Quarkus: Patterns and anti-patterns
hollycummins
1
140
ルールルルルルRubyの中身の予備知識 ── RubyKaigiの前に予習しなイカ?
ydah
1
180
Featured
See All Featured
Designing for Performance
lara
611
70k
Mind Mapping
helmedeiros
PRO
1
150
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
64
55k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
370
Into the Great Unknown - MozCon
thekraken
40
2.4k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
61
43k
Are puppies a ranking factor?
jonoalderson
1
3.3k
Marketing to machines
jonoalderson
1
5.2k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
730
Believing is Seeing
oripsolob
1
110
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
160
The Invisible Side of Design
smashingmag
302
52k
Transcript
基于 AST 的代码优化 ⻩黄志敏
⾃自我介绍 • Xinmin Labs 创始⼈人 • 前 OpenFeint 资深⼯工程师 •
开源社区贡献者 • 半⻢马完赛者 • @flyerhzm
遇到的问题
代码审查
None
None
重复重复重复
None
None
解决⽅方案
CodeClimate
None
None
PullReview
None
如何做到的
开源⼯工具!
flay 分析代码结构相似度
None
flog 分析代码复杂度
None
reek 检查代码类、模块和⽅方法,报告Code Smell
None
roodi 分析并报告代码设计问题
None
rails_best_practices 针对 rails 项⺫⽬目代码检查 code smell
None
如何实现的呢
ruby 代码解析库 => AST
ParseTree • 最早的 ruby 代码解析库 • 不⽀支持 ruby 1.9 和后续版本
ruby_parser • 最流⾏行的 ruby 代码解析库 • 输出结果和 ParseTree ⼀一致
None
None
ActiveRecord::Base belongs_to :user touch :archived_at def archive
ripper • ruby 内置的解析库 • ⽀支持 ruby 的新语法
None
ActiveRecord::Base belongs_to :user def archive touch :archived_at
parser • 新的 ruby 代码解析库 • ⽀支持代码重写
None
ActiveRecord::Base belongs_to :user def archive touch :archived_at
满⾜足需求?
⾃自动修改!
transpec ⾃自动将 rspec 2 的语法转换成 rspec 3 的语法
None
None
None
rubocop 基于社区版的 ruby style guide 的代码分析和重写⼯工具
None
None
None
None
Synvert ruby 语法转换⼯工具
None
None
None
演⽰示
内部项⺫⽬目
None
None
奖励 • seeing_is_believing • method_log
参考资料 CodeClimate - https://codeclimate.com/ PullReview - https://www.pullreview.com/ flay - https://github.com/seattlerb/flay
flog - https://github.com/seattlerb/flog reek - https://github.com/troessner/reek roodi - https://github.com/roodi/roodi rails_best_practices - https://github.com/railsbp/rails_best_practices
参考资料 parsetree - https://github.com/seattlerb/parsetree ruby_parser - https://github.com/seattlerb/ruby_parser parser - https://github.com/whitequark/parser
rubocop - https://github.com/bbatsov/rubocop transpec - https://github.com/yujinakayama/transpec synvert - https://github.com/xinminlabs/synvert
招聘 fl
[email protected]
谢谢 提问