qpcpp/ports/lint-plus2/options.lnt

407 lines
9.6 KiB
Plaintext
Raw Normal View History

2024-04-24 09:13:46 -04:00
//============================================================================
// QP/C Real-Time Embedded Framework (RTEF)
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
//
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial
//
// This software is dual-licensed under the terms of the open source GNU
// General Public License version 3 (or any later version), or alternatively,
// under the terms of one of the closed source Quantum Leaps commercial
// licenses.
//
// The terms of the open source GNU General Public License version 3
// can be found at: <www.gnu.org/licenses/gpl-3.0>
//
// The terms of the closed source Quantum Leaps commercial licenses
// can be found at: <www.state-machine.com/licensing>
//
// Redistributions in source code must retain this top-level comment block.
// Plagiarizing this software to sidestep the license obligations is illegal.
//
// Contact information:
// <www.state-machine.com>
// <info@state-machine.com>
//============================================================================
//! @date Last updated on: 2024-05-01
//! @version Last updated for version: 7.3.4
//!
//! @file
//! @brief PC-Lint-Plus option file for linting QP/C++ source code
//============================================================================
// general options
-unit_check // perform only subset check (suppresses Global Wrapup)
-max_threads=1 // suppress message "no '-max_threads=N' option"
++efreeze(686) // never suppress (see PC-Lint-Plus in Safety-Critical)
//-vf // print names of all source files (for debugging linting)
// include directories
-i%PCLP%/lnt // PC-Lint-Plus standard .lnt files
-i. // QP/C++ port includes (see also qk/ and qv/)
-i%QPCPP%/include // QP/C++ public includes
// standards
au-autosar.lnt // AUTOSAR:C++14
au-ds.lnt // Dan Saks recommendations
cpu.lnt // size/alignment options for the chosen CPU
// defined macros (might be undefined on command-line with -u<macro>)
-dQ_SPY
-dQ_UTEST
//============================================================================
// QP/C++ options for clients
qpcpp.lnt // QP/C++ options
//============================================================================
// additional suppression rules for building QP/C source code...
// general suppression for now...
// preprocessor directive ... is deprecated. [AUTOSAR Rule A16-0-1]
-e586
// preprocessor directive encountered in conditionally excluded region
// [AUTOSAR Rule A16-0-1], [AUTOSAR Rule A16-6-1]
-e886
// friend ... in class
-e9435
// symbol ... has array type
-e9436
// enum ... is not a scoped enumeration [AUTOSAR Rule A7-2-3]
-e9419
// QEP -----------------------------------------------------------------------
//! MC++R16-0-4 function-like macro ???
-esym(9026,
Q_ASSERT_INCRIT,
Q_REQUIRE_INCRIT,
Q_ENSURE_INCRIT,
Q_INVARIANT_INCRIT,
Q_ERROR_INCRIT)
//! M4-D4.9(A) function-like macro
//! @tr{DVP-QP-MC4-D04_09B}
-esym(9026,
QHSM_RESERVED_EVT_,
QS_STATE_ENTRY_,
QS_STATE_EXIT_)
// implicit conversion of enum 'QP::QAsm::QStateRet' to integral type
-esym(641,
QP::QAsm::QStateRet)
// MC++R7-1-2 parameter of function could be pointer to const
-esym(818,
QP::QHsm::top)
// QF ------------------------------------------------------------------------
// MC++R16-0-4 function-like macro
-esym(9026,
QF_CRIT_ENTRY,
QF_CRIT_EXIT,
QF_MEM_SYS,
QF_MEM_APP,
QF_CONST_CAST_,
QF_SCHED_LOCK_,
QF_SCHED_UNLOCK_,
QF_PTR_RANGE_,
QF_MPOOL_EL,
Q_ACTION_CAST,
QTICKER_CAST_)
// MC++R16-0-4 function-like macro
-esym(9026,
QACTIVE_EQUEUE_WAIT_,
QACTIVE_EQUEUE_SIGNAL_,
QF_EPOOL_INIT_,
QF_EPOOL_EVENT_SIZE_,
QF_EPOOL_GET_,
QF_EPOOL_PUT_)
// MC++R10-0-6 unparenthesized macro parameter in definition of macro
-esym(9022,
QF_CONST_CAST_)
// [AUTOSAR Rule A5-2-3] cast drops const qualifier
-emacro(9005,
QF_CONST_CAST_)
// M3-R11.3(r) cast from pointer to object type
-emacro(9087,
QTICKER_CAST_)
// suspicious pointer-to-pointer conversion (area too small)
-emacro(826,
QTICKER_CAST_)
// AC++M5-2-9 casting from pointer type to integer type
-emacro(9091,
Q_UINTPTR_CAST_)
// [AC++M12-1-1] non-static data member not initialized by ctor
-esym(1401,
QP::QEvt::*,
QP::QActive::*)
// definition of macro ends in semi-colon
-esym(823,
QF_SCHED_STAT_)
// MC++5-2-8 conversion from integer type (0) to pointer type
-emacro(9010,
Q_ACTION_CAST)
// M3-R11.8(r) cast drops const qualifier
-emacro(9005,
QF_EPOOL_PUT_)
// M3-D11.5(a) conversion from pointer to void to other pointer type
-efunc(9079,
QF_bzero)
// M3-R17.8(a) function parameter modified
-efunc(9044,
QF_LOG2,
QMPool_init)
// M3-R18.1(r) potential out of bounds pointer access
-emacro(661,
QF_EPOOL_EVENT_SIZE_)
// AR-M5-2-8 conversion from pointer to void to other pointer type
-emacro(9079,
QF_EPOOL_GET_)
// M3-R18.3(r) relational operator <= applied to pointers
-emacro(946,
QF_PTR_RANGE_)
// M3-R8.13(a) parameter of function could be pointer to const
-efunc(818,
QP::QActive::start,
QP::QTicker::postLIFO)
// MC++R0-1-1 statement is unreachable due to unconditional transfer
// of control (assertion)
//-efunc(527,
// QP::QMActive::isIn,
// QP::QMActive::state,
// QP::QMActive::childState)
// MC++R7-1-1 parameter of function could be declared const
-esym(952,
QP::QEQueue::init)
// AC++M5-2-3: downcast of polymorphic type
-efunc(9171,
QP::QActive::post_,
QP::QActive::postLIFO)
// BARR-C:2018 R 6.2c return statement before end of function
-efunc(904,
QP::QActive::post_,
QP::QActive::postLIFO)
// [AC++M5-2-2]: casting from base class to derived class (QP::QActiveDummy)
-efunc(1939,
QP::QActive::post_,
QP::QActive::postLIFO)
// PCLP-1731: public virtual function (in a class without virtual destructor)
-esym(1731,
QP::QTicker::*)
// PCLP-1933: call to unqualified virtual function from non-static member function
-efunc(1933,
QP::QActive::start)
// PCLP-9079:
-efunc(9079,
QP::QF::bzero_,
QP::QTimeEvt::armX,
QP::QTimeEvt::disarm,
QP::QTimeEvt::rearm,
QP::QMPool::init,
QP::QMPool::get,
QP::QMPool::put)
// QV ------------------------------------------------------------------------
// MC++R16-0-4 function-like macro
-esym(9026,
QV_CPU_SLEEP)
// QK ------------------------------------------------------------------------
// MC++R16-0-4 function-like macro
-esym(9026,
QK_ISR_CONTEXT_,
QK_ISR_ENTRY,
QK_ISR_EXIT)
// QXK -----------------------------------------------------------------------
// MC++R16-0-4 function-like macro
-esym(9026,
QXK_ISR_CONTEXT_,
QXK_CONTEXT_SWITCH_,
QXK_PTR_CAST_,
QXTHREAD_CAST_,
QXTHREAD_EQUEUE_SIGNAL_)
// MC++R10-0-6 unparenthesized macro parameter in definition of macro
-esym(9022,
QXK_PTR_CAST_)
// MC++R5-2-7 pointer type converted to unrelated pointer
-emacro(9176,
Q_STATE_CAST)
// M3-R11.3(r) cast to pointer to different object type
//-emacro(9087,
// QXK_PTR_CAST_,
// QXTHREAD_CAST_)
// MC++R5-2-7 pointer type converted to unrelated pointer type
-emacro(9176,
QXK_PTR_CAST_)
// MC++R5-2-3 downcast of polymorphic type ... to type ...
-emacro(9171,
QXK_PTR_CAST_)
// casting from base class 'QP::QActive' to derived class
-emacro(1939,
QXK_PTR_CAST_)
// suspicious pointer-to-pointer conversion (area too small)
-emacro(826,
QXK_PTR_CAST_,
QXTHREAD_CAST_)
// QS ------------------------------------------------------------------------
// the following options are needed only when Q_SPY is defined
// MC++R16-0-4 function-like macro
-esym(9026,
QS_CRIT_ENTRY,
QS_CRIT_EXIT,
QS_MEM_SYS,
QS_MEM_APP,
QS_PTR_AT_,
QS_PTR_INC_,
QS_INSERT_BYTE_,
QS_INSERT_ESC_BYTE_,
QS_REC_NUM_)
// M3-R14.3(r) boolean condition for 'if' always evaluates to 'false'
-emacro(774,,
QS_INSERT_BYTE_,
QS_INSERT_ESC_BYTE_,
QS_BEGIN_PRE_,
QS_BEGIN_PRE_)
// the right operand to << always evaluates to 0
-emacro(845,
QS_BEGIN_PRE_,
QS_BEGIN_PRE_)
// excessive shift value (precision 3 shifted right by 3)
-emacro(572,
QS_BEGIN_PRE_,
QS_BEGIN_PRE_)
// constant expression evaluates to 0 in 'binary' operation '>>'
-emacro(778,
QS_BEGIN_PRE_,
QS_BEGIN_PRE_)
// constant value used in Boolean context
-emacro(506,
QS_BEGIN_PRE_,
QS_BEGIN_PRE_)
// bitwise operator '>>' applied to signed underlying type [AS-M5-0-21]
-emacro(9130,
QS_BEGIN_PRE_,
QS_BEGIN_PRE_)
// use of c-style cast to void [AS-A5-2-2]
-emacro(1954,
QS_END_PRE_)
// MC++R0-1-9 operator == always evaluates to true
-emacro(948,
QS_BEGIN_PRE_)
// MC++R0-1-1, MC++R0-1-2, MC++R0-1-9
// left operand to '||' always evaluates to 'true'
-emacro(944,
QS_BEGIN_PRE_)
// MC++R5-2-9 casting from pointer type to integer type
-emacro(9091,
QS_OBJ_PRE_,
QS_FUN_PRE_)
// M3-R11.6(r) explicit cast from 'void *volatile' to 'uint32_t'
//-emacro(923,
// QS_OBJ_PRE_,
// QS_FUN_PRE_)
// M3-R11.1(4) conversion between pointer to function and differing type
//-emacro(9074,
// QS_FUN_PRE_)
// definition of macro ends in semi-colon
-esym(823,
QS_CRIT_STAT,
QS_BEGIN_PRE_)
// union initialization
-efunc(708,
QS_f64_fmt_)
// M3-R19.2(a) union declared
-efunc(9018,
QS_f32_fmt_,
QS_f64_fmt_)
// MC++R10-0-6 unparenthesized macro parameter in definition of macro
-esym(9022,
QS_TEST_PROBE,
QS_TEST_PROBE_ID)
// AR M5-0-10 the result of the ~ operator applied to an object with an
// underlying type of 'unsigned char' must be cast to 'unsigned char'
// in this context
-efunc(9126,
QP::QS::glbFilter_,
QP::QS::locFilter_)
// don't report problems within QS_target_info_() function
-efunc(9130,
QP::QS_target_info_)
-efunc(9114,
QP::QS_target_info_)
-efunc(9117,
QP::QS_target_info_)
-efunc(9125,
QP::QS_target_info_)
-efunc(9112,
QP::QS_target_info_)
-efunc(9128,
QP::QS_target_info_)
-efunc(737,
QP::QS_target_info_)