Java代碼檢測工具鏈選型
下方查看歷史精選文章
重磅發(fā)布 - 自動化框架基礎(chǔ)指南pdf v1.1大數(shù)據(jù)測試過程、策略及挑戰(zhàn)
靜態(tài)源代碼掃描是近年被人提及較多的軟件應(yīng)用安全解決方案之一。它是指在軟件工程中,程序員在寫好源代碼后,無需經(jīng)過編譯器編譯,而直接使用一些掃描工具對其進(jìn)行掃描,找出代碼當(dāng)中存在的一些語義缺陷、安全漏洞的解決方案。靜態(tài)掃描技術(shù)已經(jīng)從90年代時候的,編碼規(guī)則匹配這種由編譯技術(shù)拓展過來的分析技術(shù)向程序模擬全路徑執(zhí)行的方向發(fā)展,由此,這種模擬執(zhí)行相對的執(zhí)行路徑比動態(tài)執(zhí)行更多,能夠發(fā)現(xiàn)很多動態(tài)測試難以發(fā)現(xiàn)的缺陷。
這里給出筆者在企業(yè)實(shí)踐中所用到的工具鏈。
gitlab用于源碼版本管理,實(shí)現(xiàn)代碼版本管理、分支管理,及用于代碼掃描過程中的分支基準(zhǔn)。
Apache Maven是一個(特別是Java編程)項(xiàng)目管理及自動構(gòu)建工具,由Apache軟件基金會所提供。基于項(xiàng)目對象模型(縮寫:POM)概念,Maven利用一個中央信息片斷能管理一個項(xiàng)目的構(gòu)建、報告和文檔等步驟。
JUnit 是一個Java語言的單元測試框架。它由Kent Beck和Erich Gamma建立,逐漸成為源于Kent Beck的sUnit的xUnit家族中最為成功的一個。 JUnit 有它自己的 JUnit 擴(kuò)展生態(tài)圈。多數(shù)Java的開發(fā)環(huán)境都已經(jīng)集成了 JUnit 作為單元測試的工具。
maven-surefire-plugin,可以稱之為測試運(yùn)行器(Test Runner),它能很好地兼容JUnit 3JUnit4以及TestNG。
Jacoco是一個開源的覆蓋率工具。Jacoco可以嵌入到Ant 、Maven中,并提供了EclEmma Eclipse插件,也可以使用JavaAgent技術(shù)監(jiān)控Java程序。很多第三方的工具提供了對Jacoco的集成,如Jenkins。
Jenkins是一個開源軟件項(xiàng)目,是基于Java開發(fā)的一種持續(xù)集成工具,用于監(jiān)控持續(xù)重復(fù)的工作,旨在提供一個開放易用的軟件平臺,使軟件項(xiàng)目可以進(jìn)行持續(xù)集成
sonarqube社區(qū)版是免費(fèi)開源的,所以不提供掃描項(xiàng)目切換分支的功能,但適合真正生產(chǎn)環(huán)境的項(xiàng)目會具有多個分支,只能掃描主分支的SonarQube社區(qū)版顯然很不滿足你的需求,而開發(fā)者版和企業(yè)版支持但是需要大量的¥。
s onarqube-community- branch-plugin插件, 插件市場提供了一款可以切換分支的插件,sonarqube-community-branch-plugin.
中文插件地址https://github.com/mc1arke/sonarqube-community-branch-plugin
后續(xù)逐步給出部署及配置實(shí)踐。
