• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright (c) 2021-2024 Huawei Device Co., Ltd.
2# Licensed under the Apache License, Version 2.0 (the "License");
3# you may not use this file except in compliance with the License.
4# You may obtain a copy of the License at
5#
6# http://www.apache.org/licenses/LICENSE-2.0
7#
8# Unless required by applicable law or agreed to in writing, software
9# distributed under the License is distributed on an "AS IS" BASIS,
10# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11# See the License for the specific language governing permissions and
12# limitations under the License.
13
14compatibility_checks:
15  results:
16    ok:
17      ok: ""
18    errors:
19      private_field: Access to private object field is prohibited.
20      protected_field: Access to protected object field is prohibited.
21      package_field: Access to package protected object field is prohibited.
22      private_method: Call to a private method is prohibited.
23      protected_method: Call to protected methods from non-descendants of object class is prohibited.
24      protected_class: Access to package-private class is prohibited.
25      package_method: Call to protected methods from non-descendants of object class is prohibited.
26      unknown: Internal error.
27      wrong_acc: Wrong accumulator type.
28      wrong_formal_param: Wrong formal parameter type.
29      wrong_actual_param: Wrong actual parameter type.
30    warnings:
31      sign: Sign mismatch. Possible overflow/underflow issues and other quirks in data-flow.
32      size: Size mismatch. Possible value truncation issues.
33      sign_size: Sign and size mismatch. Possible overflow/underflow and truncation issues.
34      precision: Precision mismatch. Possible overflow/underflow issues and other quirks in data-flow.
35
36  domains:
37    type_relationship:
38      new_enum: TypeRelationship
39      values:
40        - same
41        - descendant
42        - neighbour
43        - other
44
45    access:
46      new_enum: AccessModifier
47      values:
48        - public
49        - protected
50        - package
51        - private
52
53    type:
54      existing_enum: TypeSystem::TypeId
55      values:
56        - invalid
57        - void
58        - u1
59        - i8
60        - u8
61        - i16
62        - u16
63        - i32
64        - u32
65        - f32
66        - f64
67        - i64
68        - u64
69        - reference
70
71  checks:
72    FieldAccess:
73      _domains:
74        - type_relationship
75        - access
76      _default: ok
77      descendant:
78        private_field: private
79        protected_field: package
80      neighbour:
81        private_field: private
82      other:
83        private_field: private
84        protected_field: protected
85        package_field: package
86
87    Call:
88      _domains:
89        - type_relationship
90        - access
91      _default: ok
92      descendant:
93        private_method: private
94        protected_method: package
95      neighbour:
96        private_method: private
97      other:
98        private_method: private
99        protected_method: protected
100        package_method: package
101
102    Stobj:
103      _domains:
104        - type
105        - type
106      _default: unknown
107      u1:
108        _default: ok
109        unknown:
110          - reference
111        wrong_acc:
112          - void
113          - f32
114          - f64
115      i8:
116        _default: ok
117        unknown:
118          - invalid
119          - reference
120        wrong_acc:
121          - void
122          - f32
123          - f64
124        sign: u8
125        size:
126          - i16
127          - i32
128          - i64
129        sign_size:
130          - u16
131          - u32
132          - u64
133      u8:
134        _default: ok
135        unknown:
136          - invalid
137          - reference
138        wrong_acc:
139          - void
140          - f32
141          - f64
142        sign: i8
143        sign_size:
144          - i16
145          - i32
146          - i64
147        size:
148          - u16
149          - u32
150          - u64
151      i16:
152        _default: ok
153        unknown:
154          - invalid
155          - reference
156        wrong_acc:
157          - void
158          - f32
159          - f64
160        sign: u16
161        size:
162          - i32
163          - i64
164        sign_size:
165          - u32
166          - u64
167      u16:
168        _default: ok
169        unknown:
170          - invalid
171          - reference
172        wrong_acc:
173          - void
174          - f32
175          - f64
176        sign: i16
177        sign_size:
178          - i32
179          - i64
180        size:
181          - u32
182          - u64
183      i32:
184        _default: ok
185        unknown:
186          - invalid
187          - reference
188        wrong_acc:
189          - void
190          - f32
191          - f64
192        sign: u32
193        size:
194          - i64
195        sign_size:
196          - u64
197      u32:
198        _default: ok
199        unknown:
200          - invalid
201          - reference
202        wrong_acc:
203          - void
204          - f32
205          - f64
206        sign: i32
207        sign_size:
208          - i64
209        size:
210          - u64
211      f32:
212        _default: wrong_acc
213        unknown:
214          - invalid
215          - void
216          - reference
217        ok: f32
218        precision: f64
219
220    StobjWide:
221      _domains:
222        - type
223        - type
224      _default: unknown
225      f32:
226        _default: wrong_acc
227        unknown:
228          - invalid
229          - void
230          - reference
231        ok: f32
232        precision: f64
233      f64:
234        _default: wrong_acc
235        unknown:
236          - invalid
237          - void
238          - reference
239        ok:
240          - f32
241          - f64
242      i64:
243        _default: wrong_acc
244        unknown:
245          - invalid
246          - void
247          - reference
248        ok: i64
249        sign: u64
250      u64:
251        _default: wrong_acc
252        unknown:
253          - invalid
254          - void
255          - reference
256        ok: u64
257        sign: i64
258
259    MethodArgs:
260      _default: wrong_actual_param
261      _domains:
262        - type
263        - type
264      void:
265        _default: wrong_formal_param
266        unknown: invalid
267      u1:
268        unknown: invalid
269        ok:
270          - u1
271          - i8
272          - u8
273          - i16
274          - u16
275          - i32
276          - u32
277      i8:
278        unknown: invalid
279        ok:
280          - u1
281          - i8
282        sign:
283          - u8
284        size:
285          - i16
286          - i32
287        sign_size:
288          - u16
289          - u32
290      u8:
291        unknown: invalid
292        ok:
293          - u1
294          - u8
295        sign:
296          - i8
297        sign_size:
298          - i16
299          - i32
300        size:
301          - u16
302          - u32
303      i16:
304        unknown: invalid
305        ok:
306          - u1
307          - i8
308          - u8
309          - i16
310        sign:
311          - u16
312        size:
313          - i32
314        sign_size:
315          - u32
316      u16:
317        unknown: invalid
318        ok:
319          - u1
320          - u8
321          - u16
322        sign:
323          - i8
324          - i16
325        sign_size:
326          - i32
327        size:
328          - u32
329      i32:
330        unknown: invalid
331        ok:
332          - u1
333          - i8
334          - u8
335          - i16
336          - u16
337          - i32
338        sign:
339          - u32
340      u32:
341        unknown: invalid
342        ok:
343          - u1
344          - u8
345          - u16
346          - u32
347        sign:
348          - i8
349          - i16
350          - i32
351      f32:
352        unknown: invalid
353        ok:
354          - f32
355        size:
356          - f64
357      f64:
358        unknown: invalid
359        ok:
360          - f32
361          - f64
362      i64:
363        unknown: invalid
364        ok:
365          - i64
366        sign:
367          - u64
368      u64:
369        unknown: invalid
370        ok:
371          - u64
372        sign:
373          - i64
374      reference:
375        _default: wrong_formal_param
376        unknown: invalid
377