原創聲明
此博客在簡書創作,作者為海內尋知己 http://www.lxweimin.com/p/d61ce1c820e0, 轉載請注明原文出處和作者,不遵守以上規則禁止轉載,請支持原創。
博主現在公司工作每天都很多,最近感覺很累,不禁思考軟件工程是否必定意味著“加班和勞累”。正在這時看到伯樂博客的一篇翻譯博文《程序員偷偷自動化,每周才工作幾小時卻拿全薪,這樣道德么?》啟發了自己對軟件工程自動化的思考。
然后博主對手頭上的工作進行了思考,希望找出能夠自動化解決的任務,這樣減少自己的負擔。自己是ruby on rails的工程師,老大對自己強調過每次提交代碼到遠程需要ruby代碼語法檢測。所謂語法檢測就是在linux終端執行:
ruby -c contracts_controller.rb
ruby -c contract.rb
ruby -c routes.rb
。。。
因為該命令不支持多個文件參數,這樣每次提交代碼之前需要檢查每個rb文件(ruby文件),而且該命令不支持rails視圖文件(erb文件)的語法檢測,所以我要人工區分rb和erb文件。這樣每次提交的文件少了也得7、8個文件,多了就一二十個了,這樣一個提交代碼的工作我需要5分鐘到10分鐘時間來費心思做這個,唉,想想都難受。
因此自己花時間寫了個linux bash shell 腳本來自動化這個任務(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
解釋:
運行該文件需要賦予該文件可執行權限,具體命令為“ chmod 755 ruby_c.sh”,
腳本解釋:
git status -s? 列出所有改動、刪除、新增的文件
grep '\.rb'? 篩選出ruby文件
tr -d 'M'? 去掉字母M
tr -d '\n'? 去掉換行
tr -d '??' 去掉??號
tr -d 'D' 去掉字母D
這些命令通過linux管道符“ | ”傳輸,之后賦值給變量var
cat $var 鏈接所有ruby文件
cat $var | ruby -c 把鏈接后的ruby代碼傳輸給ruby -c命令
這樣在提交代碼之前只需要執行ruby_c.sh腳本,他就會智能的把所有的ruby文件進行語法檢測。啊,再也不用浪費我的時間了,哈哈