原創(chuàng)|使用教程|編輯:鄭恭琳|2020-12-17 16:56:26.297|閱讀 276 次
概述:在2020.2版本中,我們引入了Parasoft C/C++test的增強(qiáng)功能集合,使其更適合現(xiàn)代工作流程。在這篇文章中,我將重點(diǎn)介紹一些最有趣的新穎性。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
我們?cè)诳蛻糁薪?jīng)常看到的流行圖片是基于Git的開(kāi)發(fā)環(huán)境,它具有動(dòng)態(tài)的分支和合并方法。團(tuán)隊(duì)希望靜態(tài)分析能夠無(wú)縫集成到此類工作流程中。
憑借龐大而復(fù)雜的代碼庫(kù),團(tuán)隊(duì)希望現(xiàn)代靜態(tài)分析工具能夠:
在2020.2版本中,我們引入了Parasoft C/C++test的增強(qiáng)功能集合,使其更適合現(xiàn)代工作流程。在這篇文章中,我將重點(diǎn)介紹一些最有趣的新穎性:
靜態(tài)分析會(huì)話,尤其是在大型代碼庫(kù)上的會(huì)話,可能會(huì)很長(zhǎng)。對(duì)于為功能或錯(cuò)誤修復(fù)而進(jìn)行少量增加的開(kāi)發(fā)人員而言,這是個(gè)問(wèn)題。他們希望獲得有關(guān)他們修改的最新文件的快速反饋,并在內(nèi)存中所有內(nèi)容仍然新鮮時(shí)更正代碼。在此階段,他們更喜歡分析的速度而不是準(zhǔn)確性。
在Parasoft C/C++test 2020.2中,我們?cè)鰪?qiáng)了Git集成。現(xiàn)在,它可以自動(dòng)調(diào)整分析范圍,使其僅關(guān)注最近的代碼修改。
開(kāi)發(fā)人員可以指定一個(gè)父/引用分支與他們當(dāng)前的開(kāi)發(fā)分支進(jìn)行比較。Parasoft C/C++test將自動(dòng)比較和計(jì)算增量以進(jìn)行分析。
圖1:父分支和當(dāng)前開(kāi)發(fā)分支的比較
無(wú)需在整個(gè)項(xiàng)目上運(yùn)行分析(這可能需要花費(fèi)大量時(shí)間,甚至是數(shù)小時(shí)),我們可以在工具自動(dòng)選擇的最小文件集上運(yùn)行分析。它可以大大減少分析會(huì)話的持續(xù)時(shí)間。
自然,某些需要項(xiàng)目系統(tǒng)級(jí)視圖的檢查器將不是100%準(zhǔn)確的。我們建議將快速,受限的運(yùn)行與廣泛而完整的CI/CD掃描相結(jié)合。
對(duì)最小文件集運(yùn)行靜態(tài)分析
要啟用此功能,用戶需要指定兩個(gè)選項(xiàng)。有關(guān)在C/C++test標(biāo)準(zhǔn)版中使用的“localsettings”文件的示例,請(qǐng)參見(jiàn)下面的屏幕截圖,對(duì)于cpptestcli使用-localsettings命令行標(biāo)志。
圖2:localsettings文件
scope.scontrol.files.filtr.mode決定是否應(yīng)基于分支比較或本地修改的文件來(lái)計(jì)算分析范圍。要比較兩個(gè)分支并將分析僅集中于修改后的文件,用戶需要使用scope.scontrol.ref.branch選項(xiàng)提供參考分支。
對(duì)于C/C++test專業(yè)版,您可以使用相同的localsettings文件來(lái)配置此功能。需要使用Parasoft Menu > Preferences > Parasoft > C/C++test advanced settings > Settings file路徑將localsettings文件添加到C/C++test專業(yè)配置中。
這項(xiàng)新功能通過(guò)縮短分析會(huì)話的持續(xù)時(shí)間并將分析僅集中在修改后的文件上,從而提高了開(kāi)發(fā)人員的工作效率。但是開(kāi)發(fā)人員可能希望使其靜態(tài)分析更加集中。請(qǐng)繼續(xù)閱讀以了解更多信息!
團(tuán)隊(duì)經(jīng)常必須在不遵循合規(guī)性的情況下使用開(kāi)發(fā)的代碼庫(kù)。它可能是不合規(guī)的舊代碼,也可能是不合規(guī)而開(kāi)發(fā)的原型。在這種情況下嘗試實(shí)施編碼標(biāo)準(zhǔn)可能是一場(chǎng)真正的噩夢(mèng)。
團(tuán)隊(duì)知道在某些時(shí)候必須使用干凈的代碼。但這不是他們的主要目標(biāo)。首先,他們希望確保不會(huì)帶來(lái)任何新問(wèn)題,并且不會(huì)增加合規(guī)債務(wù)。
問(wèn)題在于,要區(qū)分新的和先前存在的違規(guī)非常耗時(shí)。即使使用Git集成并縮小了分析范圍,開(kāi)發(fā)人員只要修改文件以添加新代碼,所有先前存在的違規(guī)行為都會(huì)顯示在報(bào)告中。審查這些問(wèn)題可能需要幾個(gè)小時(shí)。
團(tuán)隊(duì)可以通過(guò)對(duì)靜態(tài)分析結(jié)果進(jìn)行基線分析來(lái)糾正這種有問(wèn)題的情況。2020.2版本的C/C++test提供了一個(gè)選項(xiàng),可以在運(yùn)行分析會(huì)話時(shí)指定參考報(bào)告以及項(xiàng)目的接受狀態(tài)。
參考報(bào)告將比較分析會(huì)話的完整結(jié)果。它過(guò)濾掉先前存在的發(fā)現(xiàn)并僅報(bào)告新問(wèn)題。
圖3:參考結(jié)果+當(dāng)前結(jié)果=我的新結(jié)果
對(duì)于開(kāi)發(fā)人員而言,這意味著他們不必關(guān)注數(shù)百種違規(guī)行為,而可以專注于修改代碼后出現(xiàn)的這三種違規(guī)行為。
啟用結(jié)果基準(zhǔn)
為了使結(jié)果成為基線,用戶需要首先生成參考報(bào)告。
標(biāo)準(zhǔn)版
對(duì)于C/C++test Standard,請(qǐng)按照以下步驟生成參考報(bào)告。
對(duì)代碼庫(kù)的參考狀態(tài)運(yùn)行靜態(tài)分析(常規(guī)靜態(tài)分析運(yùn)行)。在您選擇的報(bào)告文件夾中找到results.xml文件。
您可以將參考報(bào)告存儲(chǔ)在SCM中,也可以從本地驅(qū)動(dòng)器中使用它。
要僅查看基于新添加的代碼的新結(jié)果,請(qǐng)?jiān)诋?dāng)前分支上運(yùn)行分析,然后在localsettings文件(cpptestcli的-localsettings標(biāo)志)中指定兩個(gè)其他選項(xiàng):
關(guān)注相關(guān)問(wèn)題可提高生產(chǎn)率
圖4:運(yùn)行分析
專業(yè)版
對(duì)于C/C++test專業(yè)人員,請(qǐng)使用專用選項(xiàng)來(lái)生成參考報(bào)告。
1. 通過(guò)對(duì)代碼庫(kù)的參考狀態(tài)運(yùn)行靜態(tài)分析來(lái)生成參考報(bào)告。要生成報(bào)告,請(qǐng)?jiān)贑/C++test高級(jí)設(shè)置文件中指定其他選項(xiàng):Parasoft Menu > Preferences > Parasoft > C/C++test advanced settings > Settings file。
圖5:生成參考報(bào)告
2. 如果需要,可以將參考報(bào)告存儲(chǔ)在SCM中,或從本地驅(qū)動(dòng)器中使用它。
3. 要僅查看新結(jié)果,請(qǐng)?jiān)诋?dāng)前分支上使用高級(jí)設(shè)置文件中的兩個(gè)附加選項(xiàng)運(yùn)行分析:Parasoft Menu > Preferences > Parasoft > C/C++test advanced settings > Settings file。
圖6:使用以前的版本報(bào)告作為基準(zhǔn)
指定了report.xml的本地設(shè)置文件的所有示例,還可以包括相對(duì)或絕對(duì)路徑。
在討論Git集成和縮小分析范圍以獲取更快的反饋時(shí),我曾提到過(guò),這些縮小的掃描應(yīng)與CI/CD中的完整而廣泛的掃描相輔相成。
訪問(wèn)CI/CD結(jié)果
通過(guò)這種方法,出現(xiàn)了一個(gè)重要的問(wèn)題:用戶如何為開(kāi)發(fā)人員啟用CI/CD結(jié)果,以便他們可以采取行動(dòng)并進(jìn)行補(bǔ)救?有幾種方法可以使結(jié)果可用:
通過(guò)CI/CD平臺(tái)的Web界面。
與Parasoft DTP報(bào)告服務(wù)器共享。
直接交付給開(kāi)發(fā)人員的IDE。
大多數(shù)團(tuán)隊(duì)更喜歡最后一種選擇,因?yàn)樗麄兛梢酝ㄟ^(guò)最常用的界面(即IDE)訪問(wèn)結(jié)果!
訪問(wèn)靜態(tài)分析結(jié)果
通過(guò)允許從DTP下載靜態(tài)分析結(jié)果,我們的最新版本還增強(qiáng)了Visual Studio Code擴(kuò)展。我們的Eclipse和Visual Studio插件中已經(jīng)提供了此功能。
結(jié)果下載操作非常簡(jiǎn)單。用戶從命令面板調(diào)用專用命令:“C/C++test: Load Results from DTP …”。
圖7:結(jié)果下載操作
該擴(kuò)展程序?qū)⒃儐?wèn)DTP服務(wù)器的位置,然后詢問(wèn)憑據(jù),然后詢問(wèn)DTP項(xiàng)目和過(guò)濾器。
瞧!結(jié)果是在本地生成的,因此在“問(wèn)題”視圖中可用。
開(kāi)發(fā)人員還可以單擊違規(guī)消息。它將它們直接帶到需要修復(fù)的源代碼行。它的生產(chǎn)力令人難以置信。
認(rèn)真整合靜態(tài)分析的團(tuán)隊(duì)了解,有效管理抑制或放棄對(duì)于其成功至關(guān)重要。Parasoft用戶可以以代碼注釋的形式直接在源代碼中存儲(chǔ)抑制信息,也可以使用外部數(shù)據(jù)庫(kù)(例如Parasoft DTP或TCM)。
以代碼注釋的形式存儲(chǔ)抑制信息可能是管理這些異常的最有效方法。但是許多團(tuán)隊(duì)不允許這樣做,尤其是在將代碼交付給可能使用不同工具的外部承包商時(shí)。或者,也許有內(nèi)部政策禁止這樣做。
我們引入了一種新的第三種方式來(lái)消除不需要進(jìn)行任何代碼文件編輯的違規(guī)行為。這消除了使用任何禁止信息污染源文件的情況。
以純文本格式存儲(chǔ)抑制
這種新的抑制方法允許將抑制存儲(chǔ)在純文本文件中。每個(gè)源代碼文件夾只有一個(gè)禁止文件。抑制文件具有標(biāo)準(zhǔn)名稱:parasoft.suppress。從2020.2版本開(kāi)始,所有Parasoft靜態(tài)分析工具都已預(yù)先配置為在分析中包括parasoft.suppress文件。啟用此功能不需要任何其他配置。
用戶可以使用專用的UI操作或手動(dòng)添加這些抑制條目來(lái)添加到parasoft.suppress。Eclipse插件,Visual Studio插件和Visual Studio擴(kuò)展的UI進(jìn)行了擴(kuò)展,以支持新的抑制類型。
禁止條目只是純文本,并且包含標(biāo)識(shí)要禁止的違規(guī)的屬性的集合。請(qǐng)參見(jiàn)屏幕截圖,作為抑制條目的示例以及抑制條目支持的所有屬性的列表。
圖8:抑制條目
開(kāi)發(fā)人員可以對(duì)message屬性使用基本的正則表達(dá)式(‘*’, ‘?’),從而可以通過(guò)一個(gè)禁止條目禁止多個(gè)違規(guī)行為。例如,當(dāng)消息包含參數(shù)名稱時(shí)。
如果需要,單個(gè)抑制條目可以抑制多個(gè)違例。但是,在生成的報(bào)告中也將提供有關(guān)每個(gè)個(gè)體被禁止違規(guī)的信息。并且,如果為其配置,則傳播到DTP服務(wù)器。
圖9:合并
抑制文件(parasoft.suppress)設(shè)計(jì)為存儲(chǔ)在SCM中。創(chuàng)建分支后,抑制信息便是其中的一部分。將新條目添加到禁止文件將使其在代碼審查過(guò)程中可見(jiàn),并且該文件將通過(guò)批準(zhǔn)鏈。合并代碼后,抑制文件就像源代碼一樣成為此操作的一部分,干凈利落。
現(xiàn)代開(kāi)發(fā)工作流程基于Git SCM進(jìn)行標(biāo)準(zhǔn)化,并專注于CI/CD。大型代碼庫(kù)和頻繁的分支工作需要部署靜態(tài)分析工具,這些工具可以自動(dòng)聚焦并產(chǎn)生與開(kāi)發(fā)人員當(dāng)前工作相關(guān)的結(jié)果。
由于項(xiàng)目經(jīng)常需要使用開(kāi)源、遺留和原型源代碼,因此團(tuán)隊(duì)必須確定自己的進(jìn)度并制定自己的計(jì)劃,以實(shí)現(xiàn)編碼標(biāo)準(zhǔn)合規(guī)性。結(jié)果基線有助于為新代碼建立嚴(yán)格的策略,并制定計(jì)劃以快速有效地解決先前存在的問(wèn)題。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn