首頁 資訊 軟件代碼健康度的檢測方法、處理方法、裝置及電子設備與流程

軟件代碼健康度的檢測方法、處理方法、裝置及電子設備與流程

來源:泰然健康網 時間:2025年08月04日 04:32

本申請涉及計算機技術領域,尤其涉及一種軟件代碼健康度的檢測方法、處理方法、裝置及電子設備。

背景技術:

隨著計算機科學技術的發(fā)展,軟件的應用范圍和規(guī)模也隨之不斷擴大。在軟件應用場景更為廣闊的大背景下,軟件質量成為專業(yè)技術人員更為關心的問題。在軟件質量評估中,代碼質量是軟件質量的重要部分,其緊密關系到各大互聯(lián)網企業(yè)項目線上運行的穩(wěn)定性,也進一步影響著用戶體驗和企業(yè)的效益。在代碼質量的評估中,代碼健康度可綜合反映軟件代碼的整體質量。目前,由于各大企業(yè)業(yè)務需求不盡相同,因此軟件代碼的類型和風格日趨多樣化,這對代碼健康度的衡量帶來了進一步的挑戰(zhàn)。在現(xiàn)有的代碼健康度評估技術中,一般僅側重于對代碼的某一個或少數幾個維度進行評估,評估所依賴的基礎數據單一且評估過程較為簡單,因此評估結果往往不能準確、全面地反映真實的代碼質量。

技術實現(xiàn)要素:

本發(fā)明實施例提供一種軟件代碼健康度的檢測方法、處理方法、裝置及電子設備,能夠使軟件代碼健康度的檢測過程更具綜合性,其檢測結果也更為全面和準確。

本發(fā)明實施例提供了一種軟件代碼健康度的檢測方法,包括:

獲取待評估軟件代碼的多個維度的原始度量值;

根據各個維度對應的第一權重值,對所述多個維度的原始度量值進行加權求和,獲得待評估軟件代碼的健康度,其中,所述第一權重值為通過機器學習而獲得的權重值。

本發(fā)明實施例還提供了一種軟件代碼健康度的檢測裝置,包括:

原始度量值獲取模塊,用于獲取待評估軟件代碼的多個維度的原始度量值;

代碼健康度計算模塊,用于根據各個維度對應的第一權重值,對所述多個維度的原始度量值進行加權求和,獲得待評估軟件代碼的健康度,其中,所述第一權重值為通過機器學習而獲得的權重值。

本發(fā)明實施例還提供了一種電子設備,包括:

存儲器,用于存儲程序;

處理器,耦合至所述存儲器,用于執(zhí)行所述程序,以用于:

獲取待評估軟件代碼的多個維度的原始度量值;

根據各個維度對應的第一權重值,對所述多個維度的原始度量值進行加權求和,獲得待評估軟件代碼的健康度,其中,所述第一權重值為通過機器學習而獲得的權重值。

本發(fā)明實施例還提供了一種軟件代碼健康度的處理方法,包括:

獲取多個作為訓練樣本的訓練軟件代碼;

獲取各個訓練軟件代碼的多個維度的原始度量值作為各個訓練樣本的訓練特征,以及獲取各個訓練軟件代碼對應的健康評價結果作為各個訓練樣本的結果標簽;

使用所述多個訓練樣本對原始的隨機森林模型進行訓練,生成訓練后的隨機森林模型;

獲取訓練后的隨機森林模型中,與各個訓練特征對應的第二權重值作為在計算待評估軟件代碼的健康度的處理中,各個待評估軟件代碼的對應維度的第一權重值。

本發(fā)明實施例還提供了一種電子設備,包括:

存儲器,用于存儲程序;

處理器,耦合至所述存儲器,用于執(zhí)行所述程序,以用于:

獲取多個作為訓練樣本的訓練軟件代碼;

獲取各個訓練軟件代碼的多個維度的原始度量值作為各個訓練樣本的訓練特征,以及獲取各個訓練軟件代碼對應的健康評價結果作為各個訓練樣本的結果標簽;

使用所述多個訓練樣本對原始的隨機森林模型進行訓練,生成訓練后的隨機森林模型;

獲取訓練后的隨機森林模型中,與各個訓練特征對應的第二權重值作為在計算待評估軟件代碼的健康度的處理中,各個待評估軟件代碼的對應維度的第一權重值。

本發(fā)明實施例提供一種代碼健康度的檢測方法、處理方法、裝置及電子設備,采用了多個維度的數據全面、深入地評估軟件代碼健康度,如此使得軟件代碼健康度的檢測過程更具綜合性,并且通過機器學習的方法對多個維度的數據確定不同的權重值,該權重值的確定能夠使最終結果更符合真實的代碼質量,從而獲得更為全面和準確的代碼健康度檢測結果。

上述說明僅是本發(fā)明技術方案的概述,為了能夠更清楚了解本發(fā)明的技術手段,而可依照說明書的內容予以實施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本發(fā)明的具體實施方式。

附圖說明

圖1為本發(fā)明實施例的軟件代碼健康度的檢測的邏輯示意圖;

圖2為本發(fā)明實施例一的軟件代碼健康度的檢測方法的流程示意圖;

圖3為本發(fā)明實施例二的隨機森林模型訓練方法的流程示意圖;

圖4為本發(fā)明實施例三的軟件代碼健康度的檢測裝置的結構示意圖一;

圖5為本發(fā)明實施例三的軟件代碼健康度的檢測裝置的結構示意圖二;

圖6為本發(fā)明實施例提供的電子設備的結構示意圖一;

圖7為本發(fā)明實施例的軟件代碼復雜度的檢測的邏輯示意圖;

圖8為本發(fā)明實施例五的軟件代碼復雜度的檢測方法的流程示意圖;

圖9為本發(fā)明實施例六的軟件代碼復雜度的檢測方法的流程示意圖;

圖10為本發(fā)明實施例的軟件代碼復雜度的檢測裝置的結構示意圖;

圖11為本發(fā)明實施例提供的電子設備的結構示意圖二。

具體實施方式

下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應當理解,可以以各種形式實現(xiàn)本公開而不應被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠將本公開的范圍完整的傳達給本領域的技術人員。

為了便于說明本發(fā)明實施例的技術方案,在描述的過程中定義了如下的名稱:

代碼的健康度,指綜合評價軟件代碼項目健康性的指標。

動態(tài)維度,指和軟件代碼動態(tài)運行時屬性相關的質量評估特性。在動態(tài)維度中還可以包括多個子維度,例如代碼測試bug率、代碼線上故障率、代碼運行時資源使用率。

靜態(tài)維度,指和軟件代碼的靜態(tài)屬性相關的質量評估特性。在靜態(tài)維度中還可以包括多個子維度,例如代碼與集團規(guī)約符合程度(規(guī)約符合度)、軟件代碼復雜度、代碼面向對象性、代碼重復率。

第一權重值,指通過機器學習獲得的權重值,對應軟件代碼中各個維度的原始度量值的權重。

第二權重值,指通過訓練隨機森林模型獲得的權重值,與隨機森林模型訓練中各個訓練特征相對應。

代碼片段,指軟件中包括了方法函數和或數據結構類的代碼集。

第一聚合得分,指對待評估軟件的代碼片段的代碼復雜度指標逐級縱向聚合后在最高層級的代碼復雜度得分。例如,對待評估軟件的代碼片段在類層、模塊層、文件層和項目層進行逐級縱向聚合,則在項目層的代碼復雜度得分即為第一聚合得分。

第二聚合得分,指對待評估軟件的代碼片段的代碼復雜度指標橫向聚合后的代碼復雜度得分,也即待評估軟件最終的軟件代碼復雜度檢測結果。

弱項集約式聚合函數,指能夠在不改變值域的同時賦予較小值更大權重的聚合函數。

本發(fā)明實施例的技術原理在于:通過采用多個維度的數據全面、深入地評估軟件代碼健康度,使得軟件代碼健康度的檢測過程更具綜合性,并且通過機器學習的方法對多個維度的數據確定不同的權重值,該權重值的確定能夠使最終結果更符合真實的代碼質量,從而獲得更為全面和準確的代碼健康度檢測結果。

如圖1所示,其為本發(fā)明實施例的軟件代碼健康度的檢測的邏輯示意圖,如圖所示,在本實施例中,軟件代碼健康度的檢測主要包括兩個方面:獲取原始度量值和計算軟件代碼的健康度。以下將針對上述兩個方面進行詳細闡述。

首先,為了檢測軟件代碼的健康度,需要獲取待評估軟件代碼的各個維度的原始度量值。在本實施例中,待評估軟件代碼的健康度主要從兩個方面考慮,即動態(tài)維度和靜態(tài)維度。此外,動態(tài)維度和靜態(tài)維度中還包括了多個子維度。動態(tài)維度主要包括三個子維度,即代碼線下測試bug率、代碼線上運行故障率和代碼運行時資源使用率。靜態(tài)維度主要包括四個子維度,即代碼與集團規(guī)約規(guī)則符合程度(規(guī)約符合度)、軟件代碼復雜度、代碼面向對象性以及代碼重復程度。

在實際應用場景中,上述各個維度原始度量值的獲取可根據其維度類型的不同而選擇采用不同的方式。例如,上述靜態(tài)維度中,各個子維度的原始度量值可來源于開源工具對待評估軟件代碼的靜態(tài)測量值;上述動態(tài)維度中,各個子維度的原始度量值可來源于對待評估軟件代碼的測試和運行數據的監(jiān)測,具體可以包括失敗的測試用例、檢測到的線上異常、實時的cpu和內存使用率。

然后,通過上述原始度量值,并結合通過機器學習獲得的各個維度的權重值,即第一權重值,對各個維度的原始度量值進行加權求和,即可獲得最終軟件代碼的健康度。在實際應用過程中,第一權重值可以通過訓練隨機森林模型獲得,該隨機森林模型以訓練軟件代碼作為訓練樣本,以訓練軟件代碼的多個維度的原始度量值作為訓練特征,以各個訓練軟件代碼對應的健康評價結果作為各個訓練樣本的結果標簽,該健康評價結果可表示為0或1,其中0可表征不健康,1可表征健康。使用多個訓練樣本經過多次訓練后生成訓練后的隨機森林模型。在本實施例中,可獲取隨機森林模型中各個訓練特征對應的權重值,即第二權重值,作為本實施例中的上述第一權重值,并用于對各個維度的原始度量值進行加權求和的計算中,獲得待評估軟件代碼的健康度。

需要說明的是,上述待評估軟件代碼的健康度檢測結果對應整個軟件代碼項目,而非對應軟件代碼項目中模塊、文件或類。

此外,待評估軟件代碼的健康度檢測結果為一個數值型的綜合評分結果,該評分結果值越高,則代表該軟件代碼越健康,反之,該評分結果值越低,則代表該軟件代碼越不健康。

下面通過多個實施例來進一步說明本申請的技術方案。

實施例一

基于上述軟件代碼健康度的檢測的方案思想,如圖2所示,為本發(fā)明實施例一的軟件代碼健康度的檢測方法的流程示意圖,該方法的執(zhí)行主體為軟件代碼健康度的檢測裝置,該方法可以包括:

s210,獲取待評估軟件代碼的多個維度的原始度量值。

s220,根據各個維度對應的第一權重值,對多個維度的原始度量值進行加權求和,獲得待評估軟件代碼的健康度,其中,第一權重值為通過機器學習而獲得的權重值。

進一步地,上述多個維度的原始度量值,可以包括:

動態(tài)維度和或靜態(tài)維度的原始度量值。具體地,動態(tài)維度和靜態(tài)維度中還可包括多個子維度。如上述提及的,動態(tài)維度包括但不限于代碼線下測試bug率、代碼線上運行故障率和代碼運行時資源使用率。靜態(tài)維度包括但不限于代碼與集團規(guī)約規(guī)則符合程度(規(guī)約符合度)、軟件代碼復雜度、代碼面向對象性以及代碼重復程度。

在實際應用場景中,動態(tài)維度與靜態(tài)維度的原始度量值的獲取方法不盡相同。例如,在靜態(tài)維度中,各個子維度的原始度量值可來源于開源工具對待評估軟件代碼的靜態(tài)測量值;而在動態(tài)維度中,各個子維度的原始度量值可來源于對待評估軟件代碼的測試和運行數據的監(jiān)測,具體可以包括失敗的測試用例、檢測到的線上異常、實時的cpu和內存使用率。

進一步地,上述對多個維度的原始度量值進行加權求和,獲得待評估軟件代碼的健康度,可以包括:

根據如下公式計算健康度:

其中,y為上述健康度,wk為上述各個維度對應的第一權重值,fk為上述各個維度的原始度量值,l為上述維度的總數。

具體地,通過對多個維度的原始度量值加權求和,獲得軟件代碼的健康度y,該健康度y為一個數值型的綜合評分結果,即待評估軟件代碼的健康度檢測結果,此外,該檢測結果對應整個軟件代碼項目,表示整個軟件代碼項目的整體健康性,而非對應軟件代碼項目中模塊、文件或類。

本發(fā)明實施例提供的代碼健康度的檢測方法,采用了多個維度的數據全面、深入地評估軟件代碼健康度,如此使得軟件代碼健康度的檢測過程更具綜合性,并且通過機器學習的方法對多個維度的數據確定不同的權重值,該權重值的確定能夠使最終結果更符合真實的代碼質量,從而獲得更為全面和準確的代碼健康度檢測結果。

實施例二

基于實施例一所述的軟件代碼健康度的檢測方法的整體思想,本實施例將對第一權重值的獲取進行進一步細化。在上述實施例一所述的軟件代碼健康度的檢測方法的基礎上,還可以通過訓練隨機森林模型,獲取各個維度對應的第一權重值。

具體地,如上述提及的,第一權重值可以通過訓練隨機森林模型獲得,該隨機森林模型可以以訓練軟件代碼作為訓練樣本,以訓練軟件代碼的多個維度的原始度量值作為訓練特征,以各個訓練軟件代碼對應的健康評價結果作為各個訓練樣本的結果標簽。使用多個訓練樣本經過多次訓練后生成訓練后的隨機森林模型。

進一步地,如圖3所示,其為本發(fā)明實施例二的隨機森林模型訓練方法的流程示意圖,上述訓練隨機森林模型,獲取各個維度對應的第一權重值可以包括:

s310,獲取多個作為訓練樣本的訓練軟件代碼。具體地,該訓練軟件代碼即為用于作為訓練樣本的軟件代碼集。

s320,獲取各個訓練軟件代碼的多個維度的原始度量值作為各個訓練樣本的訓練特征,以及獲取各個訓練軟件代碼對應的健康評價結果作為各個訓練樣本的結果標簽。

具體地,上述各個訓練軟件代碼的多個維度的原始度量值的獲取方式與上述提及的待評估軟件代碼的多個維度的原始度量值的獲取方式相同,即可獲取訓練軟件代碼的動態(tài)維度和或靜態(tài)維度的多個子維度的原始度量值。其中,靜態(tài)維度中各個子維度的原始度量值可來源于開源工具對待評估軟件代碼的靜態(tài)測量值,動態(tài)維度中的各個子維度的原始度量值可來源于對待評估軟件代碼的測試和運行數據的監(jiān)測,具體可以包括失敗的測試用例、檢測到的線上異常、實時的cpu和內存使用率。

此外,上述各個訓練軟件代碼對應的健康評價結果可以人為標定,該人為標定結果可表示為0或1,其中0可表示不健康,1可表示健康。

s330,使用多個訓練樣本對原始的隨機森林模型進行訓練,生成訓練后的隨機森林模型。

具體地,采用訓練軟件代碼的多個維度的原始度量值和與各個軟件代碼對應的健康評價結果分別作為訓練特征和結果標簽,并且使用多個樣本對隨機森林模型進行多次訓練。

s340,獲取訓練后的隨機森林模型中,與各個訓練特征對應的第二權重值作為第一權重值。即將各個訓練特征對應的第二權重值作為在計算待評估軟件代碼的健康度的處理中,各個待評估軟件代碼的對應維度的第一權重值。

在隨機森林模型訓練過程中,可以獲得訓練樣本中各個維度的原始度量值對應的權重值,即第二權重值,該權重值可作為第一權重值用于待評估軟件代碼健康度的檢測中。

本發(fā)明實施例提供的代碼健康度的檢測方法,采用了多個維度的數據全面、深入地評估軟件代碼健康度,如此使得軟件代碼健康度的檢測過程更具綜合性,并且通過訓練隨機森林模型的方法對多個維度的數據確定不同的權重值,該權重值的確定能夠使最終結果更符合真實的代碼質量,從而獲得更為全面和準確的代碼健康度檢測結果。

實施例三

圖4為本發(fā)明實施例的軟件代碼健康度的檢測裝置的結構示意圖一,該裝置主要用于執(zhí)行圖2所示的方法步驟,如圖4所示,該裝置可以包括:

原始度量值獲取模塊410,用于獲取待評估軟件代碼的多個維度的原始度量值;

代碼健康度計算模塊420,用于根據各個維度對應的第一權重值,對多個維度的原始度量值進行加權求和,獲得待評估軟件代碼的健康度,其中,第一權重值為通過機器學習而獲得的權重值。

進一步地,上述多個維度的原始度量值,可以包括:

動態(tài)維度和或靜態(tài)維度的原始度量值。

進一步地,圖5為本發(fā)明實施例的軟件代碼健康度的檢測裝置的結構示意圖二,如圖5所示,該裝置還可以包括:

第一權重值獲取模塊510,用于訓練隨機森林模型,獲取各個維度對應的第一權重值。

進一步地,訓練隨機森林模型,獲取各個維度對應的第一權重值可以包括:

獲取多個作為訓練樣本的訓練軟件代碼;

獲取各個訓練軟件代碼的多個維度的原始度量值作為各個訓練樣本的訓練特征,以及獲取各個訓練軟件代碼對應的健康評價結果作為各個訓練樣本的結果標簽;

使用多個訓練樣本對原始的隨機森林模型進行訓練,生成訓練后的隨機森林模型;

獲取訓練后的隨機森林模型中,與各個訓練特征對應的第二權重值作為第一權重值。

進一步地,對多個維度的原始度量值進行加權求和,獲得待評估軟件代碼的健康度,可以包括:

根據上述的式(1)計算健康度。

本發(fā)明實施例提供的代碼健康度的檢測裝置,采用了多個維度的數據全面、深入地評估軟件代碼健康度,如此使得軟件代碼健康度的檢測過程更具綜合性,并且通過機器學習的方法對多個維度的數據確定不同的權重值,該權重值的確定能夠使最終結果更符合真實的代碼質量,從而獲得更為全面和準確的代碼健康度檢測結果。

實施例四

前面實施例三描述了軟件代碼健康度的檢測裝置的整體架構,該裝置的功能可借助一種電子設備實現(xiàn)完成,如圖6所示,其為本發(fā)明實施例的電子設備的結構示意圖一,具體包括:存儲器610和處理器620。

存儲器610,用于存儲程序。

除上述程序之外,存儲器610還可被配置為存儲其它各種數據以支持在電子設備上的操作。這些數據的示例包括用于在電子設備上操作的任何應用程序或方法的指令,聯(lián)系人數據,電話簿數據,消息,圖片,視頻等。

存儲器610可以由任何類型的易失性或非易失性存儲設備或者它們的組合實現(xiàn),如靜態(tài)隨機存取存儲器(sram),電可擦除可編程只讀存儲器(eeprom),可擦除可編程只讀存儲器(eprom),可編程只讀存儲器(prom),只讀存儲器(rom),磁存儲器,快閃存儲器,磁盤或光盤。

處理器620,耦合至存儲器610,用于執(zhí)行存儲器610中的程序,以用于:

獲取待評估軟件代碼的多個維度的原始度量值;

根據各個維度對應的第一權重值,對多個維度的原始度量值進行加權求和,獲得待評估軟件代碼的健康度,其中,第一權重值為通過機器學習而獲得的權重值。

作為另外一種實施方式,處理器620,耦合至存儲器610,用于執(zhí)行存儲器610中的程序,以用于:

獲取多個作為訓練樣本的訓練軟件代碼;

獲取各個訓練軟件代碼的多個維度的原始度量值作為各個訓練樣本的訓練特征,以及獲取各個訓練軟件代碼對應的健康評價結果作為各個訓練樣本的結果標簽;

使用所述多個訓練樣本對原始的隨機森林模型進行訓練,生成訓練后的隨機森林模型;

獲取訓練后的隨機森林模型中,與各個訓練特征對應的第二權重值作為在計算待評估軟件代碼的健康度的處理中,各個待評估軟件代碼的對應維度的第一權重值。

上述的具體處理操作已經在前面實施例中進行了詳細說明,在此不再贅述。

進一步,如圖6所示,電子設備還可以包括:通信組件630、電源組件640、音頻組件650、顯示器660等其它組件。圖6中僅示意性給出部分組件,并不意味著電子設備只包括圖6所示組件。

通信組件630被配置為便于電子設備和其他設備之間有線或無線方式的通信。電子設備可以接入基于通信標準的無線網絡,如wifi,2g或3g,或它們的組合。在一個示例性實施例中,通信組件630經由廣播信道接收來自外部廣播管理系統(tǒng)的廣播信號或廣播相關信息。在一個示例性實施例中,通信組件630還包括近場通信(nfc)模塊,以促進短程通信。例如,在nfc模塊可基于射頻識別(rfid)技術,紅外數據協(xié)會(irda)技術,超寬帶(uwb)技術,藍牙(bt)技術和其他技術來實現(xiàn)。

電源組件640,為電子設備的各種組件提供電力。電源組件640可以包括電源管理系統(tǒng),一個或多個電源,及其他與為電子設備生成、管理和分配電力相關聯(lián)的組件。

音頻組件650被配置為輸出和/或輸入音頻信號。例如,音頻組件650包括一個麥克風(mic),當電子設備處于操作模式,如呼叫模式、記錄模式和語音識別模式時,麥克風被配置為接收外部音頻信號。所接收的音頻信號可以被進一步存儲在存儲器610或經由通信組件630發(fā)送。在一些實施例中,音頻組件650還包括一個揚聲器,用于輸出音頻信號。

顯示器660包括屏幕,其屏幕可以包括液晶顯示器(lcd)和觸摸面板(tp)。如果屏幕包括觸摸面板,屏幕可以被實現(xiàn)為觸摸屏,以接收來自用戶的輸入信號。觸摸面板包括一個或多個觸摸傳感器以感測觸摸、滑動和觸摸面板上的手勢。觸摸傳感器可以不僅感測觸摸或滑動動作的邊界,而且還檢測與觸摸或滑動操作相關的持續(xù)時間和壓力。

上述實施例中提及的軟件代碼復雜度可通過以下實施例提供的檢測方法、裝置及電子設備獲得。其技術原理在于:通過采用逐級縱向聚合的方式來對待評估軟件的軟件代碼復雜度進行檢測評估,從最底層的多個代碼片段的代碼復雜度指標開始逐級向上聚合,能夠充分采集各個維度以及各個層級的軟件代碼復雜度情況,從而形成全面深入的軟件代碼復雜度檢測結果。另外,通過回溯逐級聚合的復雜度檢測過程,還能夠便于開發(fā)人員定位出在軟件代碼復雜度方面存在問題的代碼片段。

如圖7所示,其為本發(fā)明實施例的軟件代碼復雜度的檢測的邏輯示意圖,如圖所示,軟件代碼復雜度的檢測主要包括獲取代碼復雜度指標、逐級分層縱向聚合以及橫向聚合三個步驟,詳述如下:

首先,為檢測軟件代碼復雜度,需獲取待評估軟件的代碼片段的代碼復雜度指標,為了達到全方位、多維度檢測軟件代碼復雜度的目的,可采集多個維度的代碼復雜度指標,主要可包括method類型指標和type類型指標。其中,method類型指標包括但不限于待評估軟件的代碼片段的圈復雜度(cc)、方法的有效行數(locm)、方法的參數數量(nop)以及方法的最大嵌套層數(mnd);type類型指標包括但不限于待評估軟件的代碼片段的成員方法數量(nom)、成員變量數量(nof)以及加權方法數量(wmc)。

在實際應用場景中,代碼復雜度指標可通過采集代碼片段的原始度量數據,并依據預置閾值區(qū)間將原始度量數據通過映射獲得。具體地,可以調用指標計算器采集多個維度的代碼復雜度指標的原始度量數據,為不同類型的代碼復雜度指標預置不同的閾值區(qū)間,根據原始度量數據所在閾值區(qū)間的不同,將原始度量數據映射為預置范圍內的離散值,從而得到代碼復雜度指標。

需要說明的是,上述代碼復雜度指標的值均為數值型數據。此外,基于領域內的知識經驗,代碼復雜度指標的原始度量數據常呈現(xiàn)長尾分布,為了減小因長尾分布效應所造成的代碼復雜度指標的誤差,從而使其更符合真實場景,可以為原始度量數據的閾值區(qū)間預置百分位數做出調整,例如對應于原始度量數據的某一個閾值區(qū)間的預置百分位數為90%,則取該閾值區(qū)間內某一點作為百分位點,使得該閾值區(qū)間內90%的原始度量數據均比該百分位點所對應的原始度量數據的值小,如此有助于減小軟件代碼復雜度的檢測結果因長尾分布效應所帶來的誤差。

然后,基于上述步驟所獲取的代碼復雜度指標,對每一類型代碼復雜度指標的值,按照類層、文件層、模塊層以及項目層中的任意多個層的層級順序進行縱向聚合。如圖1所示,針對獲取的method類型指標和type類型指標,首先按照聚合函數對其在類層級進行聚合,從而得到文件層級的聚合得分;然后,按照聚合函數對文件層級的聚合得分在文件層級進行聚合,從而得到模塊層級的聚合得分;最后,按照聚合函數對模塊層級的聚合得分在模塊層級進行聚合,從而得到項目層級的聚合得分,即第一聚合得分。

需要說明的是,method類型指標和type類型指標為并列的兩種類型指標,但是在原始度量數據的獲取過程中,type類型指標可能需要使用method類型指標的原始度量數據或代碼復雜度指標。例如,type類型指標中加權方法數量(wmc)指標的計算方式為類中代碼方法的圈復雜度(cc)之和,該圈復雜度(cc)即為method類型指標之一。

此外,上述聚合函數可采用弱項集約式聚合函數,例如聚合函數其中,f(x)為縱向聚合所針對的層級的整體的聚合得分,xi為縱向聚合所針對層級的各個被聚合單位的聚合得分或者代碼復雜度指標。問題代碼所對應的聚合得分往往較小,而弱項集約式函數能夠在不改變值域的同時賦予較小值更大的權重,如此通過弱項集約式聚合函數,能夠達到突出問題代碼的目的。并且,當軟件代碼復雜度檢測結果分值較低,還可以以項目層、模塊層、文件層、類層的順序從上至下逐層回溯,從而幫助開發(fā)人員定位出在軟件代碼復雜度方面存在問題的代碼片段。

需要說明的是,基于上述代碼復雜度指標以及各層級聚合得分可能呈現(xiàn)長尾分布,為了減小軟件代碼復雜度檢測結果的誤差,從而使其更符合真實場景,可以對各層級對應的聚合得分進行調整,具體調整方法可采用上述根據基準數據確定百分位數的方法,此處不再贅述。

最后,基于上述步驟獲取的第一聚合得分,通過橫向聚合,例如計算多個代碼片段的第一聚合得分的平均值,即可獲得第二聚合得分,也即待評估軟件代碼的代碼片段的軟件代碼復雜度輸出。

需要說明的是,待評估軟件的代碼片段中代碼越復雜,例如代碼行數越多或者方法數量越多,則代碼復雜度指標越高,同時第一聚合得分就越低,相應地,第二聚合得分也越低,即待評估軟件的代碼片段的軟件代碼復雜度輸出值越低。如此可見,代碼片段中的代碼越復雜評分就越低,往往評分較低的代碼片段中存在問題代碼。

實施例五

基于上述軟件代碼復雜度的檢測的方案思想,如圖8所示,為本發(fā)明實施例五的軟件代碼復雜度的檢測方法的流程示意圖,該方法的執(zhí)行主體為軟件代碼復雜度的檢測裝置,該方法包括:

s810,獲取待評估軟件代碼的多個代碼片段的代碼復雜度指標。

其中,如前面所說明的,代碼復雜度指標可通過采集代碼片段的原始度量數據,并依據預置閾值區(qū)間將原始度量數據通過映射獲得。

在實際應用場景中,可以通過調用指標計算器采集多個維度的代碼復雜度指標的原始度量數據,并為不同類型的代碼復雜度指標預置不同的閾值區(qū)間{t1,t2...tn},根據原始度量數據所在閾值區(qū)間{t1,t2...tn}的不同,將原始度量數據映射為0至n范圍內的整數離散值,將經映射后的離散值作為代碼復雜度指標。并且,原始度量數據較小的閾值區(qū)間映射為較大的代碼復雜度指標。例如,當n的值取4時,原始度量數據所在閾值區(qū)間與經映射后的代碼復雜度指標的對應關系是:(0,t1]區(qū)間的代碼復雜度指標為4,(t1,t2]區(qū)間的代碼復雜度指標為3,(t2,t3]區(qū)間的代碼復雜度指標為2,(t3,t4]區(qū)間的代碼復雜度指標為1,(t4,∞)區(qū)間的代碼復雜度指標為0。上述代碼復雜度指標的值均為數值型數據。

s820,對多個代碼片段的代碼復雜度指標進行逐級縱向聚合,得到第一聚合得分。

具體地,可以按照多個代碼片段的代碼復雜度指標的多個層級,從下至上進行逐級縱向聚合,這里所述的從下至上是指從代碼片段最底層逐級向其上一層聚合,如此不僅能夠充分采集各個層級的軟件代碼復雜度情況,還可以當軟件代碼復雜度較高、多個代碼片段中可能存在問題代碼時,根據已經采集得到的軟件代碼復雜度檢測輸出結果,按照從上至下的順序逐級回溯,從而定位到可能存在問題的代碼片段。

s830,對第一聚合得分橫向聚合,得到第二聚合得分,將第二聚合得分作為軟件代碼復雜度輸出。

進一步地,上述代碼復雜度指標包括:多個維度的method類型指標和/或多個維度的type類型指標。其中,method類型指標包括但不限于待評估軟件的代碼片段的圈復雜度(cc)、方法的有效行數(locm)、方法的參數數量(nop)以及方法的最大嵌套層數(mnd);type類型指標包括但不限于待評估軟件的代碼片段的成員方法數量(nom)、成員變量數量(nof)以及加權方法數量(wmc)。通過綜合衡量代碼片段的多維度下的多個指標的數據,能夠全面、深入、準確地檢測軟件代碼復雜度。

本發(fā)明實施例提供一種軟件代碼復雜度的檢測方法,采用了逐級縱向聚合的方式來對待評估軟件的軟件代碼復雜度進行檢測評估,從最底層的多個代碼片段的代碼復雜度指標開始逐級向上聚合,能夠充分采集各個層級的軟件代碼復雜度情況,從而形成全面深入的復雜度檢測結果,另外,通過回溯逐級聚合的復雜度檢測過程,還能夠便于開發(fā)人員定位出在軟件代碼復雜度方面存在問題的代碼片段。

實施例六

基于上一實施例中所述的軟件代碼復雜度的檢測方法,本實施例將對該方法進行進一步細化。圖9為本發(fā)明實施例六的軟件代碼復雜度的檢測方法的流程示意圖,如圖9所示,該方法包括:

s910,獲取待評估軟件代碼的多個代碼片段的代碼復雜度指標。該步驟s910的內容與上述步驟s810的內容相同。

s920,對多個代碼片段的代碼復雜度指標按照類層、文件層、模塊層以及項目層中的任意多個層的層級順序,進行縱向聚合,得到第一聚合得分。

進一步地,上述對多個代碼片段的代碼復雜度指標進行逐級縱向聚合包括:使用弱項集約式聚合函數對多個代碼片段的代碼復雜度指標進行逐級縱向聚合。其中,上述弱項集約式聚合函數是能夠在不改變值域的同時賦予較小值更大權重的聚合函數。

進一步地,上述弱項集約式聚合函數可以為:

其中,f(x)為縱向聚合所針對的層級的整體的聚合得分,xi為縱向聚合所針對層級的各個被聚合單位的聚合得分或者代碼復雜度指標。具體地,該被聚合單位是指在逐級縱向聚合過程中,當前縱向聚合所針對的層級的下一層級。例如,當f(x)為縱向聚合所針對的模塊層級的整體的聚合得分時,xi則可取值為縱向聚合所針對的各個文件層級的聚合得分。

在實際應用場景中,如上述提及的,通過指標計算器可獲取多個維度的method類型和type類型指標的原始度量數據,并且該原始度量數據可通過映射獲得代碼復雜度指標。為了便于待評估軟件中多個代碼片段各層級的定位和索引,該代碼復雜度指標的數據集合可表示為data={p1,p2...pi,m1,m2...mj},其中,pi為待評估軟件的代碼片段的方法、類或文件的位置信息,該位置信息包括但不限于項目名、模塊名、文件名、類名和或方法名。mj為待評估軟件的代碼片段的方法、類或文件的代碼復雜度指標。上述逐級縱向聚合可具體包括如下步驟:

步驟一,以位置信息pi中包含的項目名、模塊名、文件名、類名等位置信息為索引,找到同一索引下method類型指標和type類型指標對應的代碼復雜度指標,并將該兩個維度下的多個代碼復雜度指標按照上述弱項集約式聚合函數縱向聚合,從而得到類層級的聚合得分;

步驟二,以項目名、模塊名、文件名等位置信息為索引,找到同一索引下類層級的不同指標對應的代碼復雜度指標,并對多個類的同一指標類型的代碼復雜度指標按照上述弱項集約式聚合函數縱向聚合,從而得到文件層級的聚合得分;

步驟三,以項目名、模塊名等位置信息為索引,找到同一索引下文件層級的不同指標對應的代碼復雜度指標,并對多個文件的同一指標類型的代碼復雜度指標按照上述弱項集約式聚合函數縱向聚合,從而得到模塊層級的聚合得分;

步驟四,以項目名等位置信息為索引,找到同一索引下模塊層級的不同指標對應的代碼復雜度指標,并對多個模塊的同一指標類型的代碼復雜度指標按照上述弱項集約式聚合函數縱向聚合,從而得到項目層級的聚合得分,即第一聚合得分。

進一步地,在上述逐級縱向聚合的過程中,可對各層級對應的聚合得分進行調整,以對抗長尾分布效應。

具體地,如上述提及的,基于本領域內的知識經驗,代碼復雜度指標的原始度量數據常呈現(xiàn)長尾分布,為了減小因長尾分布效應所造成的代碼復雜度指標的誤差,從而使其更符合真實場景,可以為原始度量數據和或各層級對應的聚合得分預置百分位數做出調整。例如,對應于類層級的聚合得分的所有可能取值設為0、1、2、3、4,則基于本領域內的知識經驗,可預置各區(qū)間[0,1)、[1,2)、[2,3)和[3,4]相對應的百分位數為95%、99%、99.5%和99.9%。以區(qū)間[0,1)對應百分位數95%為例,取該閾值區(qū)間內某一點作為百分位點,使得該閾值區(qū)間內95%的聚合得分均比該百分位點所對應的聚合得分的值小,如此有助于減小軟件代碼復雜度的檢測結果因長尾分布效應所帶來的誤差。

s930,對第一聚合得分橫向聚合,得到第二聚合得分,將第二聚合得分作為軟件代碼復雜度輸出。該步驟s930的內容與上述步驟s830的內容相同。

進一步地,上述對第二聚合得分橫向聚合,得到第二聚合得分,包括:計算第一聚合得分的平均值,得到第二聚合得分。

具體地,通過計算多個代碼片段的第一聚合得分的平均值,則可以得到綜合多個代碼片段的多個維度的代碼復雜度指標的軟件代碼復雜度檢測結果,即第二聚合得分。

本發(fā)明實施例提供一種軟件代碼復雜度的檢測方法,采用了逐級縱向聚合的方式來對待評估軟件的軟件代碼復雜度進行檢測評估,從最底層的多個代碼片段的代碼復雜度指標開始逐級向上聚合,能夠充分采集各個層級的軟件代碼復雜度情況,從而形成全面深入的軟件代碼復雜度檢測結果,另外,通過回溯逐級聚合的軟件代碼復雜度檢測過程,還能夠便于開發(fā)人員定位出在軟件代碼復雜度方面存在問題的代碼片段。

實施例七

圖10為本發(fā)明實施例的軟件代碼復雜度的檢測裝置的結構示意圖,該裝置主要用于執(zhí)行圖8所示的方法步驟,如圖10所示,該裝置包括:

代碼復雜度指標獲取模塊101,用于獲取待評估軟件代碼的多個代碼片段的代碼復雜度指標;

縱向聚合模塊102,用于對多個代碼片段的代碼復雜度指標進行逐級縱向聚合,得到第一聚合得分;

橫向聚合模塊103,用于對第一聚合得分橫向聚合,得到第二聚合得分,將第二聚合得分作為軟件代碼復雜度輸出。

進一步地,上述代碼復雜度指標包括:

多個維度的method類型指標和/或多個維度的type類型指標。

進一步地,上述逐級縱向聚合包括:

按照類層、文件層、模塊層以及項目層中的任意多個層的層級順序,進行縱向聚合,得到第一聚合得分。

進一步地,上述對多個代碼片段的代碼復雜度指標進行逐級縱向聚合包括:

使用弱項集約式聚合函數對多個代碼片段的代碼復雜度指標進行逐級縱向聚合。

進一步地,上述弱項集約式聚合函數為:

其中,f(x)為縱向聚合所針對的層級的整體的聚合得分,xi為縱向聚合所針對層級的各個被聚合單位的聚合得分或者代碼復雜度指標。

進一步地,上述對第二聚合得分橫向聚合,得到第二聚合得分,包括:

計算第一聚合得分的平均值,得到第二聚合得分。

進一步地,在上述逐級縱向聚合的過程中,對各層級對應的聚合得分進行調整,以對抗長尾分布效應。

本發(fā)明實施例提供一種軟件代碼復雜度的檢測裝置,采用了逐級縱向聚合的方式來對待評估軟件的軟件代碼復雜度進行檢測評估,從最底層的多個代碼片段的代碼復雜度指標開始逐級向上聚合,能夠充分采集各個層級的軟件代碼復雜度情況,從而形成全面深入的復雜度檢測結果,另外,通過回溯逐級聚合的復雜度檢測過程,還能夠便于開發(fā)人員定位出在軟件代碼復雜度方面存在問題的代碼片段。

實施例八

前面實施例七描述了軟件代碼復雜度的檢測裝置的整體架構,該裝置的功能可借助一種電子設備實現(xiàn)完成,如圖11所示,其為本發(fā)明實施例的電子設備的結構示意圖二,具體包括:存儲器111和處理器112。

存儲器111,用于存儲程序。

除上述程序之外,存儲器111還可被配置為存儲其它各種數據以支持在電子設備上的操作。這些數據的示例包括用于在電子設備上操作的任何應用程序或方法的指令,聯(lián)系人數據,電話簿數據,消息,圖片,視頻等。

存儲器111可以由任何類型的易失性或非易失性存儲設備或者它們的組合實現(xiàn),如靜態(tài)隨機存取存儲器(sram),電可擦除可編程只讀存儲器(eeprom),可擦除可編程只讀存儲器(eprom),可編程只讀存儲器(prom),只讀存儲器(rom),磁存儲器,快閃存儲器,磁盤或光盤。

處理器112,耦合至存儲器111,用于執(zhí)行存儲器111中的程序,以用于:

獲取待評估軟件代碼的多個代碼片段的代碼復雜度指標;

對多個代碼片段的代碼復雜度指標進行逐級縱向聚合,得到第一聚合得分;

對第一聚合得分橫向聚合,得到第二聚合得分,將第二聚合得分作為軟件代碼復雜度輸出。

上述的具體處理操作已經在前面實施例中進行了詳細說明,在此不再贅述。

進一步,如圖11所示,電子設備還可以包括:通信組件113、電源組件114、音頻組件115、顯示器116等其它組件。圖11中僅示意性給出部分組件,并不意味著電子設備只包括圖11所示組件。

通信組件113被配置為便于電子設備和其他設備之間有線或無線方式的通信。電子設備可以接入基于通信標準的無線網絡,如wifi,2g或3g,或它們的組合。在一個示例性實施例中,通信組件113經由廣播信道接收來自外部廣播管理系統(tǒng)的廣播信號或廣播相關信息。在一個示例性實施例中,通信組件113還包括近場通信(nfc)模塊,以促進短程通信。例如,在nfc模塊可基于射頻識別(rfid)技術,紅外數據協(xié)會(irda)技術,超寬帶(uwb)技術,藍牙(bt)技術和其他技術來實現(xiàn)。

電源組件114,為電子設備的各種組件提供電力。電源組件114可以包括電源管理系統(tǒng),一個或多個電源,及其他與為電子設備生成、管理和分配電力相關聯(lián)的組件。

音頻組件115被配置為輸出和/或輸入音頻信號。例如,音頻組件115包括一個麥克風(mic),當電子設備處于操作模式,如呼叫模式、記錄模式和語音識別模式時,麥克風被配置為接收外部音頻信號。所接收的音頻信號可以被進一步存儲在存儲器111或經由通信組件113發(fā)送。在一些實施例中,音頻組件115還包括一個揚聲器,用于輸出音頻信號。

顯示器116包括屏幕,其屏幕可以包括液晶顯示器(lcd)和觸摸面板(tp)。如果屏幕包括觸摸面板,屏幕可以被實現(xiàn)為觸摸屏,以接收來自用戶的輸入信號。觸摸面板包括一個或多個觸摸傳感器以感測觸摸、滑動和觸摸面板上的手勢。觸摸傳感器可以不僅感測觸摸或滑動動作的邊界,而且還檢測與觸摸或滑動操作相關的持續(xù)時間和壓力。

本領域普通技術人員可以理解:實現(xiàn)上述各方法實施例的全部或部分步驟可以通過程序指令相關的硬件來完成。前述的程序可以存儲于一計算機可讀取存儲介質中。該程序在執(zhí)行時,執(zhí)行包括上述各方法實施例的步驟;而前述的存儲介質包括:rom、ram、磁碟或者光盤等各種可以存儲程序代碼的介質。

最后應說明的是:以上各實施例僅用以說明本發(fā)明的技術方案,而非對其限制;盡管參照前述各實施例對本發(fā)明進行了詳細的說明,本領域的普通技術人員應當理解:其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分或者全部技術特征進行等同替換;而這些修改或者替換,并不使相應技術方案的本質脫離本發(fā)明各實施例技術方案的范圍。

相關知識

軟件代碼健康度的檢測方法、處理方法、裝置及電子設備與流程
BMI檢測方法、裝置以及電子設備與流程
健康監(jiān)測方法、裝置及電子設備與流程
電子設備的電池健康檢測方法、裝置和電子設備與流程
電池健康狀態(tài)檢測方法、裝置和電子設備與流程
設備電池健康度檢測方法及裝置與流程
電池健康度狀態(tài)的檢測方法、裝置、電子設備及存儲介質.pdf
健康檢測方法、裝置、終端設備及存儲介質與流程
電池健康檢測方法、裝置、電子設備及存儲介質
蓄電池健康度估算方法、裝置、電子設備及存儲介質與流程

網址: 軟件代碼健康度的檢測方法、處理方法、裝置及電子設備與流程 http://www.u1s5d6.cn/newsview1636035.html

推薦資訊