2015-06-26 2 views
2

Я использую Polyspace IHME-8.1.0.12 (R2011a), чтобы найти мертвый код в моем проекте. В настоящее время анализ улавливает этот случай:Как заставить анализ сайта вызова при поиске мертвого кода в Polyspace?

int f1() { 
    int x = 1; 
    if (x > 0) return 1; 
    else return 0; // dead code 
} 

Но это не случай:

int f2(int x) { 
    if (x > 0) return 1; 
    else return 0; // the very same dead code! 
} 
void call_site() { 
    f2(1); 
} 

Обратите внимание, что x стал параметр, но он по-прежнему имеет постоянное значение, 1. Функционал f2() вызывается только на call_site(), или, в качестве альтернативы, каждый сайт вызова вызывает f2() с x=1.

Есть ли опция конфигурации, которую я должен активировать, чтобы анализировать все сайты вызовов при поиске недостижимого кода? Или это ограничение Polyspace?

ответ

3

Можете ли вы сказать мне, есть ли основное приложение? Если нет, тогда Polyspace будет использовать свой основной генератор, и поэтому также может вызвать f2 (это зависит от того, как сконфигурирован основной генератор). И если f2 вызывается также основным генератором, то считается, что x принимает любое значение. Вы можете увидеть диапазон x, который рассматривает Polyspace, если вы посмотрите на всплывающую подсказку на x или щелкнете по x и посмотрите на окно сведений о чеке.

+0

У меня есть функция 'main()', но у меня также есть обработчики прерываний, поэтому я использую '-main-generator'. Я установлю '-функции-в-петле'' на неиспользованный' и, надеюсь, моя проблема исчезнет. –

+1

Я проверил это в своем проекте, и теперь все известные случаи мертвого кода обнаружены. Спасибо за ответ и спасибо @Sourav за помощь в моем вопросе (он удалил свои комментарии, но они были действительно полезны). –

+0

@DmitryGrigoryev Я рад, что это помогло. :-) –