QP/C  7.3.4
Real-Time Embedded Framework
Loading...
Searching...
No Matches
options.lnt
Go to the documentation of this file.
1//============================================================================
2// QP/C Real-Time Embedded Framework (RTEF)
3// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
4//
5// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
6//
7// This software is dual-licensed under the terms of the open source GNU
8// General Public License version 3 (or any later version), or alternatively,
9// under the terms of one of the closed source Quantum Leaps commercial
10// licenses.
11//
12// The terms of the open source GNU General Public License version 3
13// can be found at: <www.gnu.org/licenses/gpl-3.0>
14//
15// The terms of the closed source Quantum Leaps commercial licenses
16// can be found at: <www.state-machine.com/licensing>
17//
18// Redistributions in source code must retain this top-level comment block.
19// Plagiarizing this software to sidestep the license obligations is illegal.
20//
21// Contact information:
22// <www.state-machine.com>
23// <info@state-machine.com>
24//============================================================================
25//! @date Last updated on: 2023-12-12
26//! @version Last updated for version: 7.3.1
27//!
28//! @file
29//! @brief PC-Lint-Plus option file for linting QP/C source code
30
31//============================================================================
32// general options
33-unit_check // perform only subset check (suppresses Global Wrapup)
34-max_threads=1 // suppress message "no '-max_threads=N' option"
35++efreeze(686) // never suppress (see PC-Lint-Plus in Safety-Critical)
36//-vf // print names of all source files (for debugging linting)
37
38// include directories
39-i. // QP/C port includes (see also qk/ and qv/)
40-i%QPC%/include // QP/C public includes
41
42// standards
43// language standard...
44au-misra4.lnt // MISRA-C:2023 (MC4) compliance
45
46// customized BARR-C:2018 style guidelines
47au-barr.lnt // BARR-C:2018 style guidelines
48-e8505 // suppress [Rule 6.1e] function contains uppercase letters
49-e8511 // suppress [Rule 7.1f] variable contains uppercase letters
50-e8512 // suppress [Rule 7.1j] global variable should have 'g' prefix
51-e8510 // suppress [Rule 7.1e] variable contains less than 3 characters
52-e8513 // suppress [Rule 7.1k] variable should have 'pp' prefix
53-e8514 // suppress [Rule 7.1l] variable should have 'p' prefix
54-e8515 // suppress [Rule 7.1m] boolean variable should have 'b' prefix
55-e8526 // suppress [Rule 5.1a] typedef name should consist of lowercase letters
56-e8527 // suppress [Rule 5.1a] typedef name should end with '_t' suffix
57-e9209 // suppress [Rule 5.2c] plain char data used with prohibited operator &
58-e8522 // suppress [Rule 8.6a] variable should appear on RHS of '==' operator
59
60au-ds.lnt // Dan Saks recommendations
61
62
63// size/alignment options
64cpu.lnt // for the chosen CPU
65
66// defined macros (might be undefined on command-line with -u<macro>)
67-dQ_SPY
68-dQ_UTEST
69
70//============================================================================
71// QP/C options for QP/C Applications
72qpc.lnt // QP/C options
73
74//============================================================================
75// additional suppression rules for building QP/C source code...
76
77// QEP -----------------------------------------------------------------------
78
79//! M4-D4.9(A) function-like macro
80//! @tr{DVP-QP-MC4-D04_09A}
81-esym(9026,
83
84//! M4-D4.9(A) function-like macro
85//! @tr{DVP-QP-MC4-D04_09B}
86-esym(9026,
87 QHSM_RESERVED_EVT_,
88 QS_STATE_ENTRY_,
89 QS_STATE_EXIT_)
90
91//! M4-R11.5(A) conversion from pointer to void to other pointer
92//! @tr{DVR-QP-MC4-R11_05}
93-emacro(9079,
95
96//! M4-R8.13(A) parameter of function could be pointer to const
97//! @tr{DVR-QP-MC4-R08_13}
98-efunc(818,
99 QMsm_isIn_)
100
101// QF ------------------------------------------------------------------------
102
103//! M4-D4.8(A) complete definition is unnecessary in this translation unit
104//! @tr{DVP-QP-MC4-D04_08}
105-efile(9045,
106 -qp_pkg.h)
107
108//! M4-D4.9(A) function-like macro
109//! @tr{DVP-QP-MC4-D04_09A}
110-esym(9026,
119 QF_ISR_CONTEXT_,
122
123//! M4-R8.13(A) parameter of function could be pointer to const
124//! @tr{DVR-QP-MC4-R08_13}
125-efunc(818,
126 QActive_start_)
127
128//! M4-R11.3(R) cast from pointer to object type
129//! @tr{DVP-QP-MC4-R11_03B}
130-emacro(9087,
132
133//! M4-R11.3(R) cast from pointer to object type
134//! @tr{DVP-QP-MC4-R11_03B}
135-efunc(9087,
136 QActive_ctor,
137 QMActive_ctor)
138
139//! M4-R11.4(A) conversion between object pointer type and integer type
140//! @tr{DVR-QP-MC4-R11_04}
141-emacro(9078,
143
144//! M4-R11.5(A) conversion from pointer to void to other pointer type
145//! @tr{DVR-QP-MC4-R11_05}
146-emacro(9079,
149-efunc(9079,
150 QF_bzero_,
151 QF_deleteRef_,
152 QMPool_get,
153 QMPool_put,
154 QMPool_init,
155 QTimeEvt_tick_,
156 QTimeEvt_armX,
157 QTimeEvt_rearm)
158
159//! M4-R11.8(R) cast drops const qualifier
160//! @tr{DVR-QP-MC4-R11_08}
161-emacro(9005,
163-efunc(9005,
164 QEvt_refCtr_inc_,
165 QEvt_refCtr_dec_,
166 QF_gc)
167
168//! M4-R15.5(A) return statement before end of function
169//! @tr{DVP-QS-MC4-R15_05}
170-efunc(904,
171 QActive_post_,
172 QActive_postLIFO_)
173
174//! M4-R18.3(R) relational operator <= applied to pointers
175//! @tr{DVR-QP-MC4-R18_03}
176-efunc(946,
177 QMPool_get,
178 QMPool_put)
179
180//! definition of macro ends in semicolon
181//! @tr{DVR-QP-PCLP-823}
182-esym(823,
185
186//! suspicious pointer-to-pointer conversion (area too small)
187//! @tr{DVP-QP-PCLP-826}
188-emacro(826,
190
191
192// QV ------------------------------------------------------------------------
193
194// QK ------------------------------------------------------------------------
195
196//! M4-D4.9(A) function-like macro
197//! @tr{DVP-QP-MC4-D04_09A}
198-esym(9026,
202
203// QXK -----------------------------------------------------------------------
204
205//! M4-D4.9(A) function-like macro
206//! @tr{DVP-QP-MC4-D04_09A}
207-esym(9026,
213
214//! M4-R11.3(R) cast from pointer to object type
215//! @tr{DVP-QP-MC4-R11_03B}
216-emacro(9087,
218
219//! M4-R11.3(R) cast from pointer to object type
220//! @tr{DVR-QP-MC4-R11_03C}
221-emacro(9087,
223
224//! M4-R11.5(A) conversion from pointer to void to other pointer type
225//! @tr{DVR-QP-MC4-R11_05}
226-emacro(9079,
228
229//! MC3-R8.13(A) could be pointer to const
230//! @tr{DVR-QP-MC4-R08_13}
231-efunc(818,
232 QXThread_init_,
233 QXThread_dispatch_,
234 QXThread_postLIFO_)
235
236//! @tr{DVP-QP-PCLP-826}
237-emacro(826,
240
241//! cast increases required alignment from 2 to 4
242//! @tr{DVR-QP-PCLP-2445}
243-emacro(2445,
245
246// QS ------------------------------------------------------------------------
247// the following options are needed only when Q_SPY is defined...
248
249//! M4-D4.9(A) function-like macro
250//! @tr{DVP-QS-MC4-D04_09A}
251-esym(9026,
252 QS_INSERT_BYTE_,
253 QS_INSERT_ESC_BYTE_,
254 QS_RX_TRAN_,
257
258//! M4-R8.13(A) parameter ... of function could be pointer to const
259//! @tr{DVR-QS-MC4-R08_13}
260-efunc(818,
261 QHsmDummy_init_,
262 QHsmDummy_dispatch_,
263 QActiveDummy_start_,
264 QActiveDummy_init_,
265 QActiveDummy_dispatch_)
266
267//! M4-R11.1(R) conversion between pointer to function and differing type
268//! @tr{DVP-QS-MC4-R11_01}
269-emacro(9074,
270 QS_FUN_PRE_)
271-efunc(9074,
272 QS_getTestProbe_)
273
274//! M4-R11.3(R) cast from pointer to object type
275//! @tr{DVR-QS-MC4-R11_03C}
276-efile(9087,
277 -qs_rx.c,
278 -qutest.c)
279
280//! M4-R11.4(A) conversion between object pointer type and integer type
281//! @tr{DVR-QS-MC4-R11_04}
282-emacro(9078,
283 QS_OBJ_PRE_,
284 QS_FUN_PRE_)
285-efunc(9078,
286 QS_rxHandleGoodFrame_,
287 QS_getTestProbe_)
288
289//! M4-R11.5(A) conversion from pointer to void to other pointer type
290//! @tr{DVR-QS-MC4-R11_05}
291-efile(9079,
292 -qs_rx.c,
293 -qutest.c)
294
295//! M4-R11.6(R) explicit cast from integer to 'void *'
296//! @tr{DVR-QS-MC4-R11_06}
297-emacro(923,
298 QS_OBJ_PRE_,
299 QS_FUN_PRE_)
300-efunc(923,
301 QS_rxHandleGoodFrame_,
302 QS_getTestProbe_)
303
304//! M4-R14.3(R) boolean condition for 'if' always evaluates to 'false'
305//! @tr{DVR-QS-MC4-R14_03}
306-emacro(774,
307 QS_BEGIN_PRE_)
308
309//! M4-R19.2(A) union declared
310//! @tr{DVR-QS-MC4-R19_02}
311-efunc(9018,
312 QS_target_info_pre_,
313 QS_f32_fmt_,
314 QS_f64_fmt_)
315
316//! constant value used in Boolean context (left operand to || operator)
317//! @tr{DVR-QS-PCLP-506}
318-emacro(506,
319 QS_BEGIN_PRE_)
320
321//! excessive shift value (precision 0 shifted right by ...)
322//! @tr{DVR-QS-PCLP-572}
323-emacro(572,
324 QS_BEGIN_PRE_)
325
326//! union initialization
327//! @tr{DVR-QS-PCLP-708}
328-efunc(708,
329 QS_f64_fmt_)
330
331//! union member not referenced
332//! @tr{DVR-QS-PCLP-754}
333-esym(754,
334 Variant::aFlt,
335 AFltVar::prio,
336 *U32Rep::u32)
337
338//! Constant expression evaluates to 0 in 'binary' operation '>>'
339//! @tr{DVR-QS-PCLP-778}
340-emacro(778,
341 QS_BEGIN_PRE_)
342
343//! suspicious pointer-to-pointer conversion (area too small)
344//! @tr{DVR-QS-PCLP-818}
345-efile(826,
346 -qs_rx.c,
347 -qutest.c)
348
349//! definition of macro ends in semicolon
350//! @tr{DVR-QS-PCLP-823}
351-esym(823,
353 QS_BEGIN_PRE_)
354
355//! the right operand to << always evaluates to 0
356//! @tr{DVR-QS-PCLP-845}
357-emacro(845,
358 QS_BEGIN_PRE_)
359
360//! cast increases required alignment
361//! @tr{DVP-QS-PCLP-2445}
362-efunc(2445,
363 QS_rxHandleGoodFrame_,
364 QS_rxPoke_)
365
#define QF_SCHED_LOCK_(ceil_)
Definition qk.h:149
#define QF_SCHED_UNLOCK_()
Definition qk.h:158
#define QF_SCHED_STAT_
Definition qk.h:146
#define QF_EPOOL_GET_(p_, e_, m_, qsId_)
Definition qk.h:207
#define QF_MPOOL_EL(evType_)
Definition qmpool.h:73
#define Q_EVT_CAST(class_)
Definition qp.h:523
#define QACTIVE_CAST_(ptr_)
Definition qp_pkg.h:96
#define Q_UINTPTR_CAST_(ptr_)
Definition qp_pkg.h:97
#define QK_ISR_EXIT()
Definition qp_port.h:117
#define QXK_ISR_CONTEXT_()
Check if the code executes in the ISR context.
Definition qp_port.h:131
#define QK_ISR_CONTEXT_()
Definition qp_port.h:105
#define QXK_CONTEXT_SWITCH_()
Trigger context switch (used internally in QXK only)
Definition qp_port.h:134
#define QK_ISR_ENTRY()
Definition qp_port.h:108
#define QS_CRIT_STAT
Definition qs.h:568
#define QS_CRIT_EXIT()
Definition qs.h:578
#define QS_CRIT_ENTRY()
Definition qs.h:573
#define QF_CRIT_ENTRY()
Definition qsafe.h:58
#define Q_ASSERT_INCRIT(id_, expr_)
Definition qsafe.h:72
#define Q_ENSURE_INCRIT(id_, expr_)
Definition qsafe.h:145
#define QF_CRIT_EXIT()
Definition qsafe.h:62
#define Q_REQUIRE_INCRIT(id_, expr_)
Definition qsafe.h:136
#define Q_ERROR_INCRIT(id_)
Definition qsafe.h:76
#define QF_CRIT_STAT
Definition qsafe.h:54
#define QXTHREAD_EQUEUE_SIGNAL_(me_)
Definition qxk.h:337
#define QXTHREAD_CAST_(ptr_)
Definition qxk.h:366
#define QXK_PTR_CAST_(type_, ptr_)
Definition qxk.h:363