最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

進(jìn)擊!Helix QAC自動(dòng)化靜態(tài)測(cè)試

2021-03-24 17:50 作者:上海北匯信息科技  | 我要投稿

當(dāng)一位有追求的測(cè)試(開(kāi)發(fā))工程師,每天面對(duì)枯燥且單調(diào)的靜態(tài)測(cè)試工作時(shí),他一定會(huì)有將靜態(tài)代碼測(cè)試變?yōu)樽詣?dòng)化執(zhí)行的沖動(dòng)。然而當(dāng)真正去實(shí)施自動(dòng)化靜態(tài)測(cè)試平臺(tái)的構(gòu)建時(shí),我們往往因?yàn)闊o(wú)從下手或?qū)嵤┢D難而選擇放棄。本文將以靜態(tài)代碼測(cè)試工具Helix QAC+版本管理工具SVN+持續(xù)集成工具Jenkins為例,向你介紹基于Helix QAC的自動(dòng)化靜態(tài)分析方案。通過(guò)本文,你將了解該方案的具體實(shí)施步驟,以及該方案可以實(shí)現(xiàn)的具體效果。如果你之前從未接觸過(guò)Jenkins,看完本文后,你將對(duì)Jenkins的功能有一個(gè)大致的了解,同時(shí)你也可以根據(jù)自身的實(shí)際情況,構(gòu)建自己的自動(dòng)化靜態(tài)測(cè)試流水線(xiàn),讓你徹底從枯燥且單調(diào)的靜態(tài)測(cè)試工作中解脫。

自動(dòng)化靜態(tài)分析對(duì)靜態(tài)分析工具有什么要求?

為了實(shí)現(xiàn)自動(dòng)化靜態(tài)分析,靜態(tài)分析工具需要滿(mǎn)足一下幾點(diǎn)要求:

? 可以通過(guò)命令行實(shí)現(xiàn)靜態(tài)分析工具的大部分功能;

? 可以脫離靜態(tài)分析工具查看分析結(jié)果;

? 可以支持并行分析;

下面介紹一下本文自動(dòng)化靜態(tài)分析方案所使用的靜態(tài)分析工具——Helix QAC。


Helix QAC是什么?

Helix QAC(以下簡(jiǎn)稱(chēng)QAC)是嵌入式靜態(tài)分析領(lǐng)域公認(rèn)的行業(yè)領(lǐng)導(dǎo)及先驅(qū),

? 是MISRA C&C++編碼委員會(huì)的創(chuàng)始會(huì)員,

? 是AUTOSAR工作組會(huì)員,

? 是商業(yè)自動(dòng)化分析解決方案的先驅(qū),

? 提供豐富的可選規(guī)范包:MISRA、AUTOSAR、CERT、CWE、HICPP等,

? 通過(guò)了不同行業(yè)的功能安全認(rèn)證:ISO 26262、IEC 62304、IEC 60880、DO-178B等。


QAC提供豐富的command line 命令,幾乎所有的功能都可以通過(guò)命令行實(shí)現(xiàn),為自動(dòng)化靜態(tài)分析方案提供了無(wú)限的想象空間。

QAC軟件還提供一個(gè)基于WEB的項(xiàng)目管理平臺(tái)——Dashboard,我們可以將QAC工程的分析結(jié)果上傳到該平臺(tái)上,在Dashboard上可以查看工程詳細(xì)的分析結(jié)果、同一個(gè)工程不同版本之間的質(zhì)量變化趨勢(shì)、不同版本之間代碼的變更情況等。鑒于Dashboard強(qiáng)大的項(xiàng)目管理功能,本文將Dashboard集成到自動(dòng)化靜態(tài)分析方案。

QAC軟件有完善的并行分析功能,QAC不僅支持對(duì)一個(gè)工程的多核并行分析,同時(shí)也支持在同一臺(tái)電腦上,多個(gè)QAC工程的并行分析。這不僅大大提升了QAC的分析效率,也使得基于QAC的自動(dòng)化靜態(tài)分析平臺(tái)可以滿(mǎn)足更大規(guī)模的開(kāi)發(fā)團(tuán)隊(duì)。

圖1.Dashboard預(yù)覽界面

為什么要做自動(dòng)化靜態(tài)分析?

首先看一下基于QAC的傳統(tǒng)靜態(tài)分析模式存在哪些問(wèn)題:

1.?開(kāi)發(fā)人員無(wú)法快速查看分析結(jié)果。如果項(xiàng)目規(guī)模很大,開(kāi)發(fā)人員很多,沒(méi)有QAC license的人員需要將工程傳遞給指定的測(cè)試(開(kāi)發(fā))人員進(jìn)行分析,無(wú)法快速地獲取分析結(jié)果,以驗(yàn)證代碼編寫(xiě)或修改是否滿(mǎn)足要求。

2.?測(cè)試人員工作量大。由于需要固定的人員進(jìn)行靜態(tài)分析,測(cè)試人員需要對(duì)收到的源碼建立QAC工程、分析、生成報(bào)告并將分析結(jié)果上傳到服務(wù)器端的Dashboard,工作繁瑣且單調(diào)。

3.?難以在開(kāi)發(fā)過(guò)程中實(shí)現(xiàn)持續(xù)測(cè)試。由于開(kāi)發(fā)工程往往進(jìn)度催的很緊,而進(jìn)行代碼的靜態(tài)測(cè)試又需要將代碼提交給測(cè)試人員,等得到測(cè)試結(jié)果時(shí),可能開(kāi)發(fā)人員的進(jìn)度已經(jīng)進(jìn)入到下一個(gè)階段了,之前的測(cè)試結(jié)果已經(jīng)過(guò)時(shí)了,這就會(huì)導(dǎo)致開(kāi)發(fā)人員對(duì)靜態(tài)測(cè)試不積極,將靜態(tài)測(cè)試向開(kāi)發(fā)的后期推。

4.?難以實(shí)現(xiàn)Dashboard工程和開(kāi)發(fā)人員的雙向追溯。當(dāng)每個(gè)源碼工程都經(jīng)過(guò)多次迭代,且在迭代過(guò)程中需要將源碼工程以不同的版本上傳到Dashboard中時(shí),測(cè)試人員精確上傳分析結(jié)果的工作難度,無(wú)疑會(huì)隨開(kāi)發(fā)人員和開(kāi)發(fā)工程數(shù)量的增加而呈指數(shù)倍增長(zhǎng)。

當(dāng)然,上述問(wèn)題在自動(dòng)化靜態(tài)分析測(cè)試中都不是問(wèn)題。


自動(dòng)化靜態(tài)分析該從何開(kāi)始?

自動(dòng)化靜態(tài)分析平臺(tái)的搭建,首先要有用于驅(qū)動(dòng)測(cè)試工具進(jìn)行測(cè)試的腳本。因此建議從腳本的編寫(xiě)開(kāi)始入手,QAC的靜態(tài)測(cè)試腳本應(yīng)具備以下四個(gè)功能:

1. 為源碼建立QAC工程;

2. 執(zhí)行分析并生成分析報(bào)告;

3. 獲取SVN提交者用戶(hù)名及源碼當(dāng)前SVN版本;

4. 將分析結(jié)果上傳到Dashboard(工程版本號(hào)由SVN用戶(hù)名和SVN版本確定)。

上述功能中,3的難度相對(duì)而言最高。因此根據(jù)先實(shí)現(xiàn)后改進(jìn)的原則,首先完成1、2、4腳本的編寫(xiě)。

幸運(yùn)的是,QAC提供了豐富的command line命令,你可以輕松地實(shí)現(xiàn)上述三個(gè)功能:

l QAC可以通過(guò)rebuild工程的方式,為QAC工程加載build過(guò)程中調(diào)用的源文件和頭文件甚至宏定義,這使你無(wú)需編寫(xiě)腳本搜索文件里的源文件和頭文件;

l QAC工程的分析和報(bào)告的生成都有對(duì)應(yīng)的命令,我們可以方便地實(shí)現(xiàn)這些功能;

l 將測(cè)試結(jié)果上傳到Dashboard,同樣有對(duì)應(yīng)的命令,該命令需要指定將分析結(jié)果上傳到哪個(gè)Dashboard工程,并指定上傳版本號(hào),如果不指定版本號(hào),Dashboard會(huì)默認(rèn)將上傳的時(shí)間作為版本號(hào),因此在測(cè)試腳本編寫(xiě)早期,可以先忽略Dashboard工程版本號(hào)的問(wèn)題。

當(dāng)完成上述功能的腳本編寫(xiě)后,可以先在本地運(yùn)行調(diào)試,如果沒(méi)有問(wèn)題就可以添加第三步的功能了。

第三步的目的是為了實(shí)現(xiàn)Dashboard工程與開(kāi)發(fā)工程師之間的雙向可追溯。當(dāng)一個(gè)源碼工程由多個(gè)開(kāi)發(fā)人員共同開(kāi)發(fā)和維護(hù)時(shí),這個(gè)功能就會(huì)變得十分重要。使用python語(yǔ)言強(qiáng)大的正則表達(dá)式庫(kù)(re),可以很方便地將所需信息從SVN的輸出的info信息中解析出來(lái)。將解析得到的SVN上傳者用戶(hù)名和當(dāng)前SVN版本號(hào)進(jìn)行組合,作為Dashboard工程的版本號(hào),可以令團(tuán)隊(duì)人員方便地了解Dashboard工程不同版本的上傳作者,使開(kāi)發(fā)人員之間的溝通更有效率。


如何實(shí)現(xiàn)測(cè)試的自動(dòng)化?

當(dāng)我們完成了測(cè)試腳本的編寫(xiě),我們的腳本只能運(yùn)行在有QAC license的電腦上。為了讓所有開(kāi)發(fā)都能使用該腳本進(jìn)行靜態(tài)測(cè)試,我們需要實(shí)現(xiàn),讓本地的提交的自動(dòng)化測(cè)試腳本運(yùn)行在指定的主機(jī)端,比如,有QAC license的主機(jī)。此時(shí)我們就需要借助可持續(xù)集成工具Jenkins和版本管理工具SVN來(lái)實(shí)現(xiàn)此功能。

基于Jenkins和SVN的自動(dòng)化QAC靜態(tài)分析流程圖如下:

圖2. 基于Jenkins和SVN的自動(dòng)化QAC靜態(tài)分析流程圖


由上圖我們可以看出,開(kāi)發(fā)或測(cè)試工程師只需要將檢出并修改的源碼提交到SVN,就能實(shí)現(xiàn)代碼的靜態(tài)分析,在分析完成之后會(huì)接收到由Jenkins發(fā)送的附有分析報(bào)告的郵件,并可以通過(guò)登錄Dashboard查看具體的分析結(jié)果。

當(dāng)然實(shí)現(xiàn)上述操作的前提是,已經(jīng)在SVN中建立好了對(duì)應(yīng)的庫(kù),并在Jenkins中建立好了相應(yīng)的Jenkins工程,對(duì)于SVN庫(kù)的建立和Jenkins工程的配置在此不做詳細(xì)的敘述。

下面我們就通過(guò)視頻展示一下該方案的具體實(shí)現(xiàn)效果:

喜歡此篇文章歡三連支持小編~

進(jìn)擊!Helix QAC自動(dòng)化靜態(tài)測(cè)試的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
通海县| 温宿县| 珲春市| 靖西县| 连州市| 桃源县| 乌鲁木齐市| 邯郸县| 齐河县| 遂溪县| 安平县| 吉林省| 怀集县| 土默特右旗| 西峡县| 梅河口市| 井陉县| 宁武县| 乌拉特前旗| 武平县| 博客| 阿瓦提县| 长宁区| 关岭| 崇州市| 南通市| 嘉峪关市| 徐闻县| 余庆县| 新昌县| 河东区| 酒泉市| 齐齐哈尔市| 台江县| 辽阳县| 高邑县| 宣汉县| 银川市| 肥西县| 黔江区| 太白县|