新聞中心
眾所周知,靜態(tài)代碼分析可以協(xié)助開(kāi)發(fā)人員改進(jìn)程序代碼的質(zhì)量。而在DevOps實(shí)踐中,我們通過(guò)將靜態(tài)分析集成到正在開(kāi)發(fā)的工作流程中,從而在開(kāi)發(fā)的早期階段解決代碼的質(zhì)量問(wèn)題。當(dāng)然,這也使得持續(xù)集成(CI)流程增加了一個(gè)額外的階段--每當(dāng)有新的代碼產(chǎn)生合并請(qǐng)求時(shí),CI服務(wù)器(或第三方服務(wù))便會(huì)開(kāi)始分析代碼的質(zhì)量,并將結(jié)果放入合并請(qǐng)求中,以供提交者和代碼審查者使用。

為了讓審查者更需專注于代碼本身,我們往往需要自動(dòng)化的代碼審查工具,與開(kāi)發(fā)周期相集成,以實(shí)現(xiàn)即使新的代碼尚未合并到主代碼庫(kù)中,也能夠執(zhí)行代碼審查。您可以根據(jù)實(shí)際項(xiàng)目所用到的技術(shù)棧,從如下七種工具中進(jìn)行選擇,并無(wú)縫地集成到現(xiàn)有的工作流中。
1. DeepSource
DeepSource是一種靜態(tài)分析工具,可用于查找反模式、代碼缺陷、運(yùn)行性能等方面的問(wèn)題。除了代碼檢測(cè),DeepSource還會(huì)生成并跟蹤諸如:依賴項(xiàng)計(jì)數(shù)、文檔覆蓋率等指標(biāo)。DeepSource的Autofix功能可以提出各種修復(fù)建議,并使用戶能夠針對(duì)常見(jiàn)問(wèn)題創(chuàng)建提取請(qǐng)求。目前,DeepSource能夠與Bitbucket、GitHub或GitLab等帳戶輕松地相整合。此外,DeepSource還提供自動(dòng)化的拉取請(qǐng)求,以方便分析器掃描已更改的文件,并將識(shí)別出的問(wèn)題,直接報(bào)告并發(fā)送給UI。
主要特點(diǎn)
- 相對(duì)其他工具,其分析器能夠檢測(cè)到更多的缺陷。
- 能夠自動(dòng)修復(fù)各種問(wèn)題,以及格式化代碼。
- 提供更好的集成和開(kāi)發(fā)人員體驗(yàn)。
- 能夠保證誤報(bào)率低于5%。
- 可選擇性地忽略某些暫不處理的問(wèn)題。
缺點(diǎn)
- 不支持PHP語(yǔ)言。
價(jià)格:DeepSource可被免費(fèi)用于開(kāi)源組織、學(xué)生組織、以及非營(yíng)利組織。其售價(jià)為每用戶每月12美元。
2. Codacy
Codacy能夠協(xié)助開(kāi)發(fā)人員通過(guò)解決程序中的技術(shù)難題,來(lái)提高代碼的質(zhì)量。它可以從代碼復(fù)雜性、兼容性、易錯(cuò)性、安全性、以及代碼樣式等方面,來(lái)衡量代碼的質(zhì)量。Codacy也可以根據(jù)待實(shí)現(xiàn)的項(xiàng)目目標(biāo),按照文件或類別,來(lái)提供需要遵循的步驟、以及解決問(wèn)題的建議。
主要特點(diǎn)
- 能夠從代碼樣式、安全性、錯(cuò)誤傾向性、性能、以及未用到的代碼等類別跟蹤問(wèn)題。
- 可分析提交和拉取請(qǐng)求。
- 能夠?qū)μ峤缓屠≌?qǐng)求實(shí)現(xiàn)自動(dòng)注釋。
缺點(diǎn)
- 缺乏與其他SaaS服務(wù)的集成,包括:Sonatype、Blackduck、由AWS API Gateway提供的API QOS指標(biāo),以及UI/E2E的各種Saas測(cè)試服務(wù)。
- 無(wú)法加密項(xiàng)目的相關(guān)信息,或限制對(duì)UI源代碼的訪問(wèn)。
- 其用戶社區(qū)相對(duì)較小。
價(jià)格:Codacy既提供免費(fèi)的開(kāi)源計(jì)劃,又具有起售價(jià)為每用戶每月15美元的高級(jí)計(jì)劃。
3. Code Climate
Code Climate既是一種代碼覆蓋率工具,又是一種自動(dòng)化的源代碼審查器。通過(guò)與GitHub等平臺(tái)的集成,它能夠在持續(xù)集成的過(guò)程中,針對(duì)代碼庫(kù)的重復(fù)性、復(fù)雜性、樣式等因素進(jìn)行維護(hù)檢查。同時(shí),Code Climate能夠根據(jù)各種既定的標(biāo)準(zhǔn),對(duì)目標(biāo)代碼環(huán)境的可維護(hù)性,進(jìn)行從A到F的分級(jí)。
主要特點(diǎn)
- 對(duì)拉取請(qǐng)求提供代碼審查級(jí)的注釋。
- 能為每個(gè)拉取請(qǐng)求生成測(cè)試覆蓋率。
- 使用CLI或IDE集成的方式,在本地執(zhí)行分析。
缺點(diǎn)
- 無(wú)法預(yù)測(cè)API。
- 不支持Objective-C。
- 其報(bào)告中只有帶有源代碼的標(biāo)頭,不提供對(duì)于發(fā)現(xiàn)問(wèn)題的詳細(xì)描述。
- 只能將所有問(wèn)題都以分頁(yè)列表的形式顯示,無(wú)法提供搜索/過(guò)濾。
價(jià)格:Code Climate對(duì)于10個(gè)用戶數(shù)以下的團(tuán)隊(duì)是免費(fèi)的,其入門版的起售價(jià)為449美元,而企業(yè)版的起售價(jià)為649美元。
4. Codebeat
作為一種自動(dòng)化代碼審查工具,Codebeat可以將靜態(tài)代碼分析的結(jié)果,收集到一個(gè)包含了代碼風(fēng)格、安全漏洞、待改進(jìn)代碼等信息的實(shí)時(shí)報(bào)告中。與流行工具--Code Climate的A到F分級(jí)標(biāo)準(zhǔn)類似,Codebeat使用的是4.0的等級(jí)系統(tǒng)。不過(guò),與Code Climate不同的是,Codebeat通過(guò)使用算法,來(lái)分析代碼的復(fù)雜性。
主要特點(diǎn)
- 作為一款出色的團(tuán)隊(duì)管理工具,它可以為項(xiàng)目中的流動(dòng)人員分配不同的訪問(wèn)級(jí)別。
- 能夠與Slack、GitHub、Bitbucket和GitLab相集成。
缺點(diǎn)
- 無(wú)法檢測(cè)安全相關(guān)問(wèn)題。
- 不支持CSS/SCSS的分析。
價(jià)格:Codebeat公共存儲(chǔ)庫(kù)是免費(fèi)的,而私有存儲(chǔ)庫(kù)則需每月收費(fèi)20美元(https://codebeat.co/pricing)。
5. Sonarcloud
Sonarcloud是一種基于云的代碼質(zhì)量工具與安全服務(wù)。它通過(guò)強(qiáng)大的靜態(tài)代碼分析能力,來(lái)跟蹤成千上萬(wàn)種難以被發(fā)現(xiàn)的錯(cuò)誤和質(zhì)量問(wèn)題。同時(shí),它也能根據(jù)檢測(cè)報(bào)告,估算代碼的覆蓋率。Sonarcloud為分析器提供了大量的規(guī)則,其中包括有關(guān)代碼風(fēng)格、錯(cuò)誤、以及漏洞等方面的186種不同類型的JavaScript規(guī)則。
主要特點(diǎn)
- 當(dāng)檢測(cè)到特定的違規(guī)代碼時(shí),它能夠阻斷拉取請(qǐng)求。
- 能夠發(fā)送帶有注釋的分析報(bào)告。
- 如果代碼質(zhì)量或安全性與需求不匹配,則會(huì)將管道設(shè)置為失敗。
缺點(diǎn)
- 不提供對(duì)于已編譯語(yǔ)言的自動(dòng)掃描。
價(jià)格:Sonarcloud的社區(qū)版是免費(fèi)且開(kāi)源的。如果用戶的代碼行數(shù)(LOC)達(dá)到100k,則起售價(jià)為每月10歐元。
6. Embold
作為一個(gè)靜態(tài)分析平臺(tái),Embold提供了AI輔助代碼測(cè)試,可識(shí)別代碼的脆弱性與漏洞,并能提出相應(yīng)的解決方案。它不但提供了云端和本地實(shí)例,而且為Intellij IDEA提供了免費(fèi)的插件,因此您可以使用其快速掃描程序,來(lái)檢測(cè)Java代碼中潛在的錯(cuò)誤、漏洞和代碼風(fēng)格,并在團(tuán)隊(duì)編輯代碼時(shí)提供實(shí)時(shí)的反饋。通過(guò)其評(píng)級(jí)功能,用戶可以一次性了解代碼的整體質(zhì)量,并獲悉存在問(wèn)題的區(qū)域。
主要特點(diǎn)
- 其質(zhì)量門(Quality Gates)功能允許用戶設(shè)置存儲(chǔ)庫(kù)的質(zhì)量閾值。
- 其推薦引擎(Recommendation Engine,beta版)可以通過(guò)“學(xué)習(xí)”曾在代碼庫(kù)中發(fā)現(xiàn)到的問(wèn)題,提前在新的代碼被提交之前,解決各種潛在問(wèn)題。
- 其反模式可視化(Antipattern Visualization)功能能夠以圖形化的表示形式,解讀各種反模式。
缺點(diǎn)
- 售價(jià)偏高。
價(jià)格:Embold的基本版本是開(kāi)源免費(fèi)的。如果用戶的代碼行數(shù)(LOC)達(dá)到500k,則起售價(jià)為每月10歐元。
7. CodePeer
CodePeer是針對(duì)Ada和Java語(yǔ)言的代碼審查工具。通過(guò)逐行分析代碼的方式,它既能發(fā)現(xiàn)運(yùn)行時(shí)可能出現(xiàn)的失敗點(diǎn),又能發(fā)現(xiàn)疑似多余的、以及不能被代碼庫(kù)訪問(wèn)的程序代碼。此外,CodePeer還能夠在前置條件和后置條件的環(huán)境中,對(duì)每個(gè)子程序進(jìn)行詳細(xì)分析,以發(fā)現(xiàn)潛在的錯(cuò)誤和漏洞。
主要特點(diǎn)
- 可作為獨(dú)立工具運(yùn)行在Windows和Linux平臺(tái)上。
- 可被用于集成測(cè)試和單元測(cè)試。
- 隨附有諸如編碼標(biāo)準(zhǔn)檢查器(GNATcheck),指標(biāo)計(jì)算器/報(bào)告器(GNATmetric)等其他工具。
缺點(diǎn)
- 售價(jià)較貴。
- 用戶社區(qū)較小。
價(jià)格:請(qǐng)參見(jiàn)鏈接--https://www.adacore.com/pricing。
小結(jié)
綜上所述,我們?cè)谶x擇自動(dòng)化持續(xù)代碼審查工具時(shí),需要綜合考慮到如下方面:
- 可否分析具有大量規(guī)則的靜態(tài)代碼。
- 是否支持集成的種類與數(shù)量。
- 是否有完備的文檔。
- 是否易于使用、且靈活。
- 各種更新策略。
- 許可證的費(fèi)用。
- 客戶支持的力度。
文章名稱:七大自動(dòng)化持續(xù)代碼審查工具
標(biāo)題路徑:http://www.5511xx.com/article/djipsip.html


咨詢
建站咨詢
