You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
134 lines
6.4 KiB
134 lines
6.4 KiB
5 years ago
|
"""
|
||
|
This file exists to mark this directory as being a Python package,
|
||
|
and to contain project specific configurations for parse_analyze_errors.py.
|
||
|
See http://www.python.org/doc/essays/packages.html for details.
|
||
|
Other Python scripts could be put into this directory and would be
|
||
|
imported as analyzeconfig.scriptname.
|
||
|
"""
|
||
|
|
||
|
|
||
|
|
||
|
"""
|
||
|
The VC++ 2012 compiler had a crashing bug when you use /analyze. Depending on the frequency
|
||
|
of this crash (which varies per project) we can either ignore it or try to proceed. If abortOnCompilerCrash
|
||
|
is true then parsing stops when a compiler crash is detected, no warnings are reported, and the
|
||
|
last-known-good is left unchanged so that the next build will give correct diffs.
|
||
|
"""
|
||
|
abortOnCompilerCrash = True
|
||
|
|
||
|
|
||
|
|
||
|
"""
|
||
|
Normally the last-known-good report is updated whenever a build passes with no fatal warnings. However if
|
||
|
the compiler keeps crashing then this means that the last-known-good will keep changing, leading to false
|
||
|
reports of new warnings. Also, a project may decide that they don't want any new warnings. This setting
|
||
|
controls updating of the last-known-good file.
|
||
|
"""
|
||
|
updateLastKnownGood = True
|
||
|
|
||
|
|
||
|
|
||
|
"""
|
||
|
Some warnings occur in Microsoft header files. We need to ignore these. Substring
|
||
|
matching is done on these.
|
||
|
"""
|
||
|
ignorePaths = [
|
||
|
r"microsoft visual studio 10.0\vc",
|
||
|
r"microsoft visual studio 11.0\vc",
|
||
|
r"microsoft sdks\windows\v7.0a",
|
||
|
r"microsoft xbox 360 sdk\include",
|
||
|
r"windows kits\8.0\include",
|
||
|
r"thirdparty\dxsdk\include",
|
||
|
r"thirdparty\physx301\physxsdk",
|
||
|
]
|
||
|
|
||
|
|
||
|
|
||
|
"""
|
||
|
This list contains warnings which /analyze can identify with (ideally) 100%
|
||
|
accuracy and which the team believes should always be fixed. This typically
|
||
|
includes varargs mismatches of all kinds.
|
||
|
The layout is designed to match the warningsToText array to make it easy to
|
||
|
copy between them.
|
||
|
|
||
|
This array should probably be empty when /analyze is first run on a project
|
||
|
but should be filled in as much as practical in order to avoid regressions.
|
||
|
"""
|
||
|
alwaysFatalWarnings = {
|
||
|
4189 : "Local variable is initialized but not referenced",
|
||
|
4789 : "Destination of memory copy is too small",
|
||
|
6053 : "Call to <function> may not zero-terminate string",
|
||
|
6057 : "Buffer overrun due to number of characters/number of bytes mismatch",
|
||
|
6059 : "Incorrect length parameter",
|
||
|
6063 : "Missing string argument",
|
||
|
6064 : "Missing integer argument",
|
||
|
6066 : "Non-pointer passed as parameter when pointer is required",
|
||
|
6067 : "Parameter in call must be the address of the string",
|
||
|
6209 : "Using sizeof when a character count might be needed. Annotate with OUT_Z_CAP or its relatives",
|
||
|
6269 : "Possible incorrect order of operations: dereference ignored",
|
||
|
6270 : "Missing float argument to varargs function",
|
||
|
6271 : "Extra argument passed: parameter is not used by the format string",
|
||
|
6272 : "Non-float passed as argument <number> when float is required",
|
||
|
6273 : "Non-integer passed as a parameter when integer is required",
|
||
|
6274 : "Non-character passed as parameter '5' when character is required",
|
||
|
6278 : "Buffer is allocated with array new [], but deleted with scalar delete. Destructors will not be called",
|
||
|
6281 : "Incorrect order of operations: relational operators have higher precedence than bitwise operators",
|
||
|
6282 : "Incorrect operator: assignment of constant in Boolean context",
|
||
|
6283 : "Buffer is allocated with array new [], but deleted with scalar delete",
|
||
|
6284 : "Object passed as a parameter when string is required",
|
||
|
6290 : "Bitwise operation on logical result: ! has higher precedence than &. Use && or (!(x & y)) instead",
|
||
|
6293 : "Ill-defined for-loop: counts down from minimum.",
|
||
|
#6298 : "Using a read-only string <pointer> as a writable string argument",
|
||
|
6302 : "Format string mismatch: character string passed as parameter when wide character string is required",
|
||
|
6306 : "Incorrect call to 'fprintf*': consider using 'vfprintf*' which accepts a va_list as an argument",
|
||
|
# This warning seems to show up in some template code so it can't be a fatal warning.
|
||
|
#6313 : "Incorrect operator: zero-valued flag cannot be tested with bitwise-and. Use an equality test to check for zero-valued flags",
|
||
|
6314 : "Incorrect order of operations: bitwise-or has higher precedence than the conditional-expression operator",
|
||
|
6315 : "Incorrect order of operations: bitwise-and has higher precedence than bitwise-or",
|
||
|
6316 : "Incorrect operator: tested expression is constant and non-zero. Use bitwise-and to determine whether bits are set.",
|
||
|
6317 : "Incorrect operator: logical-not (!) is not interchangeable with ones-complement (~)",
|
||
|
6328 : "Wrong parameter type passed",
|
||
|
6334 : "Sizeof operator applied to an expression with an operator might yield unexpected results",
|
||
|
6336 : "Arithmetic operator has precedence over question operator, use parentheses to clarify intent",
|
||
|
6522 : "Invalid size specification: expression must be of integral type",
|
||
|
6523 : "Invalid size specification: parameter 'size' not found",
|
||
|
28252 : "Inconsistent annotation",
|
||
|
28253 : "Inconsistent annotation",
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
"""
|
||
|
This list contains warnings which /analyze can identify with (ideally) 100%
|
||
|
accuracy and which the team wishes to avoid introducing new instances of.
|
||
|
This could include variable shadowing, alloca in a loop, or other bugs
|
||
|
which are problematic to fix all legacy instances of.
|
||
|
"""
|
||
|
fatalWhenNewWarnings = {
|
||
|
# Having variable shadowing be fatal on new warnings would be great, but it's best to see if
|
||
|
# that is what the team wants.
|
||
|
#6244 : "Local declaration shadows declaration of same name in global scope",
|
||
|
#6246 : "Local declaration shadows declaration of same name in outer scope",
|
||
|
6263 : "Using _alloca in a loop: this can quickly overflow stack",
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
# The paths on the build machines are very long and make reading the results cumbersome.
|
||
|
# Remap them down to something more compact.
|
||
|
remaps = {
|
||
|
r"c:\buildslave_source\dota_staging_analyzebuild_win32\build\src" : r"D:\dota\staging\src",
|
||
|
r"c:\buildslave_source2\buildbot\source2_analyzebuild_win32\build\src" : r"D:\source2\src",
|
||
|
r"c:\buildslave_steam\steam_main_analyze_win32\build\src" : r"D:\clients\steam_main\src",
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
# Some warnings are only kept on so that we can see the statistics they give us.
|
||
|
# They shouldn't count towards the total warning count.
|
||
|
# 6262: Excessive stack usage in function
|
||
|
# 28159: Consider using 'GetTickCount64' instead of 'GetTickCount'
|
||
|
# 6244: Local declaration shadows declaration of same name in global scope
|
||
|
# 6246: Local declaration shadows declaration of same name in outer scope
|
||
|
informationalWarnings = ["6262", "28159", "6244", "6246"]
|