<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
在大型專案開發過程中,經常會遇到列印大量紀錄檔,輸出資訊和在原始碼中寫註釋的情況。對於軟體開發來說,我們一般都是列印輸出英文的紀錄檔(主要考慮軟體在各種環境下的相容性,如果列印中文紀錄檔可能會出現亂碼,另外英文紀錄檔更容易搜尋,更容易後續做國際化),但是對於我們中國人來說,很容易就把中文全形的中文標點符號一不注意就寫到紀錄檔中了。不過原始碼中的註釋因為是完全面向開發者的,不會面向客戶,所以如果研發團隊全是中國人,那麼程式碼註釋用中文就更有效率。
在實際開發過程中,確實就發現了列印紀錄檔中包含了中文標點的情況,但是如果我們直接用中文標點在IDE中進行全文搜尋,就好發現大量的程式碼註釋使用中文標點,而到底哪裡是紀錄檔列印時的中文標點,哪裡是註釋中的中文標點,根本看不出來。於是我參考golangci-lint的程式碼掃描檢查功能,寫了一個Go原始碼中字串規範檢查的lint工具:strchecker。原始碼放在:https://github.com/studyzy/go-strchecker
strchecker可以掃描某個資料夾或者該資料夾下的所有子資料夾中的go程式碼,並對其中的go程式碼進行語法分析,構建語法樹,找到其中申明的常數、變數、函數引數、返回值、賦值、case語句等場景下的字串string型別,然後對這些字串進行正則匹配。系統預設的正則匹配方式是隻有ASCII字元才是合法字元,只要超過一個位元組的(比如中文、中文標點等都是多位元組的)就會被匹配到,而匹配到的字串就算是非法字串,並最終將這些非法字串列印出來。
下面舉一個範例:
1.安裝strchecker
go install github.com/studyzy/go-strchecker/cmd/strchecker@latest
2.找到我們要進行掃描的資料夾,這裡就以go-strchecker/testdata/ 這個資料夾為例,進行非法字串掃描。
strchecker $GOPATH/src/github.com/studyzy/go-strchecker/testdata
3.輸出結果如下:
/Users/devinzeng/go/src/github.com/studyzy/go-strchecker/testdata/call.go:9:60 has invalid string: "!"
/Users/devinzeng/go/src/github.com/studyzy/go-strchecker/testdata/call.go:10:11 has invalid string: "a!b"
/Users/devinzeng/go/src/github.com/studyzy/go-strchecker/testdata/call.go:11:5 has invalid string: "aa!"
/Users/devinzeng/go/src/github.com/studyzy/go-strchecker/testdata/call.go:12:40 has invalid string: "bb!"
/Users/devinzeng/go/src/github.com/studyzy/go-strchecker/testdata/main.go:10:30 has invalid string: "not found!"
/Users/devinzeng/go/src/github.com/studyzy/go-strchecker/testdata/main.go:12:17 has invalid string: "no,data!"
/Users/devinzeng/go/src/github.com/studyzy/go-strchecker/testdata/main.go:15:14 has invalid string: "Hello,World!"
/Users/devinzeng/go/src/github.com/studyzy/go-strchecker/testdata/main.go:16:12 has invalid string: "Current time:"
/Users/devinzeng/go/src/github.com/studyzy/go-strchecker/testdata/main.go:19:15 has invalid string: "한국어"
/Users/devinzeng/go/src/github.com/studyzy/go-strchecker/testdata/main.go:20:15 has invalid string: "にほんご"
/Users/devinzeng/go/src/github.com/studyzy/go-strchecker/testdata/main.go:22:14 has invalid string: ":)
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45