Удалите предположение, что использование абсолютного адреса допустимо
-no-assumption-on-absolute-addresses
Эта опция влияет только на анализ Code Prover.
-no-assumption-on-absolute-addresses
удаляет предположение по умолчанию, что абсолютные адреса, используемые в коде, действительны. Если вы используете эту опцию, верификация создает оранжевый Absolute address usage
проверяйте, когда вы присваиваете абсолютный адрес указателю. В противном случае проверка по умолчанию является зеленой.
Тип указателя, которому вы присваиваете адрес, определяет начальное значение, сохраненное в адресе. Например, если вы присвоите адрес int*
указатель, после этой проверки верификация принимает, что зона памяти, на которую указывает адрес, инициализирована int
значение. Значение может быть любым допустимым для типа данных int
.
Если вы запускаете анализ из пользовательского интерфейса (Polyspace® только для продуктов), на панели Configuration, можно ввести эту опцию в поле Other. См. Other
.
Использование опционных -no-assumption-on-absolute-addresses
может увеличить количество оранжевых чеков в вашем коде. Например, в следующей таблице показан дополнительный оранжевый флажок с включенной опцией.
Использование абсолютного адреса Зеленый | Использование абсолютного адреса оранжевый |
---|---|
void main() { int *p = (int *)0x32; int x; x=*p; } В этом примере программное обеспечение создает:
| void main() { int *p = (int *)0x32; int x; x=*p; } В этом примере программное обеспечение создает:
|
Для наилучшего использования проверки Absolute address usage оставьте этот чек зеленым по умолчанию на начальных этапах разработки. На этапе интегрирования используйте опцию -no-assumption-on-absolute-addresses
и обнаружение всех применений абсолютных адресов памяти. Просмотрите их и убедитесь, что адреса действительны.