gri*_*yvp 5 visual-studio-2010
如果我安装了Windows 7和Visual Studio 2010 Premium SP1的全新副本,请创建向导生成的"C++控制台应用程序"并向该.cpp
文件添加3个标头:
#include <winsock2.h>
#include <WS2tcpip.h>
#include <wspiapi.h>
Run Code Online (Sandbox Code Playgroud)
执行"运行代码分析"将在Microsoft代码中显示警告(项目本身是向导生成的,因此没有错误):
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\ws2tcpip.h(729): warning C6386: Buffer overrun: accessing 'argument 1', the writable size is '1*4' bytes, but '4294967272' bytes might be written: Lines: 703, 704, 705, 707, 713, 714, 715, 720, 721, 722, 724, 727, 728, 729
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\wspiapi.h(294): warning C6386: Buffer overrun: accessing 'argument 1', the writable size is '1' bytes, but '1025' bytes might be written: Lines: 263, 264, 265, 267, 268, 270, 271, 273, 294
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\wspiapi.h(236): warning C6387: '*pptResult' might be '0': this does not adhere to the specification for the function 'WspiapiQueryDNS': Lines: 263, 264, 265, 267, 268, 270, 271, 273, 294, 296
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\wspiapi.h(687): warning C6387: 'argument 1' might be '0': this does not adhere to the specification for the function 'WspiapiLegacyFreeAddrInfo': Lines: 504, 505, 506, 507, 508, 509, 510, 512, 513, 514, 515, 516, 520, 528, 532, 538, 550, 551, 555, 556, 560, 563, 568, 575, 577, 578, 589, 591, 592, 593, 596, 598, 599, 600, 604, 607, 610, 611, 627, 662, 664, 680, 685, 687
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\wspiapi.h(481): warning C6387: '*pptResult' might be '0': this does not adhere to the specification for the function 'WspiapiLegacyGetAddrInfo': Lines: 504, 505, 506, 507, 508, 509, 510, 512, 513, 514, 515, 516, 520, 528, 532, 538, 550, 551, 555, 556, 560, 563, 568, 575, 577, 578, 589, 591, 592, 593, 596, 598, 599, 600, 604, 607, 610, 611, 627, 662, 664, 680, 685, 687, 688, 691
Run Code Online (Sandbox Code Playgroud)
这使得代码分析无法用于大型项目 - 我在Microsoft头文件中收到数以千计的警告,我无法在其中找到我自己的警告:(.是否可以将Microsoft头文件/ SDK从代码分析中排除,以便它可以使用?
PS我知道C++不是Visual Studio支持的语言,但由于我需要支持和改进的现有项目,我无法改变语言:(.
您可以通过以下方法禁用非PREfast清理的头文件的代码分析警告warning()
#pragma
:
#include <codeanalysis\warnings.h>
#pragma warning(push)
#pragma warning (disable: ALL_CODE_ANALYSIS_WARNINGS)
// include headers
#pragma warning(pop)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2137 次 |
最近记录: |