代碼檢測方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機技術(shù),尤其涉及一種代碼檢測方法及裝置。
【背景技術(shù)】
[0002]由于通常需要對編譯好的代碼進行檢查,特別是對于代碼變更比較頻繁的項目,因此,除了人工檢查提交的代碼之外,還需要有自動化工具來監(jiān)控代碼的變更,從而掃描并檢查代碼中所存在的缺陷以及不符合規(guī)范的代碼。
[0003]目前由于代碼種類繁多且代碼運行的系統(tǒng)平臺也多種多樣,比如安卓Android系統(tǒng)平臺、蘋果公司1s系統(tǒng)平臺等,且不同的平臺對應(yīng)了不同的機型;tl^n,Android平臺碎片化嚴(yán)重,機型品牌繁多且系統(tǒng)版本各異,在開發(fā)Android操作系統(tǒng)對應(yīng)的應(yīng)用軟件時,同一應(yīng)用軟件的部分功能需要針對不同機型或者操作系統(tǒng)版本等不同方面的適配來保證該應(yīng)用軟件具備較好的兼容性;因此,在開發(fā)出上述應(yīng)用軟件對應(yīng)的代碼時,需要對于上述代碼進行檢測。但目前代碼掃描工具所使用的規(guī)則庫中,僅收集了同一編程語言對應(yīng)的代碼通用問題,無法檢測到需要進行機型版本適配的代碼以及某一操作系統(tǒng)中的典型代碼缺陷和不符合相應(yīng)代碼規(guī)范等代碼所存在的非通用問題。
【發(fā)明內(nèi)容】
[0004]鑒于以上內(nèi)容,有必要提供一種代碼檢測方法及裝置,旨在提高代碼檢測的范圍及針對性。
[0005]本發(fā)明實施例提供一種代碼檢測方法,包括以下步驟:
[0006]接收代碼檢測的觸發(fā)指令,識別所述觸發(fā)指令的指令類型;
[0007]在所述指令類型指向通用規(guī)則庫時,調(diào)用所述通用規(guī)則庫對所待檢測代碼進行靜態(tài)掃描;在所述指令類型指向擴展規(guī)則庫時,調(diào)用所述擴展規(guī)則庫對待檢測代碼進行靜態(tài)掃描;在所述指令類型指向通過規(guī)則庫和擴展規(guī)則庫時,調(diào)用通用規(guī)則庫和擴展規(guī)則庫對待檢測代碼進行靜態(tài)掃描;
[0008]獲取與所述通用規(guī)則庫和/或擴展規(guī)則庫匹配的代碼,生成包含警告信息的檢測?艮告;
[0009]推送生成的所述檢測報告。
[0010]本發(fā)明實施例還提供一種代碼檢測裝置,包括:
[0011]代碼掃描模塊,用于接收代碼檢測的觸發(fā)指令,識別所述觸發(fā)指令的指令類型;在所述指令類型指向通用規(guī)則庫時,調(diào)用所述通用規(guī)則庫對所待檢測代碼進行靜態(tài)掃描;在所述指令類型指向擴展規(guī)則庫時,調(diào)用所述擴展規(guī)則庫對待檢測代碼進行靜態(tài)掃描;在所述指令類型指向通過規(guī)則庫和擴展規(guī)則庫時,調(diào)用通用規(guī)則庫和擴展規(guī)則庫對待檢測代碼進行靜態(tài)掃描;
[0012]報告生成模塊,用于獲取與所述通用規(guī)則庫和/或擴展規(guī)則庫匹配的代碼,生成包含警告信息的檢測報告;
[0013]信息推送模塊,用于推送生成的所述檢測報告。
[0014]本發(fā)明實施例代碼檢測工具接收代碼檢測的觸發(fā)指令,識別所述觸發(fā)指令的指令類型;并根據(jù)具體的所述指令類型,調(diào)用通用規(guī)則庫和/或擴展規(guī)則庫對待檢測代碼進行靜態(tài)掃描;獲取與所述通用規(guī)則庫和/或擴展規(guī)則庫匹配的代碼,生成包含警告信息的檢測報告;推送生成的所述檢測報告;提高了代碼檢測的范圍及針對性,避免了代碼中可能存在的典型錯誤,提高了代碼運行的穩(wěn)定性、可維護性及對應(yīng)代碼映射的產(chǎn)品功能的一致性。
【附圖說明】
[0015]圖1是本發(fā)明代碼檢測方法第一實施例流程示意圖;
[0016]圖2是根據(jù)圖1所描述的代碼檢測方法生成的檢測報告一實施例界面示意圖;
[0017]圖3是中圖2所示的檢測報告對應(yīng)的警告內(nèi)容一實施例界面示意圖;
[0018]圖4是本發(fā)明代碼檢測方法中掃描得出的待檢測代碼對應(yīng)的項目模塊依賴關(guān)系一實施例功能模塊示意圖;
[0019]圖5是本發(fā)明代碼檢測方法第二實施例流程示意圖;
[0020]圖6是本發(fā)明代碼檢測裝置第一實施例功能模塊示意圖;
[0021]圖7是本發(fā)明代碼檢測裝置第二實施例功能模塊示意圖;
[0022]圖8是本發(fā)明代碼檢測裝置一實施例硬件架構(gòu)示意圖。
[0023]本發(fā)明實施例目的的實現(xiàn)、功能特點及優(yōu)點將結(jié)合實施例,參照附圖做進一步說明。
【具體實施方式】
[0024]以下結(jié)合說明書附圖及具體實施例進一步說明本發(fā)明的技術(shù)方案。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0025]本發(fā)明實施例代碼檢測方法及裝置適用于任意類型的代碼檢測環(huán)境中,所述代碼包括但不限于使用Java語言編寫的代碼,本實施例對編寫待檢測代碼所使用的編程語言不進行限定;另外,所述代碼運行的操作系統(tǒng)可以是主流的Android操作系統(tǒng)、1s操作系統(tǒng)以及windows操作系統(tǒng),也可以是塞班系統(tǒng)、微軟操作系統(tǒng)等,本發(fā)明實施例對待檢測代碼運行的操作系統(tǒng)也不進行限定。
[0026]請參照圖1,圖1是本發(fā)明代碼檢測方法第一實施例流程意圖;如圖1所不,本發(fā)明代碼檢測方法包括以下步驟:
[0027]步驟S11、接收代碼檢測的觸發(fā)指令,識別所述觸發(fā)指令的指令類型;
[0028]步驟S12、在所述指令類型指向通用規(guī)則庫時,調(diào)用所述通用規(guī)則庫對所待檢測代碼進行靜態(tài)掃描;在所述指令類型指向擴展規(guī)則庫時,調(diào)用所述擴展規(guī)則庫對待檢測代碼進行靜態(tài)掃描;在所述指令類型指向通過規(guī)則庫和擴展規(guī)則庫時,調(diào)用通用規(guī)則庫和擴展規(guī)則庫對待檢測代碼進行靜態(tài)掃描;
[0029]接收到代碼檢測的觸發(fā)指令時,代碼檢測工具響應(yīng)所述觸發(fā)指令,并識別所述觸發(fā)指令的指令類型;本發(fā)明實施例中,由于在代碼檢測工具進行代碼檢測時,在不同的應(yīng)用場景所使用的檢測方式不同,即在不同的應(yīng)用場景中,選擇使用不同的規(guī)則庫進行代碼掃描。
[0030]根據(jù)識別出的所述觸發(fā)指令的指令類型,代碼檢測工具選擇不同的規(guī)則庫對待檢測代碼進行靜態(tài)掃描。在所述指令類型指向通用規(guī)則庫時,調(diào)用所述通用規(guī)則庫對所待檢測代碼進行靜態(tài)掃描;在所述指令類型指向擴展規(guī)則庫時,調(diào)用所述擴展規(guī)則庫對待檢測代碼進行靜態(tài)掃描;在所述指令類型指向通過規(guī)則庫和擴展規(guī)則庫時,調(diào)用預(yù)先存儲的通用規(guī)則庫和擴展規(guī)則庫,對待檢測代碼進行靜態(tài)掃描;比如,代碼檢測工具掃描待檢測代碼中是否存在與所述通用規(guī)則庫和/或擴展規(guī)則庫相匹配的代碼。
[0031]對代碼進行靜態(tài)掃描可以理解為:在不運行上述代碼的方式下,通過詞法分析、語法分析、控制流分析等技術(shù)對上述代碼進行掃描,從而驗證掃描的所述代碼是否滿足針對所述代碼所要求的規(guī)范性、安全性、可靠性、可維護性等指標(biāo)的一種代碼分析技術(shù)。其中,所述詞法分析可以理解為:計算機科學(xué)中將字符序列轉(zhuǎn)換為單詞序列的過程;所述語法分析可以理解為:在所述詞法分析的基礎(chǔ)上,將單詞序列組合成各類語法短語、語句、表達(dá)式等。
[0032]本發(fā)明實施例中,所述通用規(guī)則庫和擴展規(guī)則庫可以理解為:根據(jù)待檢測代碼的類型、待檢測代碼的運行環(huán)境以及對該待檢測代碼的具體要求所設(shè)置的或者說所定義的不符合相應(yīng)要求或規(guī)范的規(guī)則庫;該自定規(guī)則庫中存儲了不符合要求代碼,比如典型錯誤代碼、典型代碼缺陷、不符合項目設(shè)計規(guī)范的代碼、不符合產(chǎn)品設(shè)計規(guī)范的代碼等。
[0033]在本發(fā)明一優(yōu)選實施例中,所述通用規(guī)則庫可以理解為:靜態(tài)代碼掃描工具映射的通用規(guī)則庫,比如代碼掃描工具FindBugs以及PWD對應(yīng)的已有規(guī)則庫等;所述擴展規(guī)則庫可以理解為:所述待檢測代碼映射的擴展規(guī)則庫,比如,針對待檢測代碼的特點或者用途或者使用環(huán)境等,設(shè)置所述待檢測代碼所需的代碼規(guī)范、設(shè)計規(guī)范、異常退出問題以及所述待檢測代碼運行系統(tǒng)典型問題所對應(yīng)的規(guī)則,比如產(chǎn)品設(shè)計規(guī)范、團隊代碼規(guī)范、項目代碼規(guī)范以及Android系統(tǒng)典型問題和項目可能出現(xiàn)的crash問題等對應(yīng)的規(guī)則。
[0034]步驟S13、獲取與所述通用規(guī)則庫和/或擴展規(guī)則庫匹配的代碼,生成包含警告信息的檢測報告;
[0035]在代碼檢測工具對代碼進行靜態(tài)掃描的過程中,如果代碼檢測工具所掃描到的代碼命中所述通用規(guī)則庫和/或擴展規(guī)則庫中的規(guī)則,則表示該代碼與所述通用規(guī)則庫和/或擴展規(guī)則庫中的規(guī)則相匹配。此時,代碼檢測工具獲取與所述通用規(guī)則庫和/或擴展規(guī)則庫相匹配的代碼,即與所述通用規(guī)則庫和/或擴展規(guī)則庫相匹配的代碼均為不符合要求的代碼,比如該匹配代碼不符合項目設(shè)計規(guī)范或者不符合產(chǎn)品設(shè)計規(guī)范或者項目出現(xiàn)的crash問題或者Android系統(tǒng)典型問題等。其中,所述crash問題可以理解為:該程序遇到未知問題時,運行出錯并自動退出的情況,或者程序運行崩潰的情況。
[0036]當(dāng)掃描出與所述通用規(guī)則庫和/或擴展規(guī)則庫匹配的不符合要求的代碼時,代碼檢測工具生成包含上述匹配代碼對應(yīng)的警告信息的檢測報告。若代碼檢測工具從待檢測代碼中,沒有掃描出與所述通用規(guī)則庫和擴展規(guī)則庫相匹配的代碼,則表示上述代碼不存在與通用規(guī)則庫和擴展規(guī)則庫匹配的代碼,則代碼檢測工具根據(jù)預(yù)先設(shè)置的操作,發(fā)送檢測通過的提示信息或者不執(zhí)行任何操作,由用戶確定是否再次觸發(fā)對應(yīng)的操作操作,或者人工進行代碼檢測。
[0037]步驟S14、推送生成的所述檢測報告。
[0038]代碼檢測工具生成上述檢測報告后,將生成的所述檢測報告推送至用戶;進而由用戶根據(jù)