ПроблемаПроблема происходит, когда все объявления объекта или функции не используют те же имена и вводят спецификаторы.
Средство проверки правила обнаруживает ситуации, где названия параметра или типы данных отличаются между многократными объявлениями или объявлением и определением. Средство проверки рассматривает объявления во всех модулях перевода и отмечает проблемы, которые вряд ли будут обнаружены компилятором.
Polyspace® Bug Finder™ и Polyspace Code Prover™ проверяют это правило кодирования по-другому. Исследования могут привести к различным результатам.
Средство проверки не отмечает эту проблему в Polyspace по умолчанию как Вы Анализ кода. Смотрите Средства проверки, Деактивированные в Polyspace, когда Вы Кодируете Анализ По умолчанию.
РискПоследовательно использующие названия параметра и типы через объявления того же объекта или функции поощряют более сильный ввод. Легче проверять, что тот же функциональный интерфейс используется через все объявления.
Пример - не сочетается на названия параметраextern int div (int num, int den);
int div(int den, int num) { /* Non compliant */
return(num/den);
}
В этом примере нарушено правило, потому что названия параметра в объявлении и определении переключаются.
Пример - не сочетается в типах данных параметровtypedef unsigned short width;
typedef unsigned short height;
typedef unsigned int area;
extern area calculate(width w, height h);
area calculate(width w, width h) { /* Noncompliant */
return w*h;
}
В этом примере правило нарушено потому что второй аргумент calculate
функция имеет тип данных:
height
в объявлении.
width
в определении.
Правило нарушено даже при том, что базовый тип height
и width
идентичны.