[發明專利]一種基于Clang程序結構的控制流程圖自動生成方法有效
| 申請號: | 202010428445.5 | 申請日: | 2020-05-20 |
| 公開(公告)號: | CN111708572B | 公開(公告)日: | 2022-11-25 |
| 發明(設計)人: | 王周愷;馬維綱;王鋒;黑新宏;陳浩;張毅坤 | 申請(專利權)人: | 西安理工大學 |
| 主分類號: | G06F8/75 | 分類號: | G06F8/75 |
| 代理公司: | 西安弘理專利事務所 61214 | 代理人: | 弓長 |
| 地址: | 710048 陜*** | 國省代碼: | 陜西;61 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 clang 程序結構 控制 流程圖 自動 生成 方法 | ||
本發明公開了一種基于Clang程序結構的控制流程圖自動生成方法,具體為:首先,逐行讀入數據庫中的Clang程序結構分析器的分析結果;分析結果包括程序編碼塊,本行程序代碼所在的行數,本行代碼相對于程序起始的偏移量,本行代碼所占字節數,本行代碼中的關鍵字相對于程序起始的偏移量以及本行中的關鍵字信息所占字節數;對程序塊編碼分析;最后控制流程圖繪制,輸出svg文件。利用該方法能夠很好地解決不同語句之間的嵌套問題,同時可以分析邏輯復雜的程序,并正確地生成其控制流圖,解決了程序流程的可視化問題,進而為基于流程圖的程序分析和程序理解提供良好的基礎。
技術領域
本發明屬于計算機技術領域,具體涉及一種基于Clang程序結構的控制流程圖自動生成方法。
背景技術
控制流程圖是軟件設計和測試的基礎。理解一個源程序的首要任務就是理解其邏輯結構。在程序分析領域,控制流圖作為刻畫程序的控制結構的工具,在優化編譯器設計、程序測試和程序結構復雜度分析中應用廣泛。是一種揭示和掌握封閉系統邏輯結構的有效方式。
隨著目前軟件規模的日益擴大,程序模塊邏輯越來越復雜,傳統的流程圖雖然可描述程序內部的控制流,但已經不能滿足實際的工程應用,通過控制流程圖來理解程序和測試軟件也越來越困難。
傳統的流程圖連線錯綜交疊,沒有直接將程序語句表示在圖元中,忽略了流程圖中的過程細節,只體現了程序的控制結構,缺乏對跳轉語句等特殊狀態的處理,當程序較大時顯得過于龐雜,無法讓人清晰的把握控制流走向。
發明內容
本發明的目的是提供一種基于Clang程序結構的控制流程圖自動生成方法,解決了現有方法中不同語句之間的嵌套問題,實現了從源程序到控制流圖的自動生成。
本發明所采用的技術方案是,一種基于Clang程序結構的控制流程圖自動生成方法,具體按照以下步驟實施:
步驟1,逐行讀入數據庫中的Clang程序結構分析器的分析結果;
分析結果包括程序編碼塊,本行程序代碼所在的行數,本行代碼相對于程序起始的偏移量,本行代碼所占字節數,本行代碼中的關鍵字相對于程序起始的偏移量以及本行中的關鍵字信息所占字節數;
步驟2,程序塊編碼分析;
步驟3,控制流程圖繪制,輸出svg文件。
本發明的特點還在于,
步驟2中,具體為:
步驟2.1,根據程序編碼塊判斷基本顯示結構,基本顯示結構分別有For循環結構、While循環結構、Do-while循環結構、Switch-Case結構、If判斷結構和Sequence結構,在此基礎上,創建6張線性表,用于存儲上述6種基本顯示結構;
步驟2.2,記錄、存儲讀入的基本顯示結構,并分析它們之間的關聯關系;
基本顯示結構和程序編碼塊的第三和第四位之間的對應關系分別為:
For循環開始:30,For循環結束:32;While循環開始:40;While循環結束:42;Do-while循環開始:50;Do-while循環結束:54;Switch選擇開始:20,Switch選擇結束(有default):24,Switch選擇結束(無default):25;Case結構開始:21;If判斷開始:10,If判斷結束:14;Else結構開始:12;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于西安理工大學,未經西安理工大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202010428445.5/2.html,轉載請聲明來源鉆瓜專利網。





