цикломатическая сложность для ActionScript 3

Я пытаюсь рассчитать цикломатическую сложность своего программного обеспечения, но немного запутался. Насколько я понимаю, это количество путей, которые необходимо протестировать, чтобы охватить все программное обеспечение. Обычно есть операторы if и циклы, которые вызывают решения и, следовательно, увеличивают путь, однако в моем коде ниже нет циклов или операторов if, и, следовательно, это просто сложность 1?

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.


person akkki    schedule 30.08.2013    source источник


Ответы (2)


Да, если у вас нет управляющего оператора (if, else, while, for, do, break, && и т. Д.) В вашем коде есть единственный путь через код, поэтому цикломатическое число равно единице.

person Community    schedule 17.09.2013

Цикломатическая сложность определяется плотностью решений. Чем выше плотность решений, тем выше будет сложность. Если у вас нет встроенных решений, цикломатическая сложность будет равна 1. Существует только ассоциативная связь с размером кода, но причинная связь с плотностью решений. В исследовании Тома МакКейба он показывает, что как только цикломатическая сложность превышает 10, модуль становится подверженным ошибкам, и вероятность ошибок возрастает экспоненциально, когда число цикломатической сложности увеличивается линейно. Когда сложность модуля становится слишком высокой, модуль становится непроверяемым, неподдерживаемым и недокументированным. Использование цикломатического анализа сложности в сочетании с Fagan Inspections - это очень мощная комбинация для создания программного обеспечения очень высокого качества, а также для снижения общих затрат на разработку. Cyclomatic Complexity оценивает структуру кода (графики сложности дают вам представление о том, что можно назвать скелетом кода), а проверки Fagan Inspections проверяют функциональную правильность кода. Простое использование анализатора, который дает вам число цикломатической сложности и ничего другого, далеко не так полезно, как анализатор, который также создает графики сложности.

person user3074883    schedule 06.12.2013
comment
Добро пожаловать в SO. Это похоже на стену с текстом. Пожалуйста, отформатируйте его, чтобы он был удобочитаемым. Спасибо! - person Stewie Griffin; 06.12.2013