Merge \\"Recognize new C/C++ compiler and static analyzer warnings.\\" am: 1734523900

am: 6beef3807d

Change-Id: I0452a12af98ef1ea8426c0a54211186e4123afdd
This commit is contained in:
Chih-Hung Hsieh 2016-07-07 18:28:56 +00:00 committed by android-build-merger
commit d04cbc6f76
1 changed files with 107 additions and 15 deletions

View File

@ -68,7 +68,8 @@ warnpatterns = [
r".*: warning: ignoring old commands for target .+"] },
{ 'category':'C/C++', 'severity':severity.HIGH, 'members':[], 'option':'-Wimplicit-function-declaration',
'description':'Implicit function declaration',
'patterns':[r".*: warning: implicit declaration of function .+"] },
'patterns':[r".*: warning: implicit declaration of function .+",
r".*: warning: implicitly declaring library function" ] },
{ 'category':'C/C++', 'severity':severity.SKIP, 'members':[], 'option':'',
'description':'',
'patterns':[r".*: warning: conflicting types for '.+'"] },
@ -81,12 +82,16 @@ warnpatterns = [
'description':'Potential leak of memory, bad free, use after free',
'patterns':[r".*: warning: Potential leak of memory",
r".*: warning: Potential memory leak",
r".*: warning: Memory allocated by alloca\(\) should not be deallocated",
r".*: warning: Memory allocated by .+ should be deallocated by .+ not .+",
r".*: warning: 'delete' applied to a pointer that was allocated",
r".*: warning: Use of memory after it is freed",
r".*: warning: Argument to .+ is the address of .+ variable",
r".*: warning: Argument to free\(\) is offset by .+ of memory allocated by",
r".*: warning: Attempt to .+ released memory"] },
{ 'category':'C/C++', 'severity':severity.HIGH, 'members':[], 'option':'',
'description':'Use transient memory for control value',
'patterns':[r".*: warning: .+Using such transient memory for the control value is .*dangerous."] },
{ 'category':'C/C++', 'severity':severity.HIGH, 'members':[], 'option':'',
'description':'Return address of stack memory',
'patterns':[r".*: warning: Address of stack memory .+ returned to caller",
@ -94,7 +99,7 @@ warnpatterns = [
{ 'category':'C/C++', 'severity':severity.HIGH, 'members':[], 'option':'',
'description':'Problem with vfork',
'patterns':[r".*: warning: This .+ is prohibited after a successful vfork",
r".*: warning: Call to function 'vfork' is insecure "] },
r".*: warning: Call to function '.+' is insecure "] },
{ 'category':'C/C++', 'severity':severity.HIGH, 'members':[], 'option':'infinite-recursion',
'description':'Infinite recursion',
'patterns':[r".*: warning: all paths through this function will call itself"] },
@ -112,6 +117,9 @@ warnpatterns = [
{ 'category':'C/C++', 'severity':severity.HIGH, 'members':[], 'option':'-fno-builtin',
'description':'Incompatible declaration of built in function',
'patterns':[r".*: warning: incompatible implicit declaration of built-in function .+"] },
{ 'category':'C/C++', 'severity':severity.HIGH, 'members':[], 'option':'',
'description':'Null passed as non-null argument',
'patterns':[r".*: warning: Null passed to a callee that requires a non-null argument"] },
{ 'category':'C/C++', 'severity':severity.MEDIUM, 'members':[], 'option':'-Wunused-parameter',
'description':'Unused parameter',
'patterns':[r".*: warning: unused parameter '.*'"] },
@ -131,15 +139,22 @@ warnpatterns = [
{ 'category':'C/C++', 'severity':severity.MEDIUM, 'members':[], 'option':'-Wmissing-field-initializers',
'description':'Missing initializer',
'patterns':[r".*: warning: missing initializer"] },
{ 'category':'C/C++', 'severity':severity.MEDIUM, 'members':[], 'option':'-Wdelete-non-virtual-dtor',
'description':'Need virtual destructor',
'patterns':[r".*: warning: delete called .* has virtual functions but non-virtual destructor"] },
{ 'category':'cont.', 'severity':severity.SKIP, 'members':[], 'option':'',
'description':'',
'patterns':[r".*: warning: \(near initialization for '.+'\)"] },
{ 'category':'C/C++', 'severity':severity.MEDIUM, 'members':[], 'option':'-Wdate-time',
'description':'Expansion of data or time macro',
'patterns':[r".*: warning: expansion of date or time macro is not reproducible"] },
{ 'category':'C/C++', 'severity':severity.MEDIUM, 'members':[], 'option':'-Wformat',
'description':'Format string does not match arguments',
'patterns':[r".*: warning: format '.+' expects type '.+', but argument [0-9]+ has type '.+'",
r".*: warning: more '%' conversions than data arguments",
r".*: warning: data argument not used by format string",
r".*: warning: incomplete format specifier",
r".*: warning: unknown conversion type .* in format",
r".*: warning: format .+ expects .+ but argument .+Wformat=",
r".*: warning: field precision should have .+ but argument has .+Wformat",
r".*: warning: format specifies type .+ but the argument has .*type .+Wformat"] },
@ -169,28 +184,52 @@ warnpatterns = [
{ 'category':'C/C++', 'severity':severity.HARMLESS, 'members':[], 'option':'',
'description':'No newline at end of file',
'patterns':[r".*: warning: no newline at end of file"] },
{ 'category':'C/C++', 'severity':severity.HARMLESS, 'members':[], 'option':'',
'description':'Missing space after macro name',
'patterns':[r".*: warning: missing whitespace after the macro name"] },
{ 'category':'C/C++', 'severity':severity.LOW, 'members':[], 'option':'-Wcast-align',
'description':'Cast increases required alignment',
'patterns':[r".*: warning: cast from .* to .* increases required alignment .*"] },
{ 'category':'C/C++', 'severity':severity.MEDIUM, 'members':[], 'option':'-Wcast-qual',
'description':'Qualifier discarded',
'patterns':[r".*: warning: passing argument [0-9]+ of '.+' discards qualifiers from pointer target type",
r".*: warning: assignment discards qualifiers from pointer target type",
r".*: warning: passing .+ to parameter of type .+ discards qualifiers",
r".*: warning: assigning to .+ from .+ discards qualifiers",
r".*: warning: initializing .+ discards qualifiers .+types-discards-qualifiers",
r".*: warning: return discards qualifiers from pointer target type"] },
{ 'category':'C/C++', 'severity':severity.MEDIUM, 'members':[], 'option':'-Wattributes',
{ 'category':'C/C++', 'severity':severity.MEDIUM, 'members':[], 'option':'-Wunknown-attributes',
'description':'Unknown attribute',
'patterns':[r".*: warning: unknown attribute '.+'"] },
{ 'category':'C/C++', 'severity':severity.MEDIUM, 'members':[], 'option':'-Wignored-attributes',
'description':'Attribute ignored',
'patterns':[r".*: warning: '_*packed_*' attribute ignored"] },
'patterns':[r".*: warning: '_*packed_*' attribute ignored",
r".*: warning: attribute declaration must precede definition .+ignored-attributes"] },
{ 'category':'C/C++', 'severity':severity.MEDIUM, 'members':[], 'option':'-Wvisibility',
'description':'Visibility problem',
'patterns':[r".*: warning: declaration of '.+' will not be visible outside of this function"] },
{ 'category':'C/C++', 'severity':severity.MEDIUM, 'members':[], 'option':'-Wattributes',
'description':'Visibility mismatch',
'patterns':[r".*: warning: '.+' declared with greater visibility than the type of its field '.+'"] },
{ 'category':'C/C++', 'severity':severity.MEDIUM, 'members':[], 'option':'',
'description':'Shift count greater than width of type',
'patterns':[r".*: warning: (left|right) shift count >= width of type"] },
{ 'category':'C/C++', 'severity':severity.MEDIUM, 'members':[], 'option':'',
{ 'category':'C/C++', 'severity':severity.MEDIUM, 'members':[], 'option':'-Wextern-initializer',
'description':'extern <foo> is initialized',
'patterns':[r".*: warning: '.+' initialized and declared 'extern'"] },
'patterns':[r".*: warning: '.+' initialized and declared 'extern'",
r".*: warning: 'extern' variable has an initializer"] },
{ 'category':'C/C++', 'severity':severity.MEDIUM, 'members':[], 'option':'-Wold-style-declaration',
'description':'Old style declaration',
'patterns':[r".*: warning: 'static' is not at beginning of declaration"] },
{ 'category':'C/C++', 'severity':severity.MEDIUM, 'members':[], 'option':'-Wreturn-type',
'description':'Missing return value',
'patterns':[r".*: warning: control reaches end of non-void function"] },
{ 'category':'C/C++', 'severity':severity.MEDIUM, 'members':[], 'option':'-Wimplicit-int',
'description':'Implicit int type',
'patterns':[r".*: warning: type specifier missing, defaults to 'int'"] },
{ 'category':'C/C++', 'severity':severity.MEDIUM, 'members':[], 'option':'-Wmain-return-type',
'description':'Main function should return int',
'patterns':[r".*: warning: return type of 'main' is not 'int'"] },
{ 'category':'C/C++', 'severity':severity.MEDIUM, 'members':[], 'option':'-Wuninitialized',
'description':'Variable may be used uninitialized',
'patterns':[r".*: warning: '.+' may be used uninitialized in this function"] },
@ -253,7 +292,8 @@ warnpatterns = [
'patterns':[r".*: warning: dereferencing .* break strict-aliasing rules"] },
{ 'category':'C/C++', 'severity':severity.MEDIUM, 'members':[], 'option':'-Wpointer-to-int-cast',
'description':'Cast from pointer to integer of different size',
'patterns':[r".*: warning: cast from pointer to integer of different size"] },
'patterns':[r".*: warning: cast from pointer to integer of different size",
r".*: warning: initialization makes pointer from integer without a cast"] } ,
{ 'category':'C/C++', 'severity':severity.MEDIUM, 'members':[], 'option':'-Wint-to-pointer-cast',
'description':'Cast to pointer from integer of different size',
'patterns':[r".*: warning: cast to pointer from integer of different size"] },
@ -1326,6 +1366,9 @@ warnpatterns = [
{ 'category':'C/C++', 'severity':severity.MEDIUM, 'members':[], 'option':'',
'description':'Possible broken line continuation',
'patterns':[r".*: warning: backslash and newline separated by space"] },
{ 'category':'C/C++', 'severity':severity.MEDIUM, 'members':[], 'option':'-Wundefined-inline',
'description':'Inline function is not defined',
'patterns':[r".*: warning: inline function '.*' is not defined"] },
{ 'category':'C/C++', 'severity':severity.MEDIUM, 'members':[], 'option':'-Warray-bounds',
'description':'Array subscript out of bounds',
'patterns':[r".*: warning: array subscript is above array bounds",
@ -1358,6 +1401,9 @@ warnpatterns = [
{ 'category':'C/C++', 'severity':severity.MEDIUM, 'members':[], 'option':'-Woverflow',
'description':'Constant too large for type, truncated',
'patterns':[r".*: warning: large integer implicitly truncated to unsigned type"] },
{ 'category':'C/C++', 'severity':severity.MEDIUM, 'members':[], 'option':'-Winteger-overflow',
'description':'Overflow in expression',
'patterns':[r".*: warning: overflow in expression; .*Winteger-overflow"] },
{ 'category':'C/C++', 'severity':severity.MEDIUM, 'members':[], 'option':'-Woverflow',
'description':'Overflow in implicit constant conversion',
'patterns':[r".*: warning: overflow in implicit constant conversion"] },
@ -1380,18 +1426,31 @@ warnpatterns = [
{ 'category':'C/C++', 'severity':severity.MEDIUM, 'members':[], 'option':'-Wmissing-parameter-type',
'description':'Parameter type not specified',
'patterns':[r".*: warning: type of '.+' defaults to 'int'"] },
{ 'category':'C/C++', 'severity':severity.MEDIUM, 'members':[], 'option':'-Wmissing-declarations',
'description':'Missing declarations',
'patterns':[r".*: warning: declaration does not declare anything"] },
{ 'category':'C/C++', 'severity':severity.MEDIUM, 'members':[], 'option':'-Wmissing-noreturn',
'description':'Missing noreturn',
'patterns':[r".*: warning: function '.*' could be declared with attribute 'noreturn'"] },
{ 'category':'gcc', 'severity':severity.MEDIUM, 'members':[], 'option':'',
'description':'Invalid option for C file',
'patterns':[r".*: warning: command line option "".+"" is valid for C\+\+\/ObjC\+\+ but not for C"] },
{ 'category':'C/C++', 'severity':severity.MEDIUM, 'members':[], 'option':'',
'description':'User warning',
'patterns':[r".*: warning: #warning "".+"""] },
{ 'category':'C/C++', 'severity':severity.MEDIUM, 'members':[], 'option':'-Wvexing-parse',
'description':'Vexing parsing problem',
'patterns':[r".*: warning: empty parentheses interpreted as a function declaration"] },
{ 'category':'C/C++', 'severity':severity.MEDIUM, 'members':[], 'option':'-Wextra',
'description':'Dereferencing void*',
'patterns':[r".*: warning: dereferencing 'void \*' pointer"] },
{ 'category':'C/C++', 'severity':severity.MEDIUM, 'members':[], 'option':'-Wextra',
'description':'Comparison of pointer to zero',
'patterns':[r".*: warning: ordered comparison of pointer with integer zero"] },
{ 'category':'C/C++', 'severity':severity.MEDIUM, 'members':[], 'option':'',
'description':'Comparison of pointer and integer',
'patterns':[r".*: warning: ordered comparison of pointer with integer zero",
r".*: warning: .*comparison between pointer and integer"] },
{ 'category':'C/C++', 'severity':severity.MEDIUM, 'members':[], 'option':'',
'description':'Use of error-prone unary operator',
'patterns':[r".*: warning: use of unary operator that may be intended as compound assignment"] },
{ 'category':'C/C++', 'severity':severity.MEDIUM, 'members':[], 'option':'-Wwrite-strings',
'description':'Conversion of string constant to non-const char*',
'patterns':[r".*: warning: deprecated conversion from string constant to '.+'"] },
@ -1433,8 +1492,21 @@ warnpatterns = [
'description':'Comparison between different enums',
'patterns':[r".*: warning: comparison between '.+' and '.+'.+Wenum-compare"] },
{ 'category':'C/C++', 'severity':severity.MEDIUM, 'members':[], 'option':'-Wconversion',
'description':'Implicit conversion of negative number to unsigned type',
'patterns':[r".*: warning: converting negative value '.+' to '.+'"] },
'description':'Conversion may change value',
'patterns':[r".*: warning: converting negative value '.+' to '.+'",
r".*: warning: conversion to '.+' .+ may alter its value"] },
{ 'category':'C/C++', 'severity':severity.MEDIUM, 'members':[], 'option':'-Wconversion-null',
'description':'Converting to non-pointer type from NULL',
'patterns':[r".*: warning: converting to non-pointer type '.+' from NULL"] },
{ 'category':'C/C++', 'severity':severity.MEDIUM, 'members':[], 'option':'-Wnull-conversion',
'description':'Converting NULL to non-pointer type',
'patterns':[r".*: warning: implicit conversion of NULL constant to '.+'"] },
{ 'category':'C/C++', 'severity':severity.MEDIUM, 'members':[], 'option':'-Wnon-literal-null-conversion',
'description':'Zero used as null pointer',
'patterns':[r".*: warning: expression .* zero treated as a null pointer constant"] },
{ 'category':'C/C++', 'severity':severity.MEDIUM, 'members':[], 'option':'-Wliteral-conversion',
'description':'Implicit conversion changes value',
'patterns':[r".*: warning: implicit conversion .* changes value from .* to .*literal-conversion"] },
{ 'category':'C/C++', 'severity':severity.MEDIUM, 'members':[], 'option':'',
'description':'Passing NULL as non-pointer argument',
'patterns':[r".*: warning: passing NULL to non-pointer argument [0-9]+ of '.+'"] },
@ -1480,6 +1552,9 @@ warnpatterns = [
{ 'category':'C/C++', 'severity':severity.MEDIUM, 'members':[], 'option':'writable-strings',
'description':'Conversion from string literal to char*',
'patterns':[r".*: warning: .+ does not allow conversion from string literal to 'char \*'"] },
{ 'category':'C/C++', 'severity':severity.LOW, 'members':[], 'option':'-Wextra-semi',
'description':'Extra \';\'',
'patterns':[r".*: warning: extra ';' .+extra-semi"] },
{ 'category':'C/C++', 'severity':severity.LOW, 'members':[], 'option':'',
'description':'Useless specifier',
'patterns':[r".*: warning: useless storage class specifier in empty declaration"] },
@ -1530,6 +1605,12 @@ warnpatterns = [
{ 'category':'logtags', 'severity':severity.LOW, 'members':[], 'option':'asm-operand-widths',
'description':'ASM value size does not match register size',
'patterns':[r".*: warning: value size does not match register size specified by the constraint and modifier"] },
{ 'category':'C/C++', 'severity':severity.LOW, 'members':[], 'option':'tautological-compare',
'description':'Comparison of self is always false',
'patterns':[r".*: self-comparison always evaluates to false"] },
{ 'category':'C/C++', 'severity':severity.LOW, 'members':[], 'option':'constant-logical-operand',
'description':'Logical op with constant operand',
'patterns':[r".*: use of logical '.+' with constant operand"] },
{ 'category':'C/C++', 'severity':severity.LOW, 'members':[], 'option':'literal-suffix',
'description':'Needs a space between literal and string macro',
'patterns':[r".*: warning: invalid suffix on literal.+ requires a space .+Wliteral-suffix"] },
@ -1538,7 +1619,11 @@ warnpatterns = [
'patterns':[r".*: warning: .+-W#warnings"] },
{ 'category':'C/C++', 'severity':severity.LOW, 'members':[], 'option':'absolute-value',
'description':'Using float/int absolute value function with int/float argument',
'patterns':[r".*: warning: using .+ absolute value function .+ when argument is .+ type .+Wabsolute-value"] },
'patterns':[r".*: warning: using .+ absolute value function .+ when argument is .+ type .+Wabsolute-value",
r".*: warning: absolute value function '.+' given .+ which may cause truncation .+Wabsolute-value"] },
{ 'category':'C/C++', 'severity':severity.LOW, 'members':[], 'option':'-Wc++11-extensions',
'description':'Using C++11 extensions',
'patterns':[r".*: warning: 'auto' type specifier is a C\+\+11 extension"] },
{ 'category':'C/C++', 'severity':severity.LOW, 'members':[], 'option':'',
'description':'Refers to implicitly defined namespace',
'patterns':[r".*: warning: using directive refers to implicitly-defined namespace .+"] },
@ -1549,9 +1634,10 @@ warnpatterns = [
{ 'category':'C/C++', 'severity':severity.MEDIUM, 'members':[], 'option':'',
'description':'Operator new returns NULL',
'patterns':[r".*: warning: 'operator new' must not return NULL unless it is declared 'throw\(\)' .+"] },
{ 'category':'C/C++', 'severity':severity.MEDIUM, 'members':[], 'option':'',
{ 'category':'C/C++', 'severity':severity.MEDIUM, 'members':[], 'option':'-Wnull-arithmetic',
'description':'NULL used in arithmetic',
'patterns':[r".*: warning: NULL used in arithmetic"] },
'patterns':[r".*: warning: NULL used in arithmetic",
r".*: warning: comparison between NULL and non-pointer"] },
{ 'category':'C/C++', 'severity':severity.MEDIUM, 'members':[], 'option':'header-guard',
'description':'Misspelled header guard',
'patterns':[r".*: warning: '.+' is used as a header guard .+ followed by .+ different macro"] },
@ -1592,6 +1678,12 @@ warnpatterns = [
{ 'category':'C/C++', 'severity':severity.MEDIUM, 'members':[], 'option':'',
'description':'Result of malloc type incompatible with sizeof operand type',
'patterns':[r".*: warning: Result of '.+' is converted to .+ incompatible with sizeof operand type"] },
{ 'category':'C/C++', 'severity':severity.MEDIUM, 'members':[], 'option':'-Wsizeof-array-argument',
'description':'Sizeof on array argument',
'patterns':[r".*: warning: sizeof on array function parameter will return"] },
{ 'category':'C/C++', 'severity':severity.MEDIUM, 'members':[], 'option':'-Wsizeof-pointer-memacces',
'description':'Bad argument size of memory access functions',
'patterns':[r".*: warning: .+\[-Wsizeof-pointer-memaccess\]"] },
{ 'category':'C/C++', 'severity':severity.MEDIUM, 'members':[], 'option':'',
'description':'Return value not checked',
'patterns':[r".*: warning: The return value from .+ is not checked"] },