Number of return statements exceeds threshold

Количество return операторы в функции больше заданного порога

Описание

Этот дефект повышен на функции когда количество return оператор в функции больше заданного порога средства проверки. Для получения дополнительной информации о том, как Polyspace вычисляет количество операторов возврата в функции, смотрите Number of Return Statements

Polyspace® использует порог по умолчанию 1, если вы не задаете порог. Чтобы задать файл выбора, где можно установить порог, используйте Set checkers by file (-checkers-selection-file). Также смотрите Сложность Reduce Software при помощи Средств проверки Polyspace.

Когда вы импортируете комментарии из предыдущих исследований при помощи polyspace-comments-import, Polyspace копирует любую информацию об анализе о метрике кода Number of Return Statements в предыдущем результате к этому средству проверки в текущем результате. Если текущий результат содержит ту же метрику кода, информация об анализе копируется в метрику кода также.

Риск

Наличие нескольких операторов возврата мешает определять то, что возражает, что функциональная сила возвращается. Такой беспорядок может привести к ошибкам и проблемам обслуживания, которые затрудняют отладку.

Фиксация

Чтобы зафиксировать эту проверку, используйте один оператор возврата. Например, сохраните возвращаемое значение в объекте и задайте его условно вместо того, чтобы возвратить различные объекты в различном conditionalized операторе возврата.

Примеры

развернуть все

int afunc (int x);
int foo2(int x,int y)//Noncompliant 
{
	
	if (x <= 0){
		if (x > 10 ) { return 0; }
	}
	if (x<-240) {
		if (x < -2565) { 
			return (x < -253 ? 0: afunc (x <22566 ? 1: afunc(x < -25103 ? 0: 6))); 
		}
	}
}

В этом примере, return оператор foo conditionalized, ведя к двум return операторы, который превышает порог оператора возврата по умолчанию одного. Polyspace отмечает функциональный foo как несовместимый.

Коррекция — Объявляет Объект Сохранить Возвращаемое значение

Одна возможная коррекция должна объявить объект, который затем условно задан, чтобы иметь соответствующее возвращаемое значение. Этот объект затем возвращен функцией при помощи одного оператора возврата.

int afunc (int x);
int foo2(int x,int y)//Compliant 
{
	int returnData;
	if (x <= 0){
		if (x > 10 ) { returnData =  0; }
	}
	if (x<-240) {
		if (x < -2565) { 
			returnData =  (x < -253 ? 0: afunc (x <22566 ? 1: afunc(x < -25103 ? 0: 6))); 
		}
	}
	return returnData;
}

Проверяйте информацию

Группа: сложность программного обеспечения
Язык: C | C++
Акроним: SC16
Порог по умолчанию: 1
Введенный в R2021a