C/C++test兩步完成CMake項目靜態分析

您可能一直在靜態分析中使用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的項目中的全部內容啦。

圖片

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/35901.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/35901.shtml
英文地址,請注明出處:http://en.pswp.cn/news/35901.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Minecraft】Fabric Mod開發完整流程1 - 環境配置與第一個物品

前言 Fabric 是 Minecraft 一款非官方的模組 API,與 Forge mod 不同。它以輕量級和高性能為設計目標,專注于支持新版本的 Minecraft。 Fabric 和 Forge 在各自的加載編譯流程上差別很大&#xff0c;所以你很難看見有同時支持二者的 mod&#xff0c;除非做了兼容性處理 Fabri…

【Java筆記】對象存儲服務MinIO

1 MinIO簡介 MinIO基于Apache License v2.0開源協議的對象存儲服務&#xff0c;可以做為云存儲的解決方案用來保存海量的圖片&#xff0c;視頻&#xff0c;文檔。由于采用Golang實現&#xff0c;服務端可以工作在Windows,Linux, OS X和FreeBSD上。配置簡單&#xff0c;基本是復…

mac-右鍵-用VSCode打開

1.點擊訪達&#xff0c;搜索自動操作 2.選擇快速操作 3.執行shell腳本 替換代碼如下&#xff1a; for f in "$" doopen -a "Visual Studio Code" "$f" donecommand s保存會出現一個彈框&#xff0c;保存為“用VSCode打開” 5.使用

基于百度語音識別API智能語音識別和字幕推薦系統——深度學習算法應用(含全部工程源碼)+測試數據集

目錄 前言總體設計系統整體結構圖系統流程圖 運行環境模塊實現1. 數據預處理2. 翻譯3. 格式轉換4. 音頻切割5. 語音識別6. 文本切割7. main函數 系統測試工程源代碼下載其它資料下載 前言 本項目基于百度語音識別API&#xff0c;結合了語音識別、視頻轉換音頻識別以及語句停頓…

【人工智能124種任務大集合】-集齊了自然語言處理(NLP),計算機視覺(CV),語音識別,多模態等任務

大家好&#xff0c;我是微學AI&#xff0c;今天給大家介紹一下人工智能124種任務大集合&#xff0c;任務集合主要包括4大類&#xff1a;自然語言處理&#xff08;NLP&#xff09;、計算機視覺&#xff08;CV&#xff09;、語音識別、多模態任務。 我這里整理了124種應用場景任…

JavaScript基礎之基于數據類型和引用數據類型

原文合集地址如下&#xff0c;有需要的朋友可以關注 本文地址 數據類型 JavaScript的數據類型有7中&#xff0c;包括6個基本類型和一個引用類型 基本數據類型&#xff1a;number, string, boolean, null, undefined, symbol 引用數據類型&#xff1a;object&#xff08;數組…

工業物聯網數據橋接教程:Modbus 橋接到 MQTT

Modbus 介紹 Modbus 是一種串行通信協議&#xff0c;用于連接工業自動化設備&#xff0c;最初由 Modicon 公司開發&#xff0c;誕生于 1979 年&#xff0c;現在已成為通用的通訊標準之一&#xff0c;廣泛用于工業自動化場景。 Modbus 采用主從模式&#xff0c;支持多種傳輸方…

PyTorch深度學習實戰(11)——卷積神經網絡

PyTorch深度學習實戰&#xff08;11&#xff09;——卷積神經網絡 0. 前言1. 全連接網絡的缺陷2. 卷積神經網絡基本組件2.1 卷積2.2 步幅和填充2.3 池化2.3 卷積神經網絡完整流程 3. 卷積和池化相比全連接網絡的優勢4. 使用 PyTorch 構建卷積神經網絡4.1 使用 PyTorch 構建 CNN…

H5移動端附件下載

目錄 H5移動端附件下載 1. 使用 window.open() 進行下載 2. 使用 a 標簽創建隱藏的可下載鏈接 3. 使用 iframe 進行下載 4. 使用 FileSaver.js 插件下載 4.1 Vue項目中導入并使用下載附件 4.2 FileSaver.js 的其他知識 H5移動端附件下載 1. 使用 window.open() 進行下載…

ClickHouse的數據類型

1.整數型 固定長度的整型&#xff0c;包括有符號整型或無符號整型。整型范圍&#xff08;-2n-1~2n-1-1&#xff09;&#xff1a; Int8 - [-128 : 127] Int16 - [-32768 : 32767] Int32 - [-2147483648 : 2147483647] Int64 - [-9223372036854775808 : 9223372036854775807]無符…

Linux學習之sed多行模式

N將下一行加入到模式空間 D刪除模式空間中的第一個字符到第一個換行符 P打印模式空間中的第一個字符到第一個換行符 doubleSpace.txt里邊的內容如下&#xff1a; goo d man使用下邊的命令可以實現把上邊對應的內容放到doubleSpace.txt。 echo goo >> doubleSpace.txt e…

sealos安裝k8s

一、前言 1、我前面文章有寫過使用 kubeadm 安裝的方式&#xff0c;大家可以去參考 &#xff08;二&#xff09;k8s集群安裝&#xff0c;有一系列的k8s文章說明 2、安裝k8s的方式有很多 kubeadmsealoskubespray等等 3、關于sealos來安裝 k8s &#xff0c;也是非常建議大家去…

Idea 反編譯jar包

實際項目中&#xff0c;有時候會需要更改jar包源碼來達到業務需求&#xff0c;本文章將介紹一下如何通過Idea來進行jar反編譯 1、Idea安裝decompiler插件 2、找到decompiler插件文件夾 decompiler插件文件夾路徑為&#xff1a;idea安裝路徑/plugins/java-decompiler/lib 3、…

可獨立創建應用的SaaS多租戶低代碼平臺之租戶的應用管理說明

在IT系統中&#xff0c;“租戶”&#xff08;tenant&#xff09;通常用于指代一種多租戶架構&#xff08;multi-tenancy&#xff09;&#xff0c;它是一種軟件架構模式&#xff0c;允許多個用戶或組織共享相同的應用程序或系統實例&#xff0c;但彼此之間的數據和配置被隔離開來…

C#軟件外包開發框架

C# 是一種由微軟開發的多范式編程語言&#xff0c;常用于開發各種類型的應用程序&#xff0c;從桌面應用程序到移動應用程序和Web應用程序。在 C# 開發中&#xff0c;有許多框架和庫可供使用&#xff0c;用于簡化開發過程、提高效率并實現特定的功能。下面和大家分享一些常見的…

代駕小程序怎么做

代駕小程序是一款專門為用戶提供代駕服務的手機應用程序。它具有以下功能&#xff1a; 1. 預約代駕&#xff1a;代駕小程序允許用戶在需要代駕服務時提前進行預約。用戶可以選擇出發地點、目的地以及預計用車時間&#xff0c;系統會自動匹配最合適的代駕司機&#xff0c;并確保…

黑馬B站八股文學習筆記

視頻地址&#xff1a;https://www.yuque.com/linxun-bpyj0/linxun/vy91es9lyg7kbfnr 大綱 基礎篇 基礎篇要點&#xff1a;算法、數據結構、基礎設計模式 1. 二分查找 要求 能夠用自己語言描述二分查找算法能夠手寫二分查找代碼能夠解答一些變化后的考法 算法描述 前提&a…

div 中元素居中的N種常用方法

本文主要記錄幾種常用的div盒子水平垂直都居中的方法。本文主要參考了該篇博文并實踐加以記錄說明以加深理解記憶 css之div盒子居中常用方法大全 本文例子使用的 html body結構下的div 盒子模型如下&#xff1a; <body><div class"container"><div c…

休息是不可能休息的

654.最大二叉樹 分析&#xff1a;相比較遍歷順序構建二叉樹&#xff0c;這個相對簡單。 思路&#xff1a;每次找到數組最大值&#xff0c;然后分割數組 class Solution { public:TreeNode*judge(vector<int>&nums){if(nums.size()0) return nullptr;int maxNum0,in…

Springboot 實踐(1)MyEclipse2019創建maven工程

項目講解步驟&#xff0c;基于本機已經正確安裝Java 1.8.0及MyEclipse2019的基礎之上&#xff0c;Java及MyEclipse的安裝&#xff0c;請參考其他相關文檔&#xff0c;Springboot 實踐文稿不再贅述。項目創建講解馬上開始。 一、首先打開MyEclipse2019&#xff0c;進入工作空間選…