翻譯|行業(yè)資訊|編輯:胡濤|2023-08-15 11:23:10.740|閱讀 115 次
概述:在這篇文章中,將為您解釋如何將Parasoft C/C++test靜態(tài)分析功能集成到基于CMake的項(xiàng)目中,您可以對(duì)單元測(cè)試執(zhí)行同樣的操作。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
您可能一直在靜態(tài)分析中使用CMake。但您是否嘗試過將Parasoft C/C++test與CMake一起使用嗎?以下是如何使用C/C++test在基于CMake的項(xiàng)目中運(yùn)行靜態(tài)分析的詳細(xì)說明。
CMake是用于構(gòu)建、測(cè)試和打包軟件的最流行的工具之一。Parasoft C/C++test通過簡(jiǎn)化構(gòu)建管理過程,簡(jiǎn)化了與基于CMake的項(xiàng)目的集成。項(xiàng)目越大,影響就越明顯。
Parasoft團(tuán)隊(duì)在為一家大型知名汽車制造商推出測(cè)試解決方案期間開發(fā)了這些增強(qiáng)功能。我們的目標(biāo)是在基于自適應(yīng)AUTOSAR平臺(tái)的大型復(fù)雜項(xiàng)目中引入靜態(tài)分析和單元測(cè)試功能。這些項(xiàng)目由多個(gè)靜態(tài)和動(dòng)態(tài)庫(kù)以及許多可執(zhí)行文件組成。
要執(zhí)行靜態(tài)代碼分析,Parasoft C/C++test等工具需要有關(guān)項(xiàng)目構(gòu)建的信息。通常,所需要的只是編譯命令行,用來調(diào)用用于分析的文件。
有不同的方法可以把C/C++test集成到構(gòu)建過程中。不同的構(gòu)建系統(tǒng)可能需要不同的方法。有了基于CMake的項(xiàng)目,就可以輕松地進(jìn)行靜態(tài)分析,并且只需對(duì)工作流進(jìn)行最小的修改。這有助于與C/C++test順利集成。
CMake腳本可以很容易地配置將編譯時(shí)信息生成為JSON文件。通常每次構(gòu)建都會(huì)得到一個(gè)JSON文件。這個(gè)JSON文件包含靜態(tài)分析器執(zhí)行代碼掃描所需的所有內(nèi)容。然后在生成構(gòu)建腳本時(shí)創(chuàng)建帶有編譯命令行的JSON文件。C/C++test可以識(shí)別這種格式,并可以直接將其用作執(zhí)行靜態(tài)分析的導(dǎo)入文件。
在基于CMake的項(xiàng)目上運(yùn)行靜態(tài)分析的過程涉及以下步驟:
使用編譯命令啟用JSON文件的生成。這是一次性活動(dòng)。
生成構(gòu)建腳本。這將包括編譯信息JSON文件生成。
通過將JSON文件中的編譯信息作為靜態(tài)分析的導(dǎo)入文件來運(yùn)行靜態(tài)分析。
2.1 基于CMake的項(xiàng)目靜態(tài)分析實(shí)例
讓我們一起看一個(gè)在基于CMake的項(xiàng)目上運(yùn)行靜態(tài)分析的示例。如果您也有相同的環(huán)境,請(qǐng)咨詢Parasoft China獲取C/C++test試用。
遵循以下步驟
安裝后,轉(zhuǎn)到安裝目錄并進(jìn)入examples子文件夾。復(fù)制Timer示例并進(jìn)入Timer目錄。(這些步驟都是在Linux系統(tǒng)上操作的。)您應(yīng)該看到以下內(nèi)容:
準(zhǔn)備使用位于主目錄中的Makefile文件或使用CMake生成的構(gòu)建腳本來構(gòu)建此示例。
在Timer文件夾下面創(chuàng)建一個(gè)build文件夾,并且進(jìn)入到build文件夾下,通過調(diào)用CMake腳本來構(gòu)建Timer項(xiàng)目。
如果我們顯示出build目錄的內(nèi)容,我們將看到生成了compile_commands.json文件。
對(duì)于下一個(gè)示例項(xiàng)目,我們已經(jīng)啟用了生成編譯信息JSON文件的功能。
現(xiàn)在,我們準(zhǔn)備使用生成的compile_commands.json文件運(yùn)行靜態(tài)分析。這個(gè)方法最大的一個(gè)優(yōu)點(diǎn)就是,我們可以將.json文件直接用在Parasoft C/C++test命令行界面中:
等待命令執(zhí)行結(jié)束。靜態(tài)分析就完成了,并且生成了報(bào)告。
這種集成方法可以用于持續(xù)集成(CI),也可以在開發(fā)人員桌面上本地使用。唯一可能需要的修改是啟用compile_command.json文件生成的功能。
如果您的項(xiàng)目中沒有啟用compile_command.json文件的生成,我們可以用兩種方法之一來實(shí)現(xiàn)。
方法1:
在CMakeLists.txt文件中,將CMAKE_EXPORT_COMPILE_COMMANDS選項(xiàng)設(shè)置為ON。
示例:
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
方法2
在生成構(gòu)建腳本時(shí),將其添加到cmake的命令行調(diào)用中。
示例:
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=1 <path to src>
了解更多有關(guān)Parasoft產(chǎn)品咨詢,歡迎咨詢
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn