2015-02-03 2 views
0

Вот мой .cfgCppcheck не может проверить третьи параметры?

<?xml version="1.0"?> 
<def format="1"> 
    <function name="wcscpy_s"> 
     <arg nr="1"> 
      <not-uninit/> 
     </arg> 
     <arg nr="2"> 
      <not-uninit/> 
     </arg> 
     <arg nr="3"> 
      <not-uninit/> 
     </arg> 
    </function> 
</def> 

И я использую его, чтобы проверить удар файла CPP.

int main() { 
    char a[100]; 
    wcscpy_s(
     a, 
     a, 
     a); 
} 

И ошибка:

D:\staff>cppcheck D:\staff\test.cpp --library=my.cfg 
Checking D:\staff\test.cpp... 
[D:\staff\test.cpp:4]: (error) Uninitialized variable: a 
[D:\staff\test.cpp:5]: (error) Uninitialized variable: a 

Очевидно, что не найти третий параметр, это неинициализированное тоже. Я изменил файл следующим образом:

int main() { 
    char a[100]; 
    wcscpy_s(
     1, 
     1, 
     a); 
} 

И это не показывает ошибку сейчас. Так что я очень смущен. Cppcheck не может проверить третьи параметры?

+0

О мой бог, который думал, что это хорошая идея, чтобы описать функции C++ с использованием XML? – ThiefMaster

+0

Это очень здорово, что Cppcheck знает, как работают функции. xml - это формат, который имеет неплохую поддержку инструмента. –

+0

Я думаю, вы согласны, что это хорошо. Cppcheck знает, как работают функции. Итак, как мы можем настроить работу wcscpy_s. Я не думаю, что есть много альтернатив. –

ответ

0

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

Можете ли вы создать билет об этом? http://trac.cppcheck.net/

+0

Я добавил билет: http://trac.cppcheck.net/ticket/6495 –

0

Последняя версия Cppcheck (1,70 Dev) способен обнаружить этот вопрос:

$ cppcheck test.cpp --library=my.cfg 
Checking test.cpp... 
[test.cpp:4]: (error) Uninitialized variable: a 
[test.cpp:5]: (error) Uninitialized variable: a 
[test.cpp:6]: (error) Uninitialized variable: a 
Смежные вопросы