cppcheck 无法检查第三个参数?
Cppcheck can't check the third parameters?
这是我的.cfg
<?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>
我用它来检查 blow 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 无法检查第三个参数?
当然不是故意的。我认为这是由一些仅用于处理某些特殊功能的旧代码引起的。
你能就此创建工单吗?
http://trac.cppcheck.net/
最新版本的 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
这是我的.cfg
<?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>
我用它来检查 blow 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 无法检查第三个参数?
当然不是故意的。我认为这是由一些仅用于处理某些特殊功能的旧代码引起的。
你能就此创建工单吗? http://trac.cppcheck.net/
最新版本的 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