• <menu id="w2i4a"></menu>
  • logo Parasoft C/C++test 使用教程

    文檔首頁(yè)>>Parasoft C/C++test 使用教程>>結(jié)合使用Parasoft C/C++test和CMake進(jìn)行靜態(tài)分析

    結(jié)合使用Parasoft C/C++test和CMake進(jìn)行靜態(tài)分析


    結(jié)合使用Parasoft C/C++test和CMake進(jìn)行靜態(tài)分析

    CMake是用于構(gòu)建,測(cè)試和打包軟件的最受歡迎的工具之一。它大大簡(jiǎn)化了大型項(xiàng)目的構(gòu)建過(guò)程的管理。Parasoft C/C++test 2020.1版本引入了一系列增強(qiáng)功能,可以簡(jiǎn)化與基于CMake的項(xiàng)目的集成。

    在針對(duì)最大和知名汽車(chē)制造商之一的測(cè)試解決方案推出期間,我們開(kāi)發(fā)了這些增強(qiáng)功能。

    我們的挑戰(zhàn)是將靜態(tài)分析和單元測(cè)試功能引入基于自適應(yīng)AUTOSAR平臺(tái)的大型復(fù)雜項(xiàng)目中。這些項(xiàng)目由多個(gè)靜態(tài)和動(dòng)態(tài)庫(kù)以及許多可執(zhí)行文件組成。

    在此博客文章中,我將說(shuō)明如何將Parasoft C/C++test靜態(tài)分析功能集成到基于CMake的項(xiàng)目中。請(qǐng)繼續(xù)關(guān)注我的下一篇文章,其中我將解釋如何對(duì)單元測(cè)試執(zhí)行相同的操作。


    將靜態(tài)分析集成到基于Cmake的項(xiàng)目中


    要執(zhí)行靜態(tài)代碼分析,諸如Parasoft C/C++test之類的工具需要有關(guān)項(xiàng)目構(gòu)建的信息。通常,只需要編譯命令行來(lái)調(diào)用用于分析的文件。

    使用Parasoft C/C++test,有多種方法可以集成到內(nèi)部版本中。不同的構(gòu)建系統(tǒng)可能需要不同的方法。對(duì)于基于CMake的項(xiàng)目,有很多可用的選項(xiàng)可以使靜態(tài)分析變得毫不費(fèi)力,并且對(duì)過(guò)程的更改最少。它使與C/C++test的平滑集成成為可能。

    CMake腳本可以輕松配置為生成編譯時(shí)信息作為JSON文件。通常,每個(gè)版本會(huì)獲得一個(gè)JSON文件。此JSON文件包含靜態(tài)分析器執(zhí)行代碼掃描所需的全部?jī)?nèi)容。然后在生成生成腳本時(shí)創(chuàng)建帶有編譯命令行的JSON文件。C/C++test 2020.1版本了解此格式,可以將其直接用作執(zhí)行靜態(tài)分析的輸入。

    如何在基于CMake的項(xiàng)目上運(yùn)行靜態(tài)分析

    在基于CMake的項(xiàng)目上運(yùn)行靜態(tài)分析的過(guò)程涉及以下步驟:

    1. 使用編譯命令啟用JSON文件的生成。這是一次性活動(dòng)。
    2. 生成您的構(gòu)建腳本。這將包括compile-info JSON文件生成。
    3. 通過(guò)將JSON文件中的compile-info作為靜態(tài)分析器的輸入來(lái)運(yùn)行靜態(tài)分析。

    就是這樣!


    基于CMake的項(xiàng)目的靜態(tài)分析示例


    讓我們來(lái)看一個(gè)在基于CMake的項(xiàng)目上運(yùn)行靜態(tài)分析的示例。 如果尚未安裝,請(qǐng)安裝標(biāo)準(zhǔn)版本的C++test 2020.1

    按著這些次序

    安裝后,轉(zhuǎn)到安裝目錄并進(jìn)入示例子文件夾。復(fù)制Timer示例,然后進(jìn)入Timer目錄。(這些步驟使用Linux作為開(kāi)發(fā)平臺(tái)。)

    您應(yīng)該看到以下內(nèi)容:


    本示例準(zhǔn)備使用位于主目錄中的“靜態(tài)”makefile或使用CMake生成的構(gòu)建腳本進(jìn)行構(gòu)建。

    通過(guò)使用cd在Timer目錄內(nèi)創(chuàng)建一個(gè)構(gòu)建文件夾。使用CMake調(diào)用生成腳本。

    如果在生成后列出構(gòu)建目錄的內(nèi)容,我們將看到已生成compile_commands.json文件。

    對(duì)于下一個(gè)示例項(xiàng)目,已經(jīng)啟用了compile-info JSON文件的生成。

    現(xiàn)在,我們準(zhǔn)備使用生成的compile_commands.json文件運(yùn)行靜態(tài)分析。一個(gè)很大的優(yōu)點(diǎn)是我們可以將.json文件直接附加到Parasoft C/C++test標(biāo)準(zhǔn)產(chǎn)品的命令行界面中:

    接下來(lái),執(zhí)行靜態(tài)分析并返回結(jié)果。

    此集成方法可用于CI或在開(kāi)發(fā)人員桌面本地使用??赡苄枰奈ㄒ恍薷氖菃⒂胏ompile_command.json文件的生成。

    如何在項(xiàng)目中啟用生成文件

    如果您沒(méi)有在項(xiàng)目中啟用compile_command.json文件的生成,則可以通過(guò)以下兩種方法之一進(jìn)行。

    選項(xiàng)1

    CMakeLists.txt文件中將CMAKE_EXPORT_COMPILE_COMMANDS選項(xiàng)設(shè)置為ON。

    例如

    設(shè)置(CMAKE_EXPORT_COMPILE_COMMANDS ON)

    選項(xiàng)2

    生成構(gòu)建腳本時(shí),將其添加到cmake的命令行調(diào)用中。

    例如

    cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=1

    這就是將靜態(tài)分析集成到基于CMake的項(xiàng)目中的全部。 接下來(lái),我將介紹CMake的單元測(cè)試:結(jié)合使用Parasoft C/C++test和CMake進(jìn)行單元測(cè)試。


    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();