您可能一直在靜態分析中使用CMake。但您是否嘗試過將Parasoft C/C++test與CMake一起使用嗎?以下是如何使用C/C++test在基于CMake的項目中運行靜態分析的詳細說明。
CMake是用于構建、測試和打包軟件的最流行的工具之一。Parasoft C/C++test通過簡化構建管理過程,簡化了與基于CMake的項目的集成。項目越大,影響就越明顯。
Parasoft團隊在為一家大型知名汽車制造商推出測試解決方案期間開發了這些增強功能。我們的目標是在基于自適應AUTOSAR平臺的大型復雜項目中引入靜態分析和單元測試功能。這些項目由多個靜態和動態庫以及許多可執行文件組成。
在這篇文章中,將為您解釋如何將Parasoft C/C++test靜態分析功能集成到基于CMake的項目中,您可以對單元測試執行同樣的操作。
1. 將靜態分析集成到基于CMake的項目中
要執行靜態代碼分析,Parasoft C/C++test等工具需要有關項目構建的信息。通常,所需要的只是編譯命令行,用來調用用于分析的文件。
有不同的方法可以把C/C++test集成到構建過程中。不同的構建系統可能需要不同的方法。有了基于CMake的項目,就可以輕松地進行靜態分析,并且只需對工作流進行最小的修改。這有助于與C/C++test順利集成。
CMake腳本可以很容易地配置將編譯時信息生成為JSON文件。通常每次構建都會得到一個JSON文件。這個JSON文件包含靜態分析器執行代碼掃描所需的所有內容。然后在生成構建腳本時創建帶有編譯命令行的JSON文件。C/C++test可以識別這種格式,并可以直接將其用作執行靜態分析的導入文件。
2.?在基于CMake的項目上運行靜態分析
在基于CMake的項目上運行靜態分析的過程涉及以下步驟:
-
使用編譯命令啟用JSON文件的生成。這是一次性活動。
-
生成構建腳本。這將包括編譯信息JSON文件生成。
-
通過將JSON文件中的編譯信息作為靜態分析的導入文件來運行靜態分析。
2.1?基于CMake的項目靜態分析實例
讓我們一起看一個在基于CMake的項目上運行靜態分析的示例。如果您也有相同的環境,請咨詢Parasoft China獲取C/C++test試用。
遵循以下步驟
安裝后,轉到安裝目錄并進入examples子文件夾。復制Timer示例并進入Timer目錄。(這些步驟都是在Linux系統上操作的。)您應該看到以下內容:
準備使用位于主目錄中的Makefile文件或使用CMake生成的構建腳本來構建此示例。
在Timer文件夾下面創建一個build文件夾,并且進入到build文件夾下,通過調用CMake腳本來構建Timer項目。
如果我們顯示出build目錄的內容,我們將看到生成了compile_commands.json文件。
對于下一個示例項目,我們已經啟用了生成編譯信息JSON文件的功能。
現在,我們準備使用生成的compile_commands.json文件運行靜態分析。這個方法最大的一個優點就是,我們可以將.json文件直接用在Parasoft C/C++test命令行界面中:
等待命令執行結束。靜態分析就完成了,并且生成了報告。
這種集成方法可以用于持續集成(CI),也可以在開發人員桌面上本地使用。唯一可能需要的修改是啟用compile_command.json文件生成的功能。
如何在項目中啟用json文件生成功能
如果您的項目中沒有啟用compile_command.json文件的生成,我們可以用兩種方法之一來實現。
方法1:
在CMakeLists.txt文件中,將CMAKE_EXPORT_COMPILE_COMMANDS選項設置為ON。
示例:
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
方法2
在生成構建腳本時,將其添加到cmake的命令行調用中。
示例:
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=1 <path to src>
以上這就是將靜態分析集成到基于CMake的項目中的全部內容啦。