exponenta event banner

Правило AUTOSAR C++ 14 A2-10-6

Имя класса или перечисления не должно скрываться объявлением переменной, функции или перечислителя в той же области

Описание

Определение правила

Имя класса или перечисления не должно скрываться объявлением переменной, функции или перечислителя в той же области.

Объяснение

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

Внедрение Polyspace

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

Поиск неисправностей

Если вы ожидаете нарушения правила, но не видите его, обратитесь к разделу Нарушения стандартов кодирования не отображаются.

Примеры

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

В следующем примере показана реализация правила A2-10-6 AUTOSAR в Polyspace.

#include <cstdint>
namespace NS1
{
	class G {};
	void G() {}             //Noncompliant
}    
namespace NS2
{
	enum class H { VALUE=0, };
	std::uint8_t H = 17;    //Noncompliant
}
namespace NS3
{
	class J {};
	enum H {                 
		J=0,                 // Noncompliant 
	};
} 
main()
{
	//...
}
 

Polyspace помечает объявление:

  • Функция G() потому что он скрывает класс G объявлен в том же блоке.

  • Переменная H потому что она скрывает перечисление H объявлен в том же блоке.

  • Счетчик J потому что он скрывает класс J объявлен в том же блоке.

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

Группа: Лексические конвенции
Категория: Обязательно, Автоматизировано
Представлен в R2020a