[發明專利]一種基于分級檢測的C、C++語言軟件成分分析方法及系統在審
| 申請號: | 202310583009.9 | 申請日: | 2023-05-23 |
| 公開(公告)號: | CN116661798A | 公開(公告)日: | 2023-08-29 |
| 發明(設計)人: | 朱輝;陳昭宇 | 申請(專利權)人: | 軟安科技有限公司 |
| 主分類號: | G06F8/41 | 分類號: | G06F8/41;G06F8/71;G06F11/36 |
| 代理公司: | 成都言成諾知識產權代理事務所(特殊普通合伙) 51314 | 代理人: | 張川 |
| 地址: | 610000 四川省成都*** | 國省代碼: | 四川;51 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 分級 檢測 c++ 語言 軟件 成分 分析 方法 系統 | ||
1.一種基于分級檢測的C、C++語言軟件成分分析方法,其特征在于:所述分析方法包括:
編譯步驟:用戶提供可編譯的C和/或C++項目依賴環境,根據自身需求指定分析的級別,并根據級別判斷是否為編譯分析,如果為編譯分析則獲取編譯命令列表,如果為非編譯分析則判斷此項目是否有可利用的構建工具;
編譯命令解析步驟:通過解析編譯步驟獲取的編譯命令列表,根據路徑優先級在操作系統路徑中查找依賴文件,調用操作系統的軟件包管理工具判斷依賴文件是否為操作系統安裝的依賴組件并進行相應處理;
文件特征掃描步驟:對路徑中的文件在SCA知識庫中進行代碼目錄,二進制文件匹配,查詢此部分的組件信息;
結果合并步驟:合并各步驟得到的最終掃描結果。
2.根據權利要求1所述的一種基于分級檢測的C、C++語言軟件成分分析方法,其特征在于:所述如果為編譯分析則獲取編譯命令列表包括:如果級別為全量編譯分析,則捕獲編譯命令列表;如果是增量編譯分析,則捕獲合并編譯命令列表;如果是通過緩存跳過編譯分析,則獲取緩存編譯命令列表。
3.根據權利要求1所述的一種基于分級檢測的C、C++語言軟件成分分析方法,其特征在于:所述如果為非編譯分析則判斷此項目是否有可利用的構建工具包括:
如果級別為直接掃描分析,則為非編譯分析,此時不對項目進行編譯,掃描項目可利用的構建工具;
如果為Cmake構建工具,則執行Cmake構建工具獲取編譯命令列表,并通過編譯命令解析步驟進行編譯命令解析;
如果為Conan包管理器,則直接利用Conan命令獲取Conan引入的依賴組件。
4.根據權利要求1所述的一種基于分級檢測的C、C++語言軟件成分分析方法,其特征在于:所述編譯命令解析步驟具體包括:
解析編譯步驟獲取的編譯命令列表得到依賴頭文件、依賴庫文件、編譯文件搜索路徑及優先級以及控制宏指令,根據這些信息搜索到真正編譯依賴的文件列表或者通過依賴文件提取命令直接調用查詢到依賴的文件;
如果依賴文件為通過操作系統包管理器按照或者手動直接引入的,則調用操作系統的軟件包管理工具查詢所有依賴文件列表得到操作系統包管理器組件,如果依賴文件不是操作系統依賴文件則執行文件特征掃描步驟。
5.一種基于分級檢測的C、C++語言軟件成分分析系統,其特征在于:它包括編譯模塊、編譯命令解析模塊、文件特征掃描模塊和結果合并模塊;
所述編譯模塊:用于用戶提供可編譯的C和/或C++項目依賴環境,并根據自身需求指定分析的級別,并根據級別判斷是否為編譯分析,如果為編譯分析則獲取編譯命令列表,如果為非編譯分析則判斷此項目是否有可利用的構建工具;
所述編譯命令解析模塊:用于通過解析編譯模塊獲取的編譯命令列表,根據路徑優先級在操作系統路徑中查找依賴文件,調用操作系統的軟件包管理工具判斷依賴文件是否為操作系統安裝的依賴組件并進行相應處理;
所述文件特征掃描模塊:用于對路徑中的文件在SCA知識庫中進行代碼目錄,二進制文件匹配,查詢此部分的組件信息;
所述結果合并模塊:用于合并各模塊得到的最終掃描結果。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于軟安科技有限公司,未經軟安科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202310583009.9/1.html,轉載請聲明來源鉆瓜專利網。





