0

我想計算我的軟件的圈複雜度,但我有點困惑。根據我的理解,需要測試覆蓋整個軟件的路徑數量。通常有如果語句和循環導致決定,因此增加路徑 但是我的代碼下面沒有循環或如果語句,因此它只是1的複雜性?ActionScript 3的圈複雜度

btn_length.addEventListener (MouseEvent.CLICK, LengthFunc); 

function LengthFunc (e: MouseEvent):void 
{ 
    gotoAndStop (1,"Scene 2"); 
} 


btn_speed.addEventListener (MouseEvent.CLICK, SpeedFunc); 

function SpeedFunc (e: MouseEvent):void 
{ 
     gotoAndStop (1,"Scene 6"); 
} 


btn_currency.addEventListener (MouseEvent.CLICK, CurrencyFunc); 

function CurrencyFunc (e: MouseEvent):void 
{ 
    gotoAndStop (1,"Scene 10"); 
} 

btn_weight.addEventListener (MouseEvent.CLICK, WeightFunc); 

function WeightFunc (e: MouseEvent):void 
{ 
    gotoAndStop (1,"Scene 11"); 
} 

btn_data.addEventListener (MouseEvent.CLICK, dataFunc); 

function dataFunc (e: MouseEvent):void 
{ 
    gotoAndStop (1,"Scene 16"); 
} 
stop(); 

這個類也有複雜性1我相信。

import fl.data.DataProvider; 

var dpcurr:DataProvider = new DataProvider(); 
var fromVal:Number; 
var toVal:Number; 
var inputValcurr:Number 
var resultValcurr:Number; 
input_txt.restrict = "0-9\\.\\"; 

dpcurr.addItem({ label: "EUR, Euro", data: 1.18 }); 
dpcurr.addItem({ label: "GBP, British Pound", data: 1 }); 
dpcurr.addItem({ label: "USD, US Dollar", data:1.54}); 


fromList.dataProvider = dpcurr; 
toList.dataProvider = dpcurr; 

fromList.addEventListener(Event.CHANGE, calculateResultcurr); 
toList.addEventListener(Event.CHANGE, calculateResultcurr); 
input_txt.addEventListener(Event.CHANGE, calculateResultcurr); 

fromList.selectedIndex = 0; 
toList.selectedIndex = 2; 

fromVal = fromList.selectedItem.data; 
toVal = toList.selectedItem.data; 

function calculateResultcurr(e:Event):void{ 
fromVal = fromList.selectedItem.data; 
toVal = toList.selectedItem.data; 
inputValcurr = Number(input_txt.text); 
resultValcurr = inputValcurr * (fromVal/toVal); 

convert_btn.addEventListener(MouseEvent.­CLICK, convertcurr); 

function convertcurr(evt:MouseEvent):void { 
result_txt.text = resultValcurr.toString()} 
} 

home_btn. addEventListener (MouseEvent. CLICK, homecurr); 

function homecurr (e: MouseEvent): void { 
    gotoAndStop (1, "Scene 1"); 
    } 
stop(); 

如果有人可以讓我知道我是對還是錯,我將不勝感激。 這是一個閃存項目,因此代碼編寫ActionScript 3中

回答

0

是隻要你沒有任何控制語句(如果,否則,而對於,做,休息,& &等)你的代碼有一個唯一的代碼路徑,因此圈數是1。

0

圈複雜度由決策密度驅動。決策密度越高,複雜性就越高。如果您沒有嵌入式決策,則環複雜性將爲1.與代碼大小隻有關聯關係,但與決策密度有因果關係。在Tom McCabe的研究中,他表明,一旦循環複雜度超過10,模塊就會變得容易出錯,隨着循環複雜度線性上升,錯誤發生率呈指數增長。當模塊複雜度變得過高時,模塊變得不可測試,不可維護且無法記錄。使用Cyclomatic將複雜性分析與Fagan Inspections結合使用,可以產生非常高質量的軟件,並降低總體開發成本。循環複雜度評估代碼的結構(複雜度圖給出了可以描述爲代碼框架的圖片),並且Fagan檢查解決了代碼的功能正確性問題。只需使用一個能夠給出Cyclomatic Complexity編號的分析儀,其他任何東西都不會像生成複雜圖的那樣有用。

+0

歡迎來到SO。這看起來像一堵文字牆。請格式化以使其可讀。謝謝! –