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