原創(chuàng)聲明
此博客在簡(jiǎn)書(shū)創(chuàng)作,作者為海內(nèi)尋知己 http://www.reibang.com/p/d61ce1c820e0, 轉(zhuǎn)載請(qǐng)注明原文出處和作者,不遵守以上規(guī)則禁止轉(zhuǎn)載,請(qǐng)支持原創(chuàng)辱士。
博主現(xiàn)在公司工作每天都很多肉迫,最近感覺(jué)很累威酒,不禁思考軟件工程是否必定意味著“加班和勞累”圆兵。正在這時(shí)看到伯樂(lè)博客的一篇翻譯博文《程序員偷偷自動(dòng)化砾层,每周才工作幾小時(shí)卻拿全薪史侣,這樣道德么拴泌?》啟發(fā)了自己對(duì)軟件工程自動(dòng)化的思考。
然后博主對(duì)手頭上的工作進(jìn)行了思考惊橱,希望找出能夠自動(dòng)化解決的任務(wù)蚪腐,這樣減少自己的負(fù)擔(dān)。自己是ruby on rails的工程師税朴,老大對(duì)自己強(qiáng)調(diào)過(guò)每次提交代碼到遠(yuǎn)程需要ruby代碼語(yǔ)法檢測(cè)回季。所謂語(yǔ)法檢測(cè)就是在linux終端執(zhí)行:
ruby -c contracts_controller.rb
ruby -c contract.rb
ruby -c routes.rb
。正林。泡一。
因?yàn)樵撁畈恢С侄鄠€(gè)文件參數(shù),這樣每次提交代碼之前需要檢查每個(gè)rb文件(ruby文件)觅廓,而且該命令不支持rails視圖文件(erb文件)的語(yǔ)法檢測(cè)鼻忠,所以我要人工區(qū)分rb和erb文件。這樣每次提交的文件少了也得7杈绸、8個(gè)文件帖蔓,多了就一二十個(gè)了,這樣一個(gè)提交代碼的工作我需要5分鐘到10分鐘時(shí)間來(lái)費(fèi)心思做這個(gè)蝇棉,唉讨阻,想想都難受。
因此自己花時(shí)間寫(xiě)了個(gè)linux bash shell 腳本來(lái)自動(dòng)化這個(gè)任務(wù)(ruby_c.sh):
#!/bin/bash
# check ruby code syntax errors
var=`git status -s | grep '\.rb' | tr -d 'M' | tr -d '\n' | tr -d '??' | tr -d 'D'`
cat $var | ruby -c
解釋?zhuān)?/p>
運(yùn)行該文件需要賦予該文件可執(zhí)行權(quán)限篡殷,具體命令為“ chmod 755 ruby_c.sh”,
腳本解釋?zhuān)?/p>
git status -s? 列出所有改動(dòng)钝吮、刪除、新增的文件
grep '\.rb'? 篩選出ruby文件
tr -d 'M'? 去掉字母M
tr -d '\n'? 去掉換行
tr -d '??' 去掉板辽?奇瘦?號(hào)
tr -d 'D' 去掉字母D
這些命令通過(guò)linux管道符“ | ”傳輸,之后賦值給變量var
cat $var 鏈接所有ruby文件
cat $var | ruby -c 把鏈接后的ruby代碼傳輸給ruby -c命令
這樣在提交代碼之前只需要執(zhí)行ruby_c.sh腳本劲弦,他就會(huì)智能的把所有的ruby文件進(jìn)行語(yǔ)法檢測(cè)耳标。啊,再也不用浪費(fèi)我的時(shí)間了邑跪,哈哈