代碼分析:一條命令跑通你的第一次代碼掃描)
Semgrep 靜態(tài)代碼分析一條命令跑通你的第一次代碼掃描【免費(fèi)下載鏈接】semgrepLightweight static analysis for many languages. Find bug variants with patterns that look like source code.項(xiàng)目地址: https://gitcode.com/GitHub_Trending/se/semgrep上線前你大概翻過三遍代碼找有沒有寫死的密鑰和危險調(diào)用。Semgrep 是個靜態(tài)代碼分析工具把這類檢查變成一條命令的事。下面帶你從安裝到出結(jié)果走完整個流程。先搞清楚Semgrep 是干什么的它給誰用給寫業(yè)務(wù)代碼、又不想學(xué)一堆靜態(tài)分析術(shù)語的你。它做什么拿你寫的代碼模式去匹配整個倉庫報出可疑位置。寫規(guī)則時不用碰抽象語法樹也不用和正則較勁模式本身就長得像源碼。它怎么跑在你本機(jī)或構(gòu)建環(huán)境里執(zhí)行代碼默認(rèn)不上傳。最快的安裝方式三種裝法挑一個就行# macOS brew install semgrep # Ubuntu / Linux / macOS python3 -m pip install semgrep # 或者不裝直接跑 Docker docker run --rm -v ${PWD}:/src semgrep/semgrep semgrep --version然后驗(yàn)證一下semgrep --version能打印出版本號就說明裝好了。在倉庫里掃第一遍進(jìn)到任意項(xiàng)目的根目錄執(zhí)行semgrep scan --configauto--configauto會按你的代碼語言自動挑一套現(xiàn)成規(guī)則。掃完它會逐條列出發(fā)現(xiàn)文件位置、哪一行、什么問題、建議怎么改不用再逐行翻日志了。寫一條自己的規(guī)則想讓檢查符合項(xiàng)目自己的規(guī)范在項(xiàng)目根目錄建一個my-rules.yml把團(tuán)隊(duì)約定寫進(jìn)去rules: - id: python-no-prints-in-prod languages: [python] pattern: print(...) message: 生產(chǎn)代碼請用 logging別用 print severity: INFO再跑semgrep scan --configmy-rules.yml代碼里的print()就會被逐處標(biāo)記出來。規(guī)則文件支持 30 多種語言語法就是你平時寫的代碼本身。多攢幾條倉庫里就有現(xiàn)成的用例可以參考tests/rules/。新手踩坑速查現(xiàn)象掃描速度慢 → 處理用--include*.py之類參數(shù)把范圍縮小到指定目錄或文件?,F(xiàn)象寫了規(guī)則卻沒命中 → 處理檢查languages字段是否和文件后綴對得上模式寫法以真實(shí)代碼為準(zhǔn)。現(xiàn)象誤報看著心煩 → 處理把severity調(diào)低或用--exclude把無關(guān)目錄排除掉。把掃描放進(jìn)提交前和 CI在 Makefile 里加一個目標(biāo)提交前或 CI 里跑一下每次只盯著新增問題check: semgrep scan --configauto --error--error會在發(fā)現(xiàn)問題時返回非零退出碼流水線就能據(jù)此卡住構(gòu)建。現(xiàn)在就做裝好 Semgrep跑一次semgrep scan --configauto看看你的項(xiàng)目現(xiàn)在有什么。挑一條最煩人的問題寫條自己的規(guī)則盯住它。把掃描接進(jìn) CI讓檢查在合并前自動完成。工具裝好了剩下的交給命令?!久赓M(fèi)下載鏈接】semgrepLightweight static analysis for many languages. Find bug variants with patterns that look like source code.項(xiàng)目地址: https://gitcode.com/GitHub_Trending/se/semgrep創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考