System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本專利技術涉及計算機,特別涉及一種基于python的代碼自動生成和自動檢查方法。
技術介紹
1、在一些場景下,許多重復和復雜的代碼需要開發人員根據不同機型或設備的數據、指標來完成編寫和管理,若由開發人員自行檢視、編寫和檢查回耗費非常大的人力成本。并且人工編寫的代碼會出現難以避免的錯誤,后續需要人工編寫的文檔也要耗費大量人力。因此在實際開發過程中開發人員亟需一種可以自動生成代碼,支持自動檢查代碼的方案,為軟件開發測試提供必備的支持環境的工具。
技術實現思路
1、本專利技術的目的在于開發一種能夠自動生成代碼,且支持自動檢查代碼的工具,提供一種基于python的代碼自動生成和自動檢查方法。
2、為了實現上述專利技術目的,本專利技術提供了以下技術方案:
3、基于python的代碼自動生成和自動檢查方法,包括以下步驟:
4、步驟1,讀取配置和公共程序類文件;
5、步驟2,提取配置文件,開發源代碼解析處理程序,分析和處理用戶提供的各個功能的源代碼;
6、步驟3,開發基于python語言的代碼自動生成程序,根據提取的源代碼和配置生成對應的源代碼文件;
7、步驟4,開發代碼約束自動化檢查工具庫,進行架構符合性檢查,生成檢查結果文件。
8、所述步驟1中,配置和公共程序類文件包括yaml配置文件、re庫、ast模塊、csv庫。
9、所述步驟2包括具體以下步驟:
10、步驟2-1,使用ast模塊將
11、步驟2-2,遍歷抽象語法樹,尋找全局變量和局部變量的定義,以及需要修改的代碼;
12、步驟2-3,根據配置的規則,通過正則化表達式或其他文本處理方法對源代碼進行修改和重寫;
13、步驟2-4,將修改代碼后的抽象語法樹轉換回源代碼的形式;
14、步驟2-5,將修改后的源代碼保存到相應的代碼路徑下。
15、所述步驟2具體包括以下步驟:
16、步驟2-1,使用python的open方法讀取源代碼文件,逐行處理文件內容;
17、步驟2-2,針對每一行源代碼,使用正則表達式匹配需要修改的部分;
18、步驟2-3,根據匹配結果和re庫配置的規則,對需要修改的部分進行重寫;
19、步驟2-4,將修改代碼寫入新的文件中,或者覆蓋原始源代碼文件;
20、步驟2-5,將新的文件或修改的源代碼文件保存到相應的代碼路徑下。
21、所述步驟3中,通過下述一種或結合多種方案生成源代碼文件:
22、(1)靜態代碼分析:
23、使用python中的代碼解析庫分析c/c++源代碼,獲取代碼的定義;遍歷代碼的抽象語法樹,識別代碼的定義,并生成代碼相應的聲明;編寫自定義的抽象語法樹遍歷器,根據抽象語法樹遍歷器的節點類型識別代碼的定義;
24、(2)源碼掃描工具:
25、使用python編寫源碼掃描工具,掃描c/c++源代碼中的代碼定義;借助python的正則表達式和字符串處理功能,定位和提取代碼信息;根據掃描結果生成代碼相應的聲明頭文件或在聲明函數內部插入聲明語句;
26、(3)模板生成:
27、定義代碼聲明的模板,使用python的模板引擎根據模板生成代碼相應的聲明頭文件;在模板中預留代碼的位置,并填充代碼的名稱、類型;編寫python腳本來自動化生成頭文件,并將其集成到平臺構建過程中;
28、(4)代碼插樁:
29、使用python的代碼解析庫來c/c++源代碼,識別聲明函數的定義和內容;根據需求在聲明函數內部自動插入代碼的聲明語句;編寫自定義的插樁器,根據聲明函數的語法結構和規則來判斷插入位置,并生成代碼相應的聲明語句;
30、(5)正則表達式匹配:
31、使用python中的正則表達式來匹配c/c++源代碼中的代碼定義;編寫適當的正則表達式模式,識別代碼的聲明并提取相關信息;根據匹配結果生成代碼相應的聲明語句,并寫入聲明頭文件中。
32、所述步驟4具體包括以下步驟:
33、步驟4-1,對自動生成的源代碼文件進行架構符合性檢查;
34、步驟4-2,調用架構分析工具generator對代碼進行變量初始化、賦值、調用的檢查,輸出結果文件;
35、步驟4-3,使用python腳本對源代碼文件的解析完成對代碼的檢查,生成檢查結果文件。
36、所述步驟4-1具體包括以下步驟:
37、步驟4-1-1,通過語法、語義分析解析c/c++源代碼,得到抽象語法樹;
38、步驟4-1-2,遍歷抽象語法樹來查找與組件狀態變量和輸出變量相關的節點,涉及到檢查變量聲明、初始化的使用情況;
39、步驟4-1-3,通過注釋、約定特定的命名,或特定的類型來實現對狀態變量和輸出變量的識別;
40、步驟4-1-4,結合控制流分析檢查狀態變量和輸出變量是否在所有執行路徑上都被正確初始化;
41、步驟4-1-5,生成檢查報告,列出沒有正確初始化的變量以及原因,或者提供修復建議,或者自動修復。
42、還包括:步驟5,提供批處理腳本,便于用戶一鍵安裝和啟動工具。
43、與現有技術相比,本專利技術的有益效果:本專利技術支持自動化代碼生成,支持代碼約束自動化檢查,為軟件開發測試提供必備的支持環境的工具,包括能夠實現源碼分析功能、自動生成代碼、自動生成文檔、設計約束自動化檢查功能等,降低開發人員的工作量,避免人為開發帶來的錯誤。同時,此工具可跟隨客戶不同分區代碼進行相應配置,可直接安裝到客戶項目里,進行git追蹤,可一起進行版本管理和發版,工具提供init一鍵初始化腳本,初始化后直接使用bat腳本啟動。在實際生產環境中,客戶的代碼會有多個不同分區例如a、b、c、d等,也可能會有多個不同分支,此時只需配置相對應分區的yml和config配置文件即可隨時切換分區或分支運行工具,在初次配置后可將對應配置文件伴隨分區或分支代碼一同提交git,后續將達成與客戶分區或分支代碼一同維護的模式,可隨時生成和檢查用戶所需分區的代碼。并且不可編譯的c代碼通過平臺生成可編譯的經過多項約束自動化檢查的可編譯的c代碼。
本文檔來自技高網...【技術保護點】
1.基于Python的代碼自動生成和自動檢查方法,其特征在于:包括以下步驟:
2.根據權利要求1所述的基于Python的代碼自動生成和自動檢查方法,其特征在于:所述步驟1中,配置和公共程序類文件包括yaml配置文件、re庫、AST模塊、csv庫。
3.根據權利要求2所述的基于Python的代碼自動生成和自動檢查方法,其特征在于:所述步驟2包括具體以下步驟:
4.根據權利要求2所述的基于Python的代碼自動生成和自動檢查方法,其特征在于:所述步驟2具體包括以下步驟:
5.根據權利要求2所述的基于Python的代碼自動生成和自動檢查方法,其特征在于:所述步驟3中,通過下述一種或結合多種方案生成源代碼文件:
6.根據權利要求1所述的基于Python的代碼自動生成和自動檢查方法,其特征在于:所述步驟4具體包括以下步驟:
7.根據權利要求6所述的基于Python的代碼自動生成和自動檢查方法,其特征在于:所述步驟4-1具體包括以下步驟:
8.根據權利要求1所述的基于Python的代碼自動生成和自動檢查方法,
...【技術特征摘要】
1.基于python的代碼自動生成和自動檢查方法,其特征在于:包括以下步驟:
2.根據權利要求1所述的基于python的代碼自動生成和自動檢查方法,其特征在于:所述步驟1中,配置和公共程序類文件包括yaml配置文件、re庫、ast模塊、csv庫。
3.根據權利要求2所述的基于python的代碼自動生成和自動檢查方法,其特征在于:所述步驟2包括具體以下步驟:
4.根據權利要求2所述的基于python的代碼自動生成和自動檢查方法,其特征在于:所述步驟2具體包括以下步驟:
5.根據權利要...
【專利技術屬性】
技術研發人員:晏東,曾楊陽,安露明,邱禮勝,陳代豪,
申請(專利權)人:成都精靈云科技有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。