xref: /aosp_15_r20/build/make/tools/warn/other_warn_patterns.py (revision 9e94795a3d4ef5c1d47486f9a02bb378756cea8a)
1*9e94795aSAndroid Build Coastguard Worker# python3
2*9e94795aSAndroid Build Coastguard Worker# Copyright (C) 2019 The Android Open Source Project
3*9e94795aSAndroid Build Coastguard Worker#
4*9e94795aSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License");
5*9e94795aSAndroid Build Coastguard Worker# you may not use this file except in compliance with the License.
6*9e94795aSAndroid Build Coastguard Worker# You may obtain a copy of the License at
7*9e94795aSAndroid Build Coastguard Worker#
8*9e94795aSAndroid Build Coastguard Worker#      http://www.apache.org/licenses/LICENSE-2.0
9*9e94795aSAndroid Build Coastguard Worker#
10*9e94795aSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software
11*9e94795aSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS,
12*9e94795aSAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*9e94795aSAndroid Build Coastguard Worker# See the License for the specific language governing permissions and
14*9e94795aSAndroid Build Coastguard Worker# limitations under the License.
15*9e94795aSAndroid Build Coastguard Worker
16*9e94795aSAndroid Build Coastguard Worker"""Warning patterns from other tools."""
17*9e94795aSAndroid Build Coastguard Worker
18*9e94795aSAndroid Build Coastguard Worker# No need of doc strings for trivial small functions.
19*9e94795aSAndroid Build Coastguard Worker# pylint:disable=missing-function-docstring
20*9e94795aSAndroid Build Coastguard Worker
21*9e94795aSAndroid Build Coastguard Worker# pylint:disable=relative-beyond-top-level
22*9e94795aSAndroid Build Coastguard Workerfrom .cpp_warn_patterns import compile_patterns
23*9e94795aSAndroid Build Coastguard Workerfrom .severity import Severity
24*9e94795aSAndroid Build Coastguard Worker
25*9e94795aSAndroid Build Coastguard Worker
26*9e94795aSAndroid Build Coastguard Workerdef warn(name, severity, description, pattern_list):
27*9e94795aSAndroid Build Coastguard Worker  return {
28*9e94795aSAndroid Build Coastguard Worker      'category': name,
29*9e94795aSAndroid Build Coastguard Worker      'severity': severity,
30*9e94795aSAndroid Build Coastguard Worker      'description': name + ': ' + description,
31*9e94795aSAndroid Build Coastguard Worker      'patterns': pattern_list
32*9e94795aSAndroid Build Coastguard Worker  }
33*9e94795aSAndroid Build Coastguard Worker
34*9e94795aSAndroid Build Coastguard Worker
35*9e94795aSAndroid Build Coastguard Workerdef aapt(description, pattern_list):
36*9e94795aSAndroid Build Coastguard Worker  return warn('aapt', Severity.MEDIUM, description, pattern_list)
37*9e94795aSAndroid Build Coastguard Worker
38*9e94795aSAndroid Build Coastguard Worker
39*9e94795aSAndroid Build Coastguard Workerdef misc(description, pattern_list):
40*9e94795aSAndroid Build Coastguard Worker  return warn('logtags', Severity.LOW, description, pattern_list)
41*9e94795aSAndroid Build Coastguard Worker
42*9e94795aSAndroid Build Coastguard Worker
43*9e94795aSAndroid Build Coastguard Workerdef asm(description, pattern_list):
44*9e94795aSAndroid Build Coastguard Worker  return warn('asm', Severity.MEDIUM, description, pattern_list)
45*9e94795aSAndroid Build Coastguard Worker
46*9e94795aSAndroid Build Coastguard Worker
47*9e94795aSAndroid Build Coastguard Workerdef kotlin(description, pattern):
48*9e94795aSAndroid Build Coastguard Worker  return warn('Kotlin', Severity.MEDIUM, description,
49*9e94795aSAndroid Build Coastguard Worker              [r'.*\.kt:.*: warning: ' + pattern])
50*9e94795aSAndroid Build Coastguard Worker
51*9e94795aSAndroid Build Coastguard Worker
52*9e94795aSAndroid Build Coastguard Workerdef yacc(description, pattern_list):
53*9e94795aSAndroid Build Coastguard Worker  return warn('yacc', Severity.MEDIUM, description, pattern_list)
54*9e94795aSAndroid Build Coastguard Worker
55*9e94795aSAndroid Build Coastguard Worker
56*9e94795aSAndroid Build Coastguard Workerdef rust(severity, description, pattern):
57*9e94795aSAndroid Build Coastguard Worker  return warn('Rust', severity, description,
58*9e94795aSAndroid Build Coastguard Worker              [r'.*\.rs:.*: warning: ' + pattern])
59*9e94795aSAndroid Build Coastguard Worker
60*9e94795aSAndroid Build Coastguard Worker
61*9e94795aSAndroid Build Coastguard Workerwarn_patterns = [
62*9e94795aSAndroid Build Coastguard Worker    # pylint does not recognize g-inconsistent-quotes
63*9e94795aSAndroid Build Coastguard Worker    # pylint:disable=line-too-long,bad-option-value,g-inconsistent-quotes
64*9e94795aSAndroid Build Coastguard Worker    # aapt warnings
65*9e94795aSAndroid Build Coastguard Worker    aapt('No comment for public symbol',
66*9e94795aSAndroid Build Coastguard Worker         [r".*: warning: No comment for public symbol .+"]),
67*9e94795aSAndroid Build Coastguard Worker    aapt('No default translation',
68*9e94795aSAndroid Build Coastguard Worker         [r".*: warning: string '.+' has no default translation in .*"]),
69*9e94795aSAndroid Build Coastguard Worker    aapt('Missing default or required localization',
70*9e94795aSAndroid Build Coastguard Worker         [r".*: warning: \*\*\*\* string '.+' has no default or required localization for '.+' in .+"]),
71*9e94795aSAndroid Build Coastguard Worker    aapt('String marked untranslatable, but translation exists',
72*9e94795aSAndroid Build Coastguard Worker         [r".*: warning: string '.+' in .* marked untranslatable but exists in locale '??_??'"]),
73*9e94795aSAndroid Build Coastguard Worker    aapt('empty span in string',
74*9e94795aSAndroid Build Coastguard Worker         [r".*: warning: empty '.+' span found in text '.+"]),
75*9e94795aSAndroid Build Coastguard Worker    # misc warnings
76*9e94795aSAndroid Build Coastguard Worker    misc('Duplicate logtag',
77*9e94795aSAndroid Build Coastguard Worker         [r".*: warning: tag \".+\" \(.+\) duplicated in .+"]),
78*9e94795aSAndroid Build Coastguard Worker    # Assembler warnings
79*9e94795aSAndroid Build Coastguard Worker    asm('ASM value size does not match register size',
80*9e94795aSAndroid Build Coastguard Worker        [r".*: warning: value size does not match register size specified by the constraint and modifier"]),
81*9e94795aSAndroid Build Coastguard Worker    asm('IT instruction is deprecated',
82*9e94795aSAndroid Build Coastguard Worker        [r".*: warning: applying IT instruction .* is deprecated"]),
83*9e94795aSAndroid Build Coastguard Worker    asm('section flags ignored',
84*9e94795aSAndroid Build Coastguard Worker        [r".*: warning: section flags ignored on section redeclaration"]),
85*9e94795aSAndroid Build Coastguard Worker    asm('setjmp/longjmp/vfork changed binding',
86*9e94795aSAndroid Build Coastguard Worker        [r".*: warning: .*(setjmp|longjmp|vfork) changed binding to .*"]),
87*9e94795aSAndroid Build Coastguard Worker    # NDK warnings
88*9e94795aSAndroid Build Coastguard Worker    {'category': 'NDK', 'severity': Severity.HIGH,
89*9e94795aSAndroid Build Coastguard Worker     'description': 'NDK: Generate guard with empty availability, obsoleted',
90*9e94795aSAndroid Build Coastguard Worker     'patterns': [r".*: warning: .* generate guard with empty availability: obsoleted ="]},
91*9e94795aSAndroid Build Coastguard Worker    # Protoc warnings
92*9e94795aSAndroid Build Coastguard Worker    {'category': 'Protoc', 'severity': Severity.MEDIUM,
93*9e94795aSAndroid Build Coastguard Worker     'description': 'Proto: Enum name collision after strip',
94*9e94795aSAndroid Build Coastguard Worker     'patterns': [r".*: warning: Enum .* has the same name .* ignore case and strip"]},
95*9e94795aSAndroid Build Coastguard Worker    {'category': 'Protoc', 'severity': Severity.MEDIUM,
96*9e94795aSAndroid Build Coastguard Worker     'description': 'Proto: Import not used',
97*9e94795aSAndroid Build Coastguard Worker     'patterns': [r".*: warning: Import .*/.*\.proto but not used.$"]},
98*9e94795aSAndroid Build Coastguard Worker    # Kotlin warnings
99*9e94795aSAndroid Build Coastguard Worker    kotlin('never used parameter or variable', '.+ \'.*\' is never used'),
100*9e94795aSAndroid Build Coastguard Worker    kotlin('multiple labels', '.+ more than one label .+ in this scope'),
101*9e94795aSAndroid Build Coastguard Worker    kotlin('type mismatch', 'type mismatch: '),
102*9e94795aSAndroid Build Coastguard Worker    kotlin('is always true', '.+ is always \'true\''),
103*9e94795aSAndroid Build Coastguard Worker    kotlin('no effect', '.+ annotation has no effect for '),
104*9e94795aSAndroid Build Coastguard Worker    kotlin('no cast needed', 'no cast needed'),
105*9e94795aSAndroid Build Coastguard Worker    kotlin('accessor not generated', 'an accessor will not be generated '),
106*9e94795aSAndroid Build Coastguard Worker    kotlin('initializer is redundant', '.* initializer is redundant$'),
107*9e94795aSAndroid Build Coastguard Worker    kotlin('elvis operator always returns ...',
108*9e94795aSAndroid Build Coastguard Worker           'elvis operator (?:) always returns .+'),
109*9e94795aSAndroid Build Coastguard Worker    kotlin('shadowed name', 'name shadowed: .+'),
110*9e94795aSAndroid Build Coastguard Worker    kotlin('unchecked cast', 'unchecked cast: .* to .*$'),
111*9e94795aSAndroid Build Coastguard Worker    kotlin('unreachable code', 'unreachable code'),
112*9e94795aSAndroid Build Coastguard Worker    kotlin('unnecessary assertion', 'unnecessary .+ assertion .+'),
113*9e94795aSAndroid Build Coastguard Worker    kotlin('unnecessary safe call on a non-null receiver',
114*9e94795aSAndroid Build Coastguard Worker           'unnecessary safe call on a non-null receiver'),
115*9e94795aSAndroid Build Coastguard Worker    kotlin('Deprecated in Java',
116*9e94795aSAndroid Build Coastguard Worker           '\'.*\' is deprecated. Deprecated in Java'),
117*9e94795aSAndroid Build Coastguard Worker    kotlin('Replacing Handler for Executor',
118*9e94795aSAndroid Build Coastguard Worker           '.+ Replacing Handler for Executor in '),
119*9e94795aSAndroid Build Coastguard Worker    kotlin('library has Kotlin runtime',
120*9e94795aSAndroid Build Coastguard Worker           '.+ has Kotlin runtime (bundled|library)'),
121*9e94795aSAndroid Build Coastguard Worker    warn('Kotlin', Severity.MEDIUM, 'bundled Kotlin runtime',
122*9e94795aSAndroid Build Coastguard Worker         ['.*warning: .+ (has|have the) Kotlin (runtime|Runtime library) bundled']),
123*9e94795aSAndroid Build Coastguard Worker    kotlin('other warnings', '.+'),  # catch all other Kotlin warnings
124*9e94795aSAndroid Build Coastguard Worker    # Yacc warnings
125*9e94795aSAndroid Build Coastguard Worker    yacc('deprecate directive',
126*9e94795aSAndroid Build Coastguard Worker         [r".*\.yy?:.*: warning: deprecated directive: "]),
127*9e94795aSAndroid Build Coastguard Worker    yacc('reduce/reduce conflicts',
128*9e94795aSAndroid Build Coastguard Worker         [r".*\.yy?: warning: .+ reduce/reduce conflicts "]),
129*9e94795aSAndroid Build Coastguard Worker    yacc('shift/reduce conflicts',
130*9e94795aSAndroid Build Coastguard Worker         [r".*\.yy?: warning: .+ shift/reduce conflicts "]),
131*9e94795aSAndroid Build Coastguard Worker    {'category': 'yacc', 'severity': Severity.SKIP,
132*9e94795aSAndroid Build Coastguard Worker     'description': 'yacc: fix-its can be applied',
133*9e94795aSAndroid Build Coastguard Worker     'patterns': [r".*\.yy?: warning: fix-its can be applied."]},
134*9e94795aSAndroid Build Coastguard Worker    # Rust warnings
135*9e94795aSAndroid Build Coastguard Worker    rust(Severity.HIGH, 'Does not derive Copy', '.+ does not derive Copy'),
136*9e94795aSAndroid Build Coastguard Worker    rust(Severity.MEDIUM, '... are deprecated',
137*9e94795aSAndroid Build Coastguard Worker         ('(.+ are deprecated$|' +
138*9e94795aSAndroid Build Coastguard Worker          'use of deprecated item .* (use .* instead|is now preferred))')),
139*9e94795aSAndroid Build Coastguard Worker    rust(Severity.MEDIUM, 'never used', '.* is never used:'),
140*9e94795aSAndroid Build Coastguard Worker    rust(Severity.MEDIUM, 'unused import', 'unused import: '),
141*9e94795aSAndroid Build Coastguard Worker    rust(Severity.MEDIUM, 'unnecessary attribute',
142*9e94795aSAndroid Build Coastguard Worker         '.+ no longer requires an attribute'),
143*9e94795aSAndroid Build Coastguard Worker    rust(Severity.MEDIUM, 'unnecessary parentheses',
144*9e94795aSAndroid Build Coastguard Worker         'unnecessary parentheses around'),
145*9e94795aSAndroid Build Coastguard Worker    # Catch all RenderScript warnings
146*9e94795aSAndroid Build Coastguard Worker    {'category': 'RenderScript', 'severity': Severity.LOW,
147*9e94795aSAndroid Build Coastguard Worker     'description': 'RenderScript warnings',
148*9e94795aSAndroid Build Coastguard Worker     'patterns': [r'.*\.rscript:.*: warning: ']},
149*9e94795aSAndroid Build Coastguard Worker    {'category': 'RenderScript', 'severity': Severity.HIGH,
150*9e94795aSAndroid Build Coastguard Worker     'description': 'RenderScript is deprecated',
151*9e94795aSAndroid Build Coastguard Worker     'patterns': [r'.*: warning: Renderscript is deprecated:.+']},
152*9e94795aSAndroid Build Coastguard Worker    # Broken/partial warning messages will be skipped.
153*9e94795aSAndroid Build Coastguard Worker    {'category': 'Misc', 'severity': Severity.SKIP,
154*9e94795aSAndroid Build Coastguard Worker     'description': 'skip, ,',
155*9e94795aSAndroid Build Coastguard Worker     'patterns': [r".*: warning: ,?$"]},
156*9e94795aSAndroid Build Coastguard Worker    {'category': 'C/C++', 'severity': Severity.SKIP,
157*9e94795aSAndroid Build Coastguard Worker     'description': 'skip, In file included from ...',
158*9e94795aSAndroid Build Coastguard Worker     'patterns': [r".*: warning: In file included from .+,"]},
159*9e94795aSAndroid Build Coastguard Worker    # catch-all for warnings this script doesn't know about yet
160*9e94795aSAndroid Build Coastguard Worker    {'category': 'C/C++', 'severity': Severity.UNMATCHED,
161*9e94795aSAndroid Build Coastguard Worker     'description': 'Unclassified/unrecognized warnings',
162*9e94795aSAndroid Build Coastguard Worker     'patterns': [r".*: warning: .+"]},
163*9e94795aSAndroid Build Coastguard Worker]
164*9e94795aSAndroid Build Coastguard Worker
165*9e94795aSAndroid Build Coastguard Worker
166*9e94795aSAndroid Build Coastguard Workercompile_patterns(warn_patterns)
167