//============================================================================ // 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: // // The terms of the closed source Quantum Leaps commercial licenses // can be found at: // // Redistributions in source code must retain this top-level comment block. // Plagiarizing this software to sidestep the license obligations is illegal. // // Contact information: // // //============================================================================ //! @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) -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_)