PC-lint Plus 2025 SP1 introduces many refinements and several new features including:
|
|
| PCLP-2062
PCLP-2676 | Add new messages 2422 and 2722 to support MISRA C:2025 Rule 21.21 The new messages 2422 (use of likely stale pointer from function) and 2722 (use of
potentially stale pointer from function) are issued when a pointer, which was returned
from an earlier function that returns a pointer to a static object, is used. This supports
MISRA C 2012 AMD-1 Rule 21.20, MISRA C:2023 Rule 21.20, MISRA C:2025 Rule
21.21, and CERT C ENV34-C. The new semantic option static_return_ptr lets users
annotate their own functions that could return a pointer to a static object. |
| PCLP-2808 | New tagged suppressions feature Suppression options may now include user-defined tags which will be included in
Diagnostic Accounting output and may be employed to support coding guideline
deviation rationale for auditing purposes. See the Option Tags for more information. |
| PCLP-3525 | Add message 1958 to support AUTOSAR Rule A18-1-6 The new message 1958 (call operator in std::hash specialization is not declared
noexcept) implements support for AUTOSAR Rule A18-1-6. |
| PCLP-4104 | Add message 9201 to support AUTOSAR Rule A5-1-1 The new message 9201 (literal value used outside of type initialization) reports when
a literal value is used except for initializing a type. This supports AUTOSAR Rule
A5-1-1. |
| PCLP-4113 | Added new message 2906 and improved 2706 to support AUTOSAR
A7-2-1 Message 2706 (value not in enum) has been updated with more descriptive message
text and Value Tracking support to increase situations covered by the message. New
message 2906 (type not in enum) has been added for all other situations and will note
where the type used for assignment has a range which contains values not represented
in the enumeration being assigned to. |
| PCLP-4138 | Support AUTOSAR Rule A13-2-2 with new message 9143 The new message 9143 (overloaded binary operator
returns pointer/reference/qualified/qualified pointer type) now provides support for
AUTOSAR Rule A13-2-2. This applies to both AUTOSAR17 and AUTOSAR19. |
| PCLP-4187 | Added new fsb flag option The new fsb flag option can now be used to toggle whether message 9041 (goto not
nested in the same block as label) treats switch case bodies which are not enclosed by
a compound statement as blocks. By default, 9041 does consider switch case bodies
not enclosed by a compound statement as blocks. |
| PCLP-4789 | Add option to output call graph A call graph represents functions and their relationships to each other through
function calls. A new option +call_graph has been added to output the call graph
as part of analysis in the Graphviz DOT language. For more information see the
Call Graph section for more details about this functionality. As part of this feature
the names of functions in a stack analysis report may be slightly different and more
detailed than before. |
| PCLP-4839 | Add new message 9480 to support MISRA C++:2023 Rule 0.2.4 The new message 9480 (function with limited visibility is unused) implements MISRA
C++:2023 Rule 0.2.4. |
| PCLP-4845 | Message 2710 added to support MISRA C++:2023 Rule 6.0.1 The new message 2710 (redundant parentheses surrounding declarator) was added to
support MISRA C++:2023 Rule 6.0.1, which states object declarations surrounded by
redundant parentheses are not compliant. |
| PCLP-4846 | Add new message 9481 to support MISRA C++:2023 Rule 6.5.2 The new message 9481 (symbol with internal linkage declared static/extern) reports
when an identifier with internal linkage is declared static or extern. This implements
MISRA C++:2023 Rule 6.5.2. |
| PCLP-4848 | Added new message 9283 and 9284 for non-constexpr global variables to
support MISRA C++:2023 Rule 6.7.2 The new message 9283 (non-constexpr global variable explicitly initialized) is issued
when a global variable is explicitly initialized that is not constexpr or qualified with
const and a static-initialization initializer. The new message 9284 (non-constexpr
global variable used) is issued when a global variable is referenced that is not
constexpr or qualified with const and a static-initialization initializer. |
| PCLP-4854 | Added new message 9490 to fully support MISRA C++:2023 Rule 7.0.3 Previously, no support mechanism existed for MISRA C++:2023 Rule 7.0.3. The new
message 9490(conversion to/from character category type) provides full support for
this rule. |
| PCLP-4855 | Add new message 9477 to support MISRA C++:2023 Rule 8.1.1 The new message 9477 (non-transient lambda implicitly captures ’this’) reports when
a lambda which may not be immediately discarded implicitly captures the this
pointer. This implements MISRA C++:2023 Rule 8.1.1. |
| PCLP-4856 | Add new message 9478 to MISRA C++:2023 Rule 8.1.2 The new message 9478 (non-transient lambda implicitly captures a variable) reports
when a lambda which may not be immediately discarded captures variables implicitly.
This implements MISRA C++:2023 Rule 8.1.2. |
| PCLP-4858 | New message 9286 supports MISRA C++:2023 Rule 8.2.6 The new message 9286 (cast from int/enum/void* to pointer type) is issued when an
explicit cast converts from an integral, enumerated, or pointer to void to a pointer
type. |
| PCLP-4868 | Add new messages 9261 and 9262 to support MISRA C++:2023 Rule 19.0.4 The new messages 9261 (#undef for macro references a macro defined in a different
file) and 9262 (#undef used for an undefined macro) report when an #undef directive
is encountered which undefines a macro which is defined in another file or does not
have an active definition. This implements MISRA C++:2023 Rule 19.0.4. |
| PCLP-4873 | Added new message 9274 to fully support MISRA C++:2023 Rule 6.4.2 Previously, no support mechanism existed for MISRA C++:2023 Rule 6.4.2. The new
message 9274 (derived function/variable conceals base function) provides full support
for the rule. |
| PCLP-4874 | Added new message 9269 to fully support MISRA C++:2023 Rule 9.2.1 Previously, no support mechanism existed for MISRA C++:2023 Rule 9.2.1. The new
message 9269 provides support for the Rule. |
| PCLP-4875 | Added new message 9270 to fully support MISRA C++:2023 Rule 9.4.2 Previously, no support mechanism existed for MISRA C++:2023 Rule 9.4.2. The new
message 9270 provides support for the Rule. |
| PCLP-4876 | Added new message 9486 to fully support MISRA C++:2023 Rule 13.3.4 Previously, no support mechanism existed for MISRA C++:2023 Rule 13.3.4. The new
message 9486(potentially virtual pointer to member function should only be compared
to nullptr) provides full support for this rule. |
| PCLP-4878 | Add new message 3718 to support MISRA C++:2023 Rule 28.6.4. The new message 3718 (ignoring return value of std::remove / std::remove_if
/ std::unique / std::empty / std::unique_ptr::release) implements MISRA
C++:2023 Rule 28.6.4. |
| PCLP-4883 | Add new messages 9484 and 9485 to support MISRA C++:2023 Rule 15.1.4 The new messages 9484 (data member without an initializer is absent from initializer
list for constructor) and 9485 (object definition of aggregate class type lacks explicit
initialization for data member) report when a non-static data member is uninitialized
but accessible. This implements MISRA C++:2023 Rule 15.1.4. |
| PCLP-4885 | Added new message 9268 to fully support MISRA C++:2023 Rule 7.0.2 Previously, messages 909 (implicit boolean conversion), 1564 (converting integer
constant expression to bool), and 1786 (implicit conversion to Boolean) were used as
partial support mechanisms for MISRA C++:2023 Rule 7.0.2. To provide full support
for this rule, these have been replaced by new message 9268 (type was converted to
bool). |
| PCLP-4909 | Added new message 9280 to fully support MISRA C++:2023 Rule 21.6.3 Previously, no support mechanism exited for MISRA C++:2023 Rule 21.6.3. The new
message 9280 (advanced memory management function used) provides full support
for the rule. |
| PCLP-5297 | New message 9285 improves support for MISRA C++:2023 Rule 8.2.4 The new message 9285 (cast between pointer to member and differing type) is issued
when a conversion takes place between a pointer to member and a differing type. |
| PCLP-5355 | Added support for MISRA C++:2023 Rule 8.20.1 Message 2421 (evaluation of constant-expression results in unsigned wrap-around)
was added as a partial support mechanism for MISRA C++:2023 Rule 8.20.1. |
| PCLP-5356 | Add new message 9492 to support MISRA C++:2023 Rule 15.1.5 Previously, no support mechanism existed for MISRA C++:2023 Rule 15.1.5. The
new message 9492 (record defines constructors other than initializer list constructor)
provides full support for the Rule. |
| PCLP-5360 | Add message 9289 for using the raw pointer constructor of a smart pointer
to support MISRA C++:2023 Rule 23.11.1 The new message 9289 (raw pointer constructor of smart pointer used) is emitted
when a std::shared_ptr or std::unique_ptr is constructed with a pointer type
that isn’t a smart pointer or std::nullptr_t. |
| PCLP-5361 | Add support for MISRA C++:2023 Rule 22.3.1 Support for MISRA C++:2023 Rule 22.3.1 has been added using existing message 2960
(integer constant expression provided to function), as well as an +equery. |
| PCLP-5397 | Added built-in LINT_PRETTY_VERSION environment variable The built-in environment variable LINT_PRETTY_VERSION will now expand to a string
which represents the version of PC-lint Plus to be used for printing and logging. |
| |
|
|
| PCLP-835 | Improve support for MISRA C 2004 Rule 16.5 and MISRA C
2012/2023/2025 Rule 8.2 Previously, support mechanisms for MISRA C 2004 Rule 16.5 and MISRA C
2012/2023/2025 Rule 8.2 did not report function types with empty parameter lists
that did not use the void keyword, nor function pointer types with un-named
parameters. To account for this, 9489 (empty parameter list does not use void
keyword) was added as a support mechanism while the scope of 955 (param name
missing from prototype) was expanded to report function pointer types. The last
parameter of message 955 was changed from Symbol to Type. This may affect existing
suppression options. |
| PCLP-3004 | Message 1506 now reports the status of sub-objects within data members
of class type Message 1506 now reports sub-objects of class type that are not initialized by an
initializer function. |
| PCLP-3339 | Improve support for MISRA C++:2008 Rule 0-1-7 The exception for overloaded operator functions for MISRA C++:2008 Rule 0-1-7 is
now honored by enabling message 534 (ignoring return value of function) only for
non-overloaded operator functions in au-misra-cpp.lnt. |
| PCLP-3445 | Message 647 no longer emits when int and long have the same size Previously, message 647 (possible truncation before cast) reported operations of int
type which were subsequently cast to a long when int and long were the same size.
Given both types have the same number of available bits, casting from one to the
other does not avoid the possible information loss that message 647 seeks to warn
against. This defect has been resolved, and the message no longer reports when int
and long have the same size. |
| PCLP-3674 | Improved support for MISRA C++ 2008 Rule 17-0-2 Support for MISRA C++ 2008 Rule 17-0-2 now includes message 9071 (defined macro
is reserved to the compiler). |
| PCLP-3736 | Messages 1401 and 1541 now reports data members of class type which
have uninitialized fields Message 1401 (non-static data member not initialized by constructor) and 1541
(non-static data member possibly not initialized by constructor) now reports data
members of class types which have uninitialized fields. |
| PCLP-3881 | Message 2650 no longer issued for redundant compound comparisons Message 2650 (constant out of range for portion of compound comparison operator)
is no longer issued for comparisons of greater than or equal to the minimum value, or
less than or equal to the maximum value. Such comparisons are redundant but this
is reported by message 587 (predicate can be pre-determined and always evaluates to
true). |
| PCLP-3948 | Initializers must be exactly 0 to be exempt from 9068, 9069, and 9034 Previously, messages 9068 (partial array initialization), 9069 (aggregate initializers
needs braces or designator), and 9034 (cannot assign essential type to
narrower/different essential type) excused forms of the initializer 0 such as 00, 0U and
0L. Now, only 0 (with arbitrary whitespace permitted) will be excused. |
| PCLP-4121 | Add new message 3906 to support AUTOSAR Rule A8-4-7 The new message 3906 (parameter of function should be passed by const
value/reference) reports when a referenced and unmodified function parameter is
passed by reference but is trivially copyable and not longer than two words. It also
reports when the function parameter is longer than two words and is passed by value.
This message supports AUTOSAR Rule A8-4-7. |
| PCLP-4629 | Output Internal Errors in more fatally exiting scenarios Previously in some situations where PC-lint Plus reached an erroneous internal state
and needed to fatally exit, a vague error message would be printed rather than an
Internal Error message. Now most, if not all, fatal exits due to erroneous internal
state should emit an Internal Error. |
| PCLP-4718 | New instructions for integrating PC-lint Plus with the Sublime Text 3
IDE. The Sublime IDE is now included among the list of IDEs with PC-lint Plus integration
instructions in the Reference Manual. |
| PCLP-4812 | Reminder message added to install pyyaml and regex for pclp_config Previously the pclp_config.py script would exit with an exception traceback if the
prerequisite modules haven’t been installed. Now a message will be printed before
that traceback to remind the user to install those modules. |
| PCLP-4867 | Add new messages 9472, 9473, 9474, and 9475 to support MISRA C++:2023
Rule 18.4.1 The new messages 9472 (exception-unfriendly function it not noexcept), 9473
(function pointer argument is not noexcept), 9274 (copy constructor for thrown class
is not noexcept), and 9275 (initializer for global variable is not noexcept) report when
potentially-throwing functions may be used in a context where exceptions are not
expected or handled. This implements MISRA C++:2023 Rule 18.4.1. |
| PCLP-4882 | Add new messages 1980, 1981, 1982, 1983, 1984, and 1985 to support
MISRA C++:2023 Rule 15.0.1 The new messages 1980 (special member function for class is defined in a different
file than the destructor, copy operations, or move operations), 1981 (class is not
categorized as unmovable, move-only, or copy-enabled), 1982 (class with customized
copy or move operations lacks a customized destructor), 1983 (customized destructor
is empty), 1984 (move-only / copy-enabled class has customized destructor but lacks
customized copy or move operations), and 1985 (public base of class lacks a (public
virtual / protected non-virtual) destructor) report when special member functions are
not appropriately provided. This implements MISRA C++:2023 Rule 15.0.1. |
| PCLP-4933 | Remove reference to unsupplied boost.lnt file A reference to the unsupplied boost.lnt file was removed from the documentation. |
| PCLP-4936 | Improved support for AUTOSAR Rules A17-0-1 and M17-0-2 AUTOSAR Rules A17-0-1 and M17-0-2 are now supported by messages 9052 (macro
defined with the same name as a C++ keyword), 9071 (defined macro is reserved to
the compiler), and 9093 (the name is reserved to the compiler) where previously, both
rules were only supported by message 9093. |
| PCLP-5026 | Message 2405 now reports usage of assignment-suppressing character with
n conversion specifier Message 2405 (field width/precision/assignment-suppressing character used with
conversion specifier is undefined) previously only reported field widths and precisions
used with inappropriate conversion specifiers as undefined behavior. For scanf
and alike functions, the use of the assignment-suppressing character (*) with the
conversion specifier n also results in undefined behavior. The message has been
updated to also report this. |
| PCLP-5086 | Improvements to message 9005 Message 9005 (cast drops qualifier) now reports casts between reference types and
reports casts that lose the _Atomic qualifier. MISRA C:2023 Rule 11.8 is now fully
supported. |
| PCLP-5105 | Updated message 9058 behavior Previously, message 9058 (tag unused outside of typedefs), a support mechanism for
MISRA C 2012/2023/2025 Rule 2.4, did not consider re-declarations of tag types
outside of a typedef as a "use". Elaborations on Rule 2.4 from MISRA prompted an
update to the implementation of this message. Now, 9058 will not emit for tag types
declared in typedefs that also have a declaration outside of the typedef. |
| PCLP-5155 | Prevent errors when including the xkeycheck.h header for Green Hills
compilers Green Hills compiler configurations generated with pclp_config will now include the
option -d_XKEYCHECK_H which prevents xkeycheck.h from producing an error for the
asm macro included in the generated configuration file. |
| PCLP-5172 | Better support for TI CSS compilers Previously including "iso646.h" caused message ?? to be emitted. This has been
resolved. Added support for additional built-in TI CSS functions, objects, and
keywords. |
| PCLP-5223 | Improved support mechanism for MISRA C++:2023 Rule 6.9.2 Previously, the support mechanism for MISRA C++:2023 Rule 6.9.2 did not exempt
types such as float and char, causing a mismatch between the specifications of the
Rule and the behavior of the support mechanism. This defect has been resolved via
an updated support mechanism. |
| PCLP-5227 | Changed the behavior of -append to allow use of empty name parameters Previously, the -append option interpreted options specifying an empty name for a
particular message number as interchangeable with the generic form of the option.
That is, -append(586(""), Append Text) was the same as -append(586, Append
Text). Now, the former option ensures only emissions of 586 (deprecated entity used)
which have an empty name as part of the Lint output are appended to. |
| PCLP-5240 | Resolved 901 false positives for loop variables of range-based for loops Previously, 901 (variable not initialized by definition) falsely reported loop variables
of range-based for loops as uninitialized. This defect has been resolved. |
| PCLP-5242 | Use of AUTOSAR guideline headline text AUTOSAR C++ coding guideline headline text is now included in AUTOSAR
configuration files and relevant support statements appearing in message descriptions. |
| PCLP-5243 | Use of MISRA C:2025 guideline headline text The previous use of copyrighted MISRA guideline headline text in MISRA
configuration files, and relevant support statements appearing in message descriptions,
is expanded to include MISRA C:2025. |
| PCLP-5254 | Message 977 no longer emitted for binary logical operator expressions in
C code Previously, message 977 (non-literal non-Boolean assigned to Boolean) did not treat
binary logical operator expressions (&& and ||) as having boolean type when found
in C code, thereby causing an emission of the message. This defect has been resolved. |
| PCLP-5257 | Improve the location reported by message 9042 in certain situations When message 9042 (departure from MISRA switch syntax) reports on switch cases
that contain a break or throw that is not the last statement in the switch case, the
location of the last statement in the switch case is pointed to instead of the location
of a previous break. |
| PCLP-5262 | Better support the Green Hills Software compilers Previously including the "math.h" header could cause ?? to be emitted and header
"xstring" could cause ?? to be emitted. Improved support for built-in functions, data
types, and keywords. |
| PCLP-5273 | Message 647 now reports multiplication and bitwise complement, does not
report operations which cannot result in truncation Previously, message 647 (possible truncation before cast) claimed to report
multiplication and bitwise complementation, but did not. It also reported operations
which verifiably did not result in truncation before the cast. These defects have been
resolved. |
| PCLP-5279 | Corrected support for Keil compiler built-ins and keywords Previously __align and __at were recognized incorrectly as keywords and _fabsf()
was incorrectly recognized as a built-in function which could cause a conflict with
some of the standard header files. These issues have been resolved. |
| PCLP-5280 | Update message 1806 based on new interpretation of MISRA C++:2023
Rule 6.8.4 Message 1806 (member function returning reference to its object is not ref-qualified
appropriately) is no longer issued for methods which return a pointer subobject. |
| PCLP-5295 | Better support for Keil compilers Previously when generating a Keil compiler configuration file, a file ("a.out") generated
by the compiler may be left behind. Also, when the libcxx ’new’ header was include
error message ?? may be emitted. Support for additional compiler keywords is
provided. |
| PCLP-5318 | Message 9441 no longer emits for dependent classes, does emit for violating
class instantiations Message 9441 (non-final class has a public non-virtual destructor) now reports on
class template instantiations and no longer reports on dependent classes. |
| PCLP-5323 | New instructions for integrating PC-lint Plus with the Code Composer
Studio IDE. The CCS IDE now has its own section among the list of supported IDEs. This section
includes instructions for integrating PC-lint Plus into the CCS IDE version 20.0.0
and later. |
| PCLP-5325
PCLP-5405 | Support for Microsoft Visual Studio 2026 pclp_config now supports the Microsoft Visual Studio compilers as vs2026 and
vs2026_64. |
| PCLP-5327 | Support Microsoft STL changes Recent versions of Microsoft’s STL (Standard Template Library) depend upon the
__builtin_coro_noop() built-in function. Support for this function has been added. |
| PCLP-5330 | Improve support for MISRA C++:2023 Rule 8.2.5 The detail of exception 1 for MISRA C++:2023 Rule 8.2.5 which states the approved
types may be cv-qualified is now honored via an update to the +equery option
providing support for the Rule in au-misra-cpp2.lnt. |
| PCLP-5335 | Added several new Query functions The following new Query functions are
now available: RecordDecl::isOrContainsStruct, ASTType::getDesugaredType,
ASTType::getSingleStepDesugaredType,
AbstractConditionalOperator::getCond,
AbstractConditionalOperator::getTrueExpr,
AbstractConditionalOperator::getFalseExpr,
Expr::ignoreUnlessSpelledInSource, CastExpr::getSubExprAsWritten, and
Stmt::stripLabelLikeStatements. |
| PCLP-5343 | Handle C++26 feature test macros All C++26 feature test macros are recognized by pclp_config when generating the
compiler configuration header file. |
| PCLP-5350 | Support the __is_layout_compatible and
__is_pointer_interconvertible_base_of intrinsic functions The __is_layout_compatible and __is_pointer_interconvertible_base_of
intrinsic functions are now recognized by PC-lint
Plus which supports Microsoft’s implementation of std::is_layout_compatible()
and std::is_pointer_interconvertible_base_of(). |
| PCLP-5354 | Enable messages 454 and 2507 to support MISRA C++:2023 Rule 8.18.1. The existing messages 464 (buffer arguments in call to function overlap) and
2507 (assignment between overlapping objects is not well defined) are enabled in
au-misra-cpp2.lnt to provide partial support for MISRA C++:2023 Rule 8.18.1. |
| PCLP-5358 | Enable messages 2422 and 2722 to support MISRA C++:2023 Rule 25.5.3. The existing messages 2422 (use of likely stale pointer from function) and 2722 (use of
potentially stale pointer from function) are enabled in au-misra-cpp2.lnt to support
MISRA C++:2023 Rule 25.5.3. |
| PCLP-5362 | Enable 2721 and 9223 for MISRA C++:2023 Rule 25.5.2 Messages 2721 (pointer returned from function, whose value should not be modified, is
assigned to pointer to non-const) and 9223 (value is modified using a pointer member
of a const-qualified base) are enabled to provide partial support for MISRA C++:2023
Rule 25.5.2. |
| PCLP-5369 | Add getSubExpr Query function for a UnaryOperator A new Query function has been added to allow access to the operand expression of a
UnaryOperator, UnaryOperator::getSubExpr. |
| PCLP-5370 | Disable the interpretation of ! as a separator for equery options Previously an exclamation point ! was interpreted as a separator of option arguments
when used within an -equery or +equery option. This overrode the meaning of the
! as a negation within the query language. Now the ! will no longer be interpreted
as a separator, which matches the behavior or the -astquery option. |
| PCLP-5377 | Improve support for MISRA C++:2023 Rule 0.1.2 The Amplification of MISRA C++:2023 Rule 0.1.2 is now honored by enabling message
534 (ignoring return value of function) only for non-overloaded operator functions in
au-misra-cpp2.lnt. |
| PCLP-5387 | Assistance provided for MISRA C++:2023 Rules 8.7.2 and 8.9.1 Messages 947 (pointer subtraction) and 946 (relational operator applied to pointers)
are now employed to provided assistance for MISRA C++:2023 Rules 8.7.2 and 8.9.1. |
| PCLP-5398 | Refine exception for MISRA C++:2023 Rule 11.3.1 The +equery option used to enable message 9436 (symbol has array type) in
au-misra-cpp2.lnt has been updated to exclude const character arrays that are
initialized with a string literal inside of an initializer list. Const arrays with element
types signed char or unsigned char are no longer exempted. |
| PCLP-5399 | New Query functions for InitListExpr The following Query functions are now supported for nodes of InitListExpr
type: getNumInits, getInit, hasDesignatedInit, getInitializedFieldInUnion,
isExplicit, isStringLiteralInit, isSemanticForm, isSyntacticForm,
getSemanticForm and getSyntacticForm. |
| PCLP-5400 | Add ffs flag to specify case-sensitive or insensitive file-systems Previously case-sensitivity was assumed based on the platform PC-lint Plus was being
run on. Windows and macOS executables would assume case-insensitivity, and Linux
builds would assume case-sensitivity. The new flag ffs keeps these assumptions in its
default state, but allows for overriding them as well. |
| PCLP-5409 | Improved documentation for indexing Query functions The documentation for the msgStringParam, msgSymbolParam, and msgTypeParam
Query functions has been improved to clarify scope and usage. Additionally, the
descriptions of all Query functions accepting an index argument have been updated
to note that the argument is one-indexed, not zero-indexed. |
| PCLP-5439 | Documented planned support for MISRA C++:2023 unsupported rules This support summary table for MISRA C++:2023 has been updated with planned
release scheduling for each unsupported Rule. See section MISRA C++:2023 for more
information. |
| PCLP-5443 | Improved support for AUTOSAR M7-4-2 MISRA C++:2008 7-4-2 Previously the support mechanism for these rule was to undefine certain keywords and
pragmas. It was too easy for users to ignore or redefine these keywords and pragmas.
Now the support mechanism will actually output messages to the users which are
tagged with the rule. |
| |
|
|
| PCLP-1324 | Resolved false negative 550, 551, and 552 for unevaluated contexts Messages 550 (local variable not accessed), 551 (static variable not accessed), and 552
(extern variable not accessed), previously may have been absent in the case where the
only access occurred inside of an unvevaluated context. Now these messages will be
issued in that scenario. |
| PCLP-3650 | Resolve false positive for message 473 An issue where message 473 (argument is of insufficient length for array parameter)
could be incorrectly issued for a pointer because it had been checked for null has been
resolved. |
| PCLP-4892 | Stack analysis will use the worst case for functions with multiple definitions Due to user misconfiguration errors or project namespace conflicts there may be
functions in a project configuration that have multiple different definitions. This
should be avoided, but if present the definition with the worst stack usage will be
used in reporting. |
| PCLP-4964 | Resolved false negative 526 and 1526 for some function templates Message 526 (symbol is not defined) was previously not issued for undefined function
templates that were only called from a member function of a class template that was
not used in the defining module. Also message 1526 (undefined member function) was
previously not issued for member functions of class templates. Now both will elicit
their respective messages. |
| PCLP-4977 | Resolved a false positive for message 953 An issue where message 953 (local variable could be const) could be issued for
init-captures has been resolved. |
| PCLP-4979 | Resolve deprecated type being issued for deduced types in a lambda
capture An issue where message 586 (type is deprecated) could be issued for a deduced type
in a lambda capture has been resolved. |
| PCLP-4980 | Resolved a false positive for message 1576 An issue where 1576 could be issued for the definition of a template that was declared
in a header has been resolved. |
| PCLP-5127 | Resolved 9057 false negatives for suffixes ull and Ull Previously, 9057 (lowercase L follows ’u/U’ in literal suffix) did not emit for the suffixes
ull and Ull. This issue has been resolved. Additionally, the message descriptions of
9057 and 620 (suspicious constant) have been updated for increased clarity. |
| PCLP-5194 | Resolved Internal Error 29BD57CB when trying to import a C++20 module
that could not be found This internal error would occur for Windows PC-lint Plus executables that attempted
to build a C++20 module which imported another C++20 module could not be found.
The internal error will no longer will occur, and temporary files will be cleaned up. |
| PCLP-5211 | GCC compiler configurations no longer generate errors when <limits> is
included in a project For projects using GCC 13 or later, pclp_config compiler configurations resulted in
errors due to the use of _Float32, _Float64, and _Float128 types in the <limits>
header file, as well as the bf16 literal suffix in c++config.h, which is included by
<limits>. New compiler configurations generated by pclp_config will not emit these
errors. |
| PCLP-5228 | Resolved duplicate message emissions occurring for variable template
instantiations Previously messages that applied to a specific variable template instantiation may
have shown up in the results twice. Now these messages should only occur once. |
| PCLP-5232 | Resolved a false positive for messages 953 and 1803 An issue where messages 953 (local variable could be const) and 1803 (variable could
be constexpr) could be incorrectly issued for a variable mutated in a type dependent
expression has been resolved. |
| PCLP-5237 | Resolved a false positive for message 953 An issue where message 953 (local variable could be const) could be issued for implicit
variables has been resolved. |
| PCLP-5238 | Resolve internal error when a for statement’s increment expression
contains a zero literal Previously, when a zero literal appeared inside a for statement’s increment expression,
this would trigger an internal error with code 292B4B8C. This defect has been resolved. |
| PCLP-5246 | Potential internal error when unable to open output file for Diagnostic
Accounting A potential hang or internal error that could result when a file that cannot be opened
is specified as a Diagnostic Accounting output file has been resolved. |
| PCLP-5247 | Correction of internal error 499C50D7 related to semantic analysis of
requires expressions within lambdas Requires expressions within lambdas were erroneously considered function scopes
during semantic analysis, causing an internal error when determining variables
captured by the lambda. The cause of this internal error has been corrected. |
| PCLP-5252 | Fix false positives for 419/669 and 420/670 An issue where messages 419 / 669 (data overrun for function) and 420 / 670 (access
beyond array for function) could be incorrectly issued for a pointer because it had
been checked for null has been resolved. |
| PCLP-5253 | Resolve potential crash for statements appearing after a throw in a switch
case A crash that could occur when a statement was encountered immediately following a
throw statement in a switch case while message 9042 (departure from MISRA switch
syntax) was active has been resolved. |
| PCLP-5256 | Potential silent crash when taking address of a function in a header file A silent crash could occur when taking the address of a function in a header file. This
situation has been resolved. |
| PCLP-5264 | Corrected SHA1 calculation for UTF-16 encoded source files An issue that resulted in incorrect values for the sha1_hash field in the Diagnostic
Accounting Files table for UTF-16 encoded source files has been corrected. |
| PCLP-5268
PCLP-5299 | Fix false positives for 419/669 and 420/670 An issue where messages 419 / 669 (data overrun for function) and 420 / 670 (access
beyond array for function) could be incorrectly issued for a pointer to an array element
has been resolved. |
| PCLP-5271
PCLP-5366 | Resolved an issue in Value Tracking that manifested as a crash An issue that could cause processing to terminate when encountering a global variable
with class type has been resolved. |
| PCLP-5283 | Fix false positive 2705 for assignments involving fields with reference type Message 2705 (assignment between overlapping objects is not well defined) is no longer
emitted when encountering an assignment between non-overlapping data members
when one of the members has reference type. |
| PCLP-5289 | Resolve false positive for message 1946 An issue has been resolved where message 1946 (use of functional-style cast) could
be incorrectly issued for a temporary object. |
| PCLP-5317 | Resolved Crash with Exception Code 0xC00000FD Previously when a __func__ expression was used in the context of the throw
statement, a crash could occur. This is no longer the case. |
| PCLP-5326 | Possible incorrect behavior of single line suppressions In rare situations it was possible that a single line suppression option (!e#) could
elicit an internal error, a hang, or the suppression of a message with a similarly-spelled
message number. This issue has been corrected. |
| PCLP-5331 | Resolved a crash when a ranged-based for statement references an auto
function parameter Previously a crash would occur if a range-based for statement referenced an auto
function parameter. This issue has been corrected. |
| PCLP-5347 | Improve support for Microsoft UCRT Previously including the Microsoft UCRT (universal C runtime libraries) "uchar.h"
could cause messages 13 and 104 to be emitted. This has been corrected. |
| PCLP-5365 | Fixed a crash that could occur when parsing inline assembly Resolved a crash that could occur during parsing when encountering an inline
assembly instruction introduced with __asm_crumb. |
| PCLP-5394 | False negative 2469 from inline variables defined with macros Previously message 2469 (multiple definitions of variable) would not be emitted if an
inline variable was defined in multiple different locations, and more than one of the
definition locations was defined using a macro replacement. Now the message will be
emitted regardless if a macro defines the variable or not. |
| PCLP-5406 | Fixed a potential crash in Thread Analysis Resolved a crash that could occur during Thread Analysis when encountering a
declaration with semantic errors. |
| PCLP-5455 | Corrected -append options for au-misra-cpp2.lnt -append options have been added for message 986, used in support of MISRA
C++:2023 Rule 4.1.2, so that the rule will be noted when a violation is reported by
this message. |
| |
PC-lint Plus 2025 includes several new featues and numerous improvements including:
|
|
| PCLP-853
PCLP-2109 | Added support for function attributes warn_unused_result and nodiscard PC-lint Plus now emits message 2420 for functions marked with attributes
warn_unused_result or nodiscard whose return values are ignored. This message
is intended to compliment 534, highlighting that the result of such functions should
never be ignored due to the presence of the aforementioned attributes. |
| PCLP-1060 | New message 9140 supports AUTOSAR M6-6-3 The new message 9140 (continue used outside of well-formed for loop) is issued when
a continue statement is found in an iteration statement that is not a well-formed for
loop. |
| PCLP-2040 | New message for use of delete on void pointers The message 1575 (delete used on void pointer) reports on delete expressions whose
arguments are pointers to void. According to the C++ standard, undefined behavior
is produced if the delete operator is ever passed a pointer to void. |
| PCLP-2061 | Add new message 2721 and 9223 to support MISRA C 2012 AMD-1 Rule
21.19 The new message 2721 (pointer returned from function, whose value should not
be modified, is assigned to pointer to non-const) is issued when a pointer from a
standard library function whose value should not be modified is assigned to a pointer
to non-const. The new message 9223 (value is modified using a pointer member
of a const-qualified base) is issued a value is modified through a pointer with a
const-qualified base. These message support MISRA C 2012 AMD-1 Rule 21.19,
MISRA C 2023 Rule 21.19, and CERT C ENV30-C. |
| PCLP-2458 | New message 9197 supports MISRA C 2012 Rule 14.2 The new message 9197 (statement in for loop init-statement that doesn’t assign the
value of a loop counter) reports when an init-statement is present in a for loop that
isn’t initializing a loop counter. This message improves support for MISRA C 2012
Rule 14.2. |
| PCLP-2605 | Reintroduced message 962 from PC-lint 9 Message 962 (macro defined identically in another module) is reintroduced from
PC-lint 9 to report identical macro definitions occurring in different modules. This
also improves support for MISRA C 2012 Rule 5.4. |
| PCLP-2837 | Parallel builds with imposter are now supported Previously, running multiple instances of the imposter utility occasionally resulted
in interleaved writes to the output log file. This limitation has been resolved, allowing
imposter to always produce properly formatted output in the log. |
| PCLP-2909 | Template classes, functions, and variables can be deprecated The message 586 (deprecated entity used) and 986 (deprecated type used in typedef)
can now be specified to be emitted for abstract template classes, functions and
variable, or specific instantiations using the -deprecate option. |
| PCLP-2917 | Added support for MISRA C 2012 Rule 12.4 Message 2421 is issued when computing an unsigned integer constant expression
results in unsigned wrap-around. Full support for MISRA C 2012 Rule 12.4 is now
provided. |
| PCLP-3419 | New message 3980 supports MISRA C++ 7-5-3 New message 3980 (returning reference of non-const reference parameter) now
diagnoses when non-const reference function parameter is returned as a reference from
a function. |
| PCLP-3522 | New message 9189 helps support AUTOSAR A7-1-7 The new message 9189 (multiple expression statements on the same line) now
reports when an expression statement is found on a line that previously contained an
expression statement. This note is not issued for macro expansions or definitions. |
| PCLP-3524 | Add new message 1950 to support AUTOSAR Rule A12-1-5 The new message 1950 (non-constant member initialized in multiple constructors
outside of a delegating constructor) reports when a non-constant member is initialized
in multiple constructors instead of being initialized by a delegating constructor. This
implements AUTOSAR Rule A12-1-5. |
| PCLP-3530 | New message 9241 supports AUTOSAR19 A5-2-6 New message 9241 (logical operator has unparenthesized binary operator operand)
now diagnoses when a && or || logical operator has an operand that is a binary
operator, and is not a member access, function call, or comma operator. |
| PCLP-3535 | Add new message 2506 to support AUTOSAR Rule A21-8-1 and CERT C
Rule STR37-C The new message 2506 (argument to character-handling function is not representable
as an unsigned char) reports when an argument to a character-handling function
which does not have unsigned char type and does not have a known value that could
be represented by the EOF macro or fit in the range of an unsigned char. This
implements AUTOSAR Rule A21-8-1 and CERT C Rule STR37-C. |
| PCLP-3536 | New message 9453 supports AUTOSAR A8-5-2 New message 9453 (variable initialization does not use braces) now diagnoses when
variable is initialized not using braces. Variables with templated types, or of a
class type that has a std::initializer_list constructor and another non-default
constructor are allowed to use parentheses instead of braces. |
| PCLP-3917 | Add new message 2469 to support AUTOSAR M3-2-4 The new message 2469 (multiple external linkage variable definitions) is issued when
a variable with external linkage is defined in multiple modules of the project. Inline
variables are allowed, provided they are all defined in the same source file or header
throughout the project. This message supports MISRA C 2004 Rule 8.9 and MISRA
C 2012 Rule 8.6 as well. |
| PCLP-3994 | Add new messages 2507 to support MISRA C Rule 19.1 The new message 2507 (assignment between overlapping objects is not well defined)
is issued when an assignment occurs between objects that overlap partially or overlap
exactly but have incompatible types. This improves support for MISRA C Rule 19.1. |
| PCLP-4066 | New fuv flag option The new fuv flag option can now be used to cause PC-lint Plus to report unreferenced
variables that could be made const (or pointer to const, etc). By default, PC-lint Plus
does not report unreferenced variables that could be made const. |
| PCLP-4084 | Diagnostic Accounting Feature The new Diagnostic Accounting feature supports generation of auditing data for
diagnostics and suppressions. This data represents an accounting of messages that
were emitted and suppressed along with information about how the emission
determination was made and the impact of suppression options in effect at the time.
This information may be used to support the ability to detect unused suppression
options, better facilitate custom post-processing tasks and reports, support auditing
demands that require an account of suppressed messages, and is the mechanism that
supports analysis results import used by PC-lint Plus View. |
| PCLP-4102 | New message 3708 and 9508 support AUTOSAR Rule A3-3-2 The new message 3708 (static or thread storage duration variable with non
constant-initializer) is issued when a variable with static or thread storage duration
has an initializer, but is not constant-initialized. The new message 9508 (static or
thread storage duration variable with zero-initializer) is issued when a variable with
static or thread storage duration is implicitly zero-initialized. |
| PCLP-4107 | New messages 9191 and 9192 supports AUTOSAR A6-5-2 The new message 9191 (multiple for loop counters) is issued when a for loop has more
than one loop counter variable. The new message 9192 (no for loop counters) is issued
when a for loop cannot be determined to contain a loop counter. |
| PCLP-4108 | New message 9193 supports AUTOSAR M6-5-4 The new message 9193 (not modified by increment or decrement of a constant amount)
is issued when a for loop counter is modified other than by an increment, decrement,
or compound addition/subtraction by a constant expression. |
| PCLP-4109 | New messages 9194 and 9195 supports AUTOSAR M6-5-5 The new message 9194 (modifying non loop counter) is issued when a variable other
than a loop counter is modified in a for loop condition or iteration expression. The
new message 9195 (potentially modifying non loop counter) is issued when a variable
other than a loop counter is potentially modified in a for loop condition or iteration
expression. |
| PCLP-4110 | New message 9196 supports AUTOSAR M6-5-6 The new message 9196 (non-loop counter variable modified in for body isn’t bool) is
issued when a variable used in a for loop, is modified in the body of the loop, and
isn’t a loop counter or a boolean type. |
| PCLP-4111 | Add new message 1803 to support AUTOSAR Rule A7-1-2 The new message 1803 (variable could be constexpr) reports when the value of a
variable can be determined at compile-time but does not use the constexpr specifier.
This implements AUTOSAR Rule A7-1-2. |
| PCLP-4112 | New message 1955 supports AUTOSAR Rule A7-1-5 New message 1955 (potentially confusing use of the ’auto’ specifier) reports when the
auto specifier is used except for where AUTOSAR Rule A7-1-5 permits it. |
| PCLP-4114 | Add new message 3717 to support AUTOSAR19 Rule A7-3-1 The new message 3717 (declaration will not be found through a prior
using-declaration) will report when a declaration is added to a namespace that would
not be found by a prior using-declaration. This supports AUTOSAR Rule M7-3-5,
MISRA C++ 2008 Rule 7-3-5, and AUTOSAR19 Rule A7-3-1. |
| PCLP-4115 | Add new messages 9220 and 9221 to support MISRA C++ 2008 Rule 7-4-3 The new messages 9220 (assembly language instruction is not encapsulated in a
function) and 9221 (function mixes assembly code with non-assembly code) will report
when assembly code appears outside of a function or is mixed with other non-assembly
code in a function. This implements AUTOSAR Rule M7-4-3 and MISRA C++ 2008
Rule 7-4-3. |
| PCLP-4116 | New message 3780 supports AUTOSAR A7-5-1 New message 3780 (returning reference of const or rvalue reference parameter) now
diagnoses when a const reference or rvalue reference function parameter is returned
as a reference from a function. |
| PCLP-4117 | Add new message 9206 to support AUTOSAR Rule A8-2-1 The new message 9206 (dependent return type does not use trailing return type or
return type deduction) now diagnoses when a function template declaration with
a dependent return type is not using either function return type deduction or
trailing-return-type syntax. |
| PCLP-4119 | New message 3910 supports AUTOSAR19 A8-4-5 New message 3910 (rvalue reference parameter not moved) now diagnoses when a
non-const, non-templated rvalue reference function parameter with an identifier is not
moved from within the body of that function. |
| PCLP-4120 | New messages 3715 and 3716 supports AUTOSAR19 A8-4-6 New messages 3715 (forward parameter is used outside of forwarding) and 3716
(forward parameter not forwarded) will report when a non-const templated rvalue
reference parameter is not forwarded and unoperated. This implements AUTOSAR19
Rule A8-4-6. |
| PCLP-4122 | Add message 3915 to support AUTOSAR19 Rules A8-4-4 and A8-4-8 The new message 3915 (value of non-const reference parameter of function is unused)
reports when the passed in value of a non-const reference parameter is unused. This
implements AUTOSAR19 Rules A8-4-4 and A8-4-8. |
| PCLP-4127 | New message 9249 supports AUTOSAR M10-2-1 New message 9249 (class contains identifier in multiple bases) now diagnoses when a
class inherits from two or more base classes that each contain a declaration with the
same identifier. |
| PCLP-4128 | New messages 9242, 9243, 9244, 9245, and 9246 support AUTOSAR
A11-0-2 New message 9242 (struct has a non-public data member) now diagnoses when a
struct has a protected or private data member. New message 9243 (struct has a static
data member) now diagnoses when a struct has a static or thread_local‘ data
member. New message 9244 (struct has a method) now diagnoses when a struct has
a method or non-default and non-deleted user defined special member function. New
message 9245 (struct has a base class) now diagnoses when a struct has a non-empty
base-specifier-list. New message 9246 (struct used as a base class) now diagnoses when
a struct appears in another classes’ base-specifier-list. |
| PCLP-4129 | New messages 3513, 3713, and 3913 supports AUTOSAR A12-0-1 New message 3513 (Rule of Three) now diagnoses when a class declares a destructor,
copy constructor, or copy assignment operator, but not all three in modes previous
to C++11. New message 3713 (Rule of Five) now diagnoses when a class declares a
destructor, copy constructor, copy assignment operator, move constructor, or move
assignment operator, but does not declare a destructor, copy constructor, and copy
assignment operator. New message 3913 (Rule of Five with only the move operators
missing) now diagnoses when a class declares a destructor, copy constructor, and copy
assignment operator, but not a move constructor and move assignment operator. |
| PCLP-4130 | Add new message 1947 to support AUTOSAR Rule A12-1-2 The new message 1947 (initializes members in both the class body and constructor)
reports when a constructor initializes members of a class/struct/union where members
are also initialized in the class body. This implements AUTOSAR Rule A12-1-2. |
| PCLP-4132 | Add new message 1801 to support AUTOSAR Rule A12-4-1 The new info message 1801 (base class has a destructor that is not public virtual,
public override, or protected non-virtual) is issued when a base class destructor is not
public virtual, public override, or protected non-virtual. This implements AUTOSAR
Rule A12-4-1. |
| PCLP-4134 | Add new message 1424 to support AUTOSAR Rule A12-8-3 The new message 1424 (object has been previously moved but is used) will report
when an object is used after it was moved. This implements AUTOSAR Rule A12-8-3. |
| PCLP-4135 | Add new message 1957 to support AUTOSAR Rule A12-8-6 The new message 1957 (base class has a non-protected and non-deleted copy/move
constructor/assignment operator) reports when a base class contains a non-protected,
non-deleted copy/move constructor or assignment operator. |
| PCLP-4136 | New message 3714 and 9514 supports AUTOSAR A13-1-2 New message 3714 (user defined literal suffix doesn’t start with single underscore)
now diagnoses when a user defined literal operator, outside of the std namespace, has
a suffix that does not start with a single underscore. New message 9514 (user defined
literal suffix contains non-letter after underscore) now diagnoses when a user defined
literal operator, outside of the std namespace, has a suffix that starts with a single
underscore, but is not followed by one or more letters. |
| PCLP-4137 | Add new messages 9266 and 9267 to support AUTOSAR Rule A13-1-3 The new message 9266 (user-defined literal operator returns void) now diagnoses
when a user-defined literal operator function is declared with a void return type.
The new message 9267 (user-defined literal operator has side-effects) now diagnoses
when a user-defined literal operator function is defined as an impure function with
side-effects. |
| PCLP-4139 | Add new message 9239 to support AUTOSAR Rule A13-5-4 The new message 9239 (opposite operators are defined and neither are defined in
terms of the other) reports when an operator pair is defined where one is not defined
in terms of the other. This message implements AUTOSAR Rule A13-5-4. |
| PCLP-4140 | New messages 1804 and 1805 support AUTOSAR19 A14-5-1 New message 1804 (template constructor has a single argument of the enclosing class
type) reports when a template constructor is instantiated with a single argument
of the enclosing class type. New message 1805 (constructor template cannot be a
move constructor) reports when no user defined move constructor is present and a
template constructor is defined that looks like a move constructor. This implements
AUTOSAR19 A14-5-1. |
| PCLP-4141 | Add new message 9248 to support AUTOSAR Rule A14-5-3 and MISRA
C++ Rule 14-5-1 The new message 9248 (non-member generic function should be declared in a
namespace that does not contain class, struct, enum, or union type declarations)
reports when a non-member generic function is not declared in a namespace that does
not contain class (struct) type, enum type or union type declarations. This implements
MISRA C++ Rule 14-5-1 and AUTOSAR Rule A14-5-3. |
| PCLP-4142 | Add new message 9250 to support AUTOSAR Rule M14-6-1 The new message 9250 (unqualified name lookup in class template with dependent
base class) now diagnoses when unqualified name lookup occurs with in the context
of a class template with a dependent base class and the name can be found in that
dependent base class. This also support MISRA C++ Rule 14-6-1. |
| PCLP-4145 | Add new messages 9302 and 9303 to support AUTOSAR Rule A15-1-3 The new message 9302 (duplicate exceptions thrown) is issued when two or more of
the same exception object with corresponding type and message are thrown in the
project. The new message 9303 (possible duplicate exceptions thrown) is issued when
two or more of the same exception object with corresponding type and possibly the
same message are thrown in the project. |
| PCLP-4146 | New message 3712 and 3912 supports AUTOSAR A15-2-1 The new message 3712 (static duration variable initialized with non-noexcept
constructor) is issued when a variable with static storage duration, in a non-local
scope, is initialized with a potentially throwing constructor. The new message 3912
(non-noexcept constructor used in a constexpr function) is issued when a potentially
throwing constructor is found in the body of a constexpr function. |
| PCLP-4147 | New message 3433 supports AUTOSAR M15-3-3 The new warning 3433 is issued when a constructor or destructor references a
non-static class member from this class or a base. |
| PCLP-4150 | New message 3548 supports AUTOSAR A15-4-3 The new message 3548 (noexcept declaration mismatched between modules) is issued
when a function is declared in one module with an exception specifier that indicates
it may throw, whereas another module indicates the declared function will not throw,
and vice versa. |
| PCLP-4151 | Added support for AUTOSAR Rule A15-5-1 with new message 9470 The new message 9470 reports the definition of a potentially-throwing user-provided
destructor, deallocation function (operator delete), move constructor, move
assignment operator, or swap function.
Support for AUTOSAR Rule A15-5-1 is now provided. |
| PCLP-4152 | New message 3904 supports AUTOSAR A18-5-4 The new message 3904 (globally defined operator delete does not have complimentary
definition) is issued when a project with sized allocations enabled defines a global
operator delete replacement which has a variant with and without a sized parameter,
but only defines one of them. |
| PCLP-4153 | Add new messages 3435 and 3436 and enable 3047 to support
AUTOSAR19 Rule A18-5-9 The new messages 3435 (non-throwing allocation function throws a std::bad_alloc
exception) and 3436 (allocation function does not throw a std::bad_alloc exception)
will report when a replacement allocation function incorrectly throws or does not
throw a std::bad_alloc exception. This supports AUTOSAR19 Rule A18-5-9. |
| PCLP-4155 | Add new messages 3709 and 3710 to support AUTOSAR19 Rule A18-5-11 The new message 3709 (global operator new and delete not defined together) is
issued when a global operator new or operator delete is user defined, but does not
have a corresponding user defined global operator new or delete such that memory
from one can be allocated or deallocated by the other. The new message 3710 (class
operator new and delete not defined together) is issued when a class scope operator
new or operator delete is user defined, but does not have a corresponding user defined
operator new or delete such that memory from one can be allocated or deallocated
by the other. |
| PCLP-4156 | New message 3711 supports AUTOSAR 18-9-3 Message 3711 (use of std::move on const-qualified argument type) will be issued
when a const-qualified argument is passed as the moved argument to a function
with move semantics. A new move function semantic has been added to support this
message. |
| PCLP-4157 | New message 3905 supports AUTOSAR A18-9-4 The new message 3905 (use after forward) is issued when variable name or alias
is used after it has been passed as an argument to a forwarding function such as
std::forward. A new forward function semantic for forwarding functions has been
added. |
| PCLP-4253 | New message 2840 supports AUTOSAR M6-5-2 The new message 2840 (used with equality operator but modified other than by ++
or –) is issued when a for loop counter is used as an operand to an equality operator
in the for loop condition, but was not modified in the iteration expression with the
++ or – operator. |
| PCLP-4315 | New message 9188 adds support for MISRA C 2012 AMD-3 Rule 18.9 The new message 9188 now provides support for MISRA C 2012 AMD-3 Rule 18.9. |
| PCLP-4325 | New message 3537 supports AUTOSAR M9-3-1 The new message 3537 (const member functions returns non-const reference to class
member) is issued when a const member function returns a non-const reference to a
non-static class member. |
| PCLP-4395 | Add new message 9222 to support MISRA C 2012 AMD 4 Rule 7.6 The new message 9222 (small integer variant of a minimum-width integer constant
macro is used) reports when a minimum-width integer constant macro is used whose
width is less than that of type int. This implements MISRA C 2012 AMD 4 Rule 7.6. |
| PCLP-4473 | Added new message supporting MISRA C 2012 Rule 10.1 The new message 9099 (pointer used as operand of logical operator) emits when
pointer types are used as operands of the operators &&, ||, and !. MISRA C 2012 Rule
10.1, previously supported by messages 48 (indirection requires pointer operand) and
9027 (essential-type value not appropriate operand to operator), received a correction
in MISRA C 2012 Technical Corrigendum 1 that prohibits the use of pointers with
these operators. 9099 was added to provide support for this correction. |
| PCLP-4501 | Add sub-option for stack usage to allocate variables at the start of the
function A sub-option &prealloc_vars is added to +stack to allocate variables at the start
of the function rather than allocating and deallocating them within their scope. |
| PCLP-4551 | Commas are now optional when specifying multiple messages for -e(, –e(,
-e{, and –e{ Previously, these options required commas separating each message number passed
to them. The formatting requirements have been relaxed. Now spaces, commas, or a
mixture of both may be used to specify message numbers. |
| PCLP-4593 | New message 2776 replaces 1776 for C modules Previously, the message 1776 (implicit conversion of string literal is not const safe)
was emitted for both C and C++ modules. Message 1776 is now only emitted in C++
modules and the new message 2776 is used to diagnose similar issues in C modules. |
| PCLP-4644
PCLP-3972
PCLP-3110
PCLP-3109 | Add new messages 9277 and 9278 to support MISRA C 2012 Rule 5.8 and
MISRA C 2012 Rule 5.9 The new message 9277 (identifier is used elsewhere to define a symbol with external
linkage) reports when an identifier with external linkage is reused anywhere in the
project. This supports MISRA C 2012 5.8. The new message 9278 (identifier is used
elsewhere to define a symbol with internal linkage) reports when an identifier with
internal linkage is reused anywhere in the project. This supports MISRA C 2012 5.9. |
| PCLP-4645 | Add new message 9279 to support AUTOSAR A2-10-4 The new message 9279 (identifier with static storage is reused within a namespace)
reports when an identifier with static storage is reused within a namespace across any
source files in the project. This supports AUTOSAR A2-10-4. |
| PCLP-4798 | Add new message 9155 to identify commented-out code Message 9155 (comment may contain commented-out code) is issued for comments
that appear to contain commented-out code. Partial support for MISRA C 2012 Dir
4.4, MISRA C++ 2023 Directive 5.7.2, AUTOSAR Rule A2-8-2, and AUTOSAR Rule
A2-7-2 is now provided. |
| PCLP-4826 | Support for MISRA C++:2023 PC-lint Plus now supports MISRA C++:2023 via the new au-misra-cpp2.lnt author
configuration file. See section MISRA C++:2023 for more information. |
| PCLP-4842 | Added new message 9184 to support MISRA C++ 2023 Directive 5.7.2 Message 9184 is issued when #if 0 directives are encountered. |
| PCLP-4844 | New message 9251 supports MISRA C++:2023 Rule 5.13.6 The new message 9251 (integer literal with L/l suffix should have LL/ll suffix) reports
when an integer literal with an L or l suffix is cannot be represented in the long type. |
| PCLP-4847 | New message 9257 supports MISRA C++:2023 Rule 6.7.1 The new elective note 9257 (local non-const variable has static/thread storage
duration) supports MISRA C++:2023 Rule 6.7.1. |
| PCLP-4849 | Add new message 1806 to support MISRA C++:2023 Rule 6.8.4 The new message 1806 (member function returning reference to its object is not
ref-qualified appropriately) reports when there is an explicit return of this, *this, or
a subobject of *this in a member function lacking ref-qualifiers to prevent a dangling
reference in certain circumstances. This supports MISRA C++:2023 Rule 6.8.4. |
| PCLP-4857 | New message 9164 reports on uses of reinterpret_cast The new message
9164 (reinterpret_cast used) diagnoses all uses of reinterpret_cast and is used to
support MISRA C++:2023 Rule 8.2.5. |
| PCLP-4859 | New message 9161 supports MISRA C++:2023 Rule 8.2.9 The new message 9161 (operand to typeid operator has polymorphic type) supports
MISRA C++:2023 Rule 8.2.9. |
| PCLP-4860 | New message 9207 supports MISRA C++:2023 Rule 8.3.2 The new message 9207 (built-in unary plus operator encountered) will report when
the unary plus operator is used in a way that does not invoke an overloaded operator
function. |
| PCLP-4861 | Add new message 9256 to support MISRA C++:2023 Rule 10.1.2 The new message 9256 (volatile used) will be issued when a volatile qualifier is
used in a context that may not be appropriate. |
| PCLP-4863 | New message 9253 reports on the use of bit-fields Elective note 9253 is now provided to diagnose bit-field declarations which supports
MISRA C++:2023 Rule 12.2.1. |
| PCLP-4864 | Add new message 1953 to support MISRA C++:2023 Rule 13.3.2 The new message 1953 (default argument of parameter in function is not a constant
expression with the same value as the overridden function) reports parameters of
overriding functions that specify a default argument that is not a constant expression
or that has a different value than the default argument of the corresponding parameter
in the overridden function. This supports MISRA C++:2023 Rule 13.3.2. |
| PCLP-4865 | New message 1956 reports on symmetric operators implemented as
member functions The new message 1956 (symmetric operator implemented as a member function)
reports when a symmetric operator is not implemented as a non-member function
which supports MISRA C++:2023 Rule 16.6.1. |
| PCLP-4866 | Added support for MISRA C++ 2023 Rule 17.8.1 Message 9179 is issued when an explicit function template specialization is
encountered. Complete support for MISRA C++ 2023 Rule 17.8.1 is now provided. |
| PCLP-4869 | Added support for MISRA C++ 2023 Rule 22.4.1 Message 9180 is issued when errno is assigned anything other than the integer literal
zero. Complete support for MISRA C++ 2023 Rule 22.4.1 is now provided. |
| PCLP-4877 | Add new message 3911 to support MISRA C++:2023 Rule 28.6.1 The new message 3911 (move of rvalue argument) will be issued when an rvalue
argument is passed as the moved argument to a function with move semantics. |
| PCLP-4880 | Add new message 3907 to support MISRA C++:2023 Rule 9.5.2 The new message 3907 (multiple function calls in a for-range-initializer) will be
issued when a C++11 range based for loop has multiple function calls within its
for-range-initializer. |
| PCLP-4881 | Add new message 9217 to support MISRA C++:2023 Rule 10.4.1 The new message 9217 (assembly language instruction within a function) reports
assembly language that appears inside of a function. In conjunction with message
9220 all uses of assembly language will be reported. This supports MISRA C++:2023
Rule 10.4.1. |
| PCLP-4900 | Add new message 9255 to support MISRA C++:2023 Rule 6.0.3 The new message 9255 (inline global namespace) will be emitted when an inline
namespace is declared in the global namespace. |
| PCLP-4956 | Explicit support for MISRA C:2023 PC-lint Plus now provides explicit support for MISRA C:2023 via the new
au-misra4.lnt file found in the lnt/ directory of the product distribution. |
| PCLP-5089 | Support for MISRA C:2025 PC-lint Plus now supports MISRA C:2025 via the new au-misra5.lnt author
configuration file. See section MISRA C:2025 for more information. |
| PCLP-5100 | Added Unused Suppressions Tool A new python script unused.py has been added to the extras/ directory of PC-lint
Plus. This can be used in conjunction with the Diagnostic Accounting feature to find
unused, impotent, and redundant suppressions. For more information refer to the
Unused Suppressions section of this manual. |
| |
|
|
| PCLP-960 | Update 9103 to fully support MISRA C++ Rule 2-10-5 The existing message 9103 (identifier with static storage is reused) is extended to
report when a static identifier name is reused in any file in the project. This supports
MISRA C++ 2-10-5. |
| PCLP-1578 | Emit function location for 9070 The message 9070 (function is recursive) now will provide the location of the function
definition in the message. This change enables many type of suppressions that were
not possible before, as well as allowing Queries to analyze the given function definition.
If the -unit_check option is used or global wrap-up is otherwise disabled, then the
message will be emitted at the end processing without a location, like the previous
behavior. |
| PCLP-2603 | Re-enabled message 767 Message 767 (macro defined differently in another module) is reenabled. This improves
support for MISRA C 2012 Rule 5.4. |
| PCLP-2978 | Assembly related errors are no longer emitted. Previously, PC-lint Plus attempted to perform analysis on assembly variable
declarators, possibly resulting in the emission of multiple assembly-related diagnostics.
PC-lint Plus was not designed to analyze such statements, and should not be emitting
any diagnostics related to inline assembly. This defect has been corrected. |
| PCLP-3005 | Messages 419 and 420 now also issued for non-buffer arguments Non-buffer arguments are now considered for data overrun and invalid access by
messages 419 and 420. |
| PCLP-3012 | Messages 750, 1401, 1540, 1541, 1565, 1566, 1578, 1579, 1927 are now
issued in a consistent order Messages 750 (local macro not referenced), 1401 (non-static data member not
initialized by constructor), 1540 (non-static pointer data member not deallocated
nor zeroed by destructor), 1541 (non-static data member possibly not initialized by
constructor), 1565 (non-static data member not initialized by initializer function),
1566 (non-static data member may have been initialized in a separate method without
initializer semantic), 1578 (non-static pointer data member not deallocated nor zeroed
by cleanup function), 1579 (non-static pointer data member may have been zeroed
or freed in a separate method without initializer semantic), and 1927 (data member
absent from initializer list for constructor) were previously not always issued in a
consistent order. Now they are issued in a consistent order across runs. It is a known
issue that 457 and 459 are issued in an inconsistent order when PC-lint Plus is running
with multiple threads. |
| PCLP-3058 | Enabled support for MISRA 2004 Rule 20.3 and MISRA 2012 Directive
4.11 Relevant messages for MISRA 2004 Rule 20.3 and MISRA 2012 Directive 4.11 are
now enabled in au-misra2.lnt and au-misra3.lnt files. |
| PCLP-3061 | Added supplemental message for message 455 When message 455 is emitted, additional supplemental messages will also be emitted
that document the prior operations of the referenced mutex/locker. |
| PCLP-3410 | Support language extension specifying an explicit address using a colon The language extension specifying an explicit address for a variable introduced by a
colon used by some compilers including CodeWarrior is now supported if the fec flag
is turned on. |
| PCLP-3620 | -efunc can now be used to suppress messages within special member
functions and conversion operators. Previously, the -efunc option did not work for special member functions, such as
constructors and destructors, and conversion operators. Now, suppression of messages
via -efunc can be applied to these functions. |
| PCLP-3648 | Emit message 686 in response to suppression of message 322 Explicit suppression of error 322 (unable to include file) will now elicit message 686
(option is suspicious) as suppression of a fatal error is unusual and will likely have
negative unintended consequences. |
| PCLP-3716 | Corrected representation of format string checking for wide-string
functions Wide character versions of printf-like and scanf-like functions have been removed
from the table provided in the "Format Checking" section as the checks described in
this section are not performed for these functions. The corresponding semantics for
these functions is also updated in the Semantics chapter. |
| PCLP-3766 | Message 9035 added as a way to support MISRA C 2004 Rule 1.1 Message 9035 (variable length array declared) is now marked as supporting MISRA
C 2004 Rule 1.1. |
| PCLP-3922 | Removing section "Differences from PC-lint 9" and documenting the
default value of -vt_depth Section "Differences from PC-lint 9" has been removed and the default value of the
-vt_depth option has been documented. |
| PCLP-3937 | Update message 9264 for MISRA C++ 2008 Rule 5-0-15 Message 9264 (array subscript applied to variable declared with non-array type) now
handles reference types and extends support for MISRA C++ 2008 Rule 5-0-15. |
| PCLP-3941 | Added messages 2452, 2453, and 2455 as support mechanisms for MISRA
C 2012 Rule 1.3 Messages 2452 (signed integer pointer converted to/from unsigned equivalent), 2453
(incompatible pointer to integer conversion), and 2455 (incompatible function pointer
types) diagnose various pointer conversions resulting in undefined behavior. Each has
been added as a message supporting MISRA C 2012 Rule 1.3. |
| PCLP-3949 | Improved built-in function semantics Added and updated built-in function semantics for many Standard C, Standard C++,
Posix, and Windows functions. |
| PCLP-3957 | Update MISRA C++ 2008 configuration template AUTOSAR M3-2-4, MISRA C++ 2008 Rule 3-2-4, MISRA C 2004 Rule 8.9, and
MISRA C 2012 Rule 8.6 are marked to have partial support via message 2467. The
MISRA C++ 2008 Rule 9-3-1 and 15-0-3 has been marked as having no support from
PC-lint Plus. |
| PCLP-3971 | Add -isystem and -Hincdir= to the list of defaults for
–prefix-directory-options in pclp_config.py When given relative paths, the include path options -isystem and -Hincdir= are
now automatically prefixed by the directory entry in a JSON compilation database
when generating a project configuration. |
| PCLP-3973 | Added support for MISRA C 2012 Directive 4.13 An collection of relevant messages now support this directive in au-misra3.lnt |
| PCLP-3980 | Variables marked with attribute unused are now exempt from message 438 Message 438 no longer reports on variables that are marked with an unused or
maybe_unused attribute. |
| PCLP-4012 | Use of the __generic keyword no longer elicits errors when using IAR
compiler configurations The iar-8051, iar-sam8, and iar-avr compiler configurations enable the __generic
keyword. Use of this keyword would previously elicit an error. This issue has been
corrected. |
| PCLP-4016 | Built-in function semantics for std::jthread Built-in functions semantics for the std::jthread::jthread() function so that
PC-lint Plus can automatically recognize the creation of threads created by this
function. |
| PCLP-4046 | Do not emit message 1764 for universal reference parameter of template
instantiated with a lambda Message 1764 (reference parameter of function could be reference to const) no longer
reports when a function template is instantiated with a lambda as the argument
corresponding to a universal reference parameter. |
| PCLP-4058 | Include metrics that evaluate to a metric host/collection on the metric
report The metric report now includes metrics that evaluate to a metric host/collection. For
example, this can be used to identify the specific function for which the maximum or
minimum value of a metric occurred, or to identify all classes meeting specific metric
criteria. |
| PCLP-4103 | Added support for AUTOSAR19 Rule A5-0-4 Message 1952 is issued when pointer arithmetic is performed on a pointer to a
non-final class type. Complete support for AUTOSAR19 Rule A5-0-4 is now provided. |
| PCLP-4105 | Support for AUTOSAR Rule A5-1-2 Message 1970 (lambda with default capture) is now used to support AUTOSAR Rule
A5-1-2. |
| PCLP-4123 | Enable message 1764 to support AUTOSAR19 Rule A8-4-9 The existing message 1764 (reference parameter of function could be reference to
const) is enabled in support of AUTOSAR19 Rule A8-4-9. |
| PCLP-4124 | Add support for AUTOSAR19 Rule A8-4-10 Messages 613 and 668 are now emitted with additional distinguishing text in cases
where they are reporting a function parameter assumed NULL by the +fpn flag, and
such instances of these messages now provide support for AUTOSAR19 Rule A8-4-10. |
| PCLP-4126 | Added support for AUTOSAR Rule M10-1-2 The message 1749 (base class virtual specifier is unnecessary) is issued when a class
derives from a virtual base class, but nowhere in the project is the class used in a
diamond hierarchy that warrants the virtual specifier. |
| PCLP-4143 | Message 4787 and 5630 have been moved to 163 and 164 respectively The message previously 4787 is now message 163 (goto jumps into protected context).
The message previously 4787 is now message 164 (switch case label in protected
context). These messages are used to support MISRA C++ 2008 15-0-3 and AUTOSAR
M15-0-3. |
| PCLP-4154 | Added support for AUTOSAR19 Rule A18-5-10 Message 3437 is issued when the pointer passed to placement new points to memory
that is misaligned. Message 3438 is issued when the pointer passed to placement
new points to memory that too small. Via these new messages, partial support for
AUTOSAR19 Rule A18-5-10 is now provided. |
| PCLP-4167 | Improvements to the documentation of the section covering the utility
pclp_config Explicit mention of Python is now made for every call to pclp_config.py in section
*Configuring with pclp_config*. –list instances are now –list-compilers, and the
–generate-project-config option documentation is improved to include use cases
like JSON compilation db. Sections on installing pclp_config prerequisites, Python,
and required modules are reorganized for better documentation flow. |
| PCLP-4206 | Update size option extraction method for TI compiler configurations Previously, some versions of some TI compilers failed to accurately generate size
options when creating a compiler configuration. The method of size option extraction
was updated, providing accurate and complete size options for all versions of all TI
compilers. |
| PCLP-4323 | Improved loop counter detection for message 850 Message 850 (modification to for loop counter variable inside loop body) now employs
a loop counter definition that is aligned with MISRA C++ 2008. Variables that are an
operand to a relational or equality operator in a for loop condition, and modified in
the for loop iteration-expression are considered loop counters. |
| PCLP-4327 | Message 2467 will only report definitions The message 2467 (multiple function definitions across modules) would previously be
reported for all function declarations of the functions in violation. Now it will only
report the definition of violating functions in each module. |
| PCLP-4347 | Clean up temporary IAR compiler output files when generating an IAR
compiler configuration with pclp_config.py The pclp_config utility could leave behind compiler-generated files when generating
the compiler configuration files for IAR compilers. Temporary files created by the
compiler during this process will now be removed afterward. |
| PCLP-4374 | Improve documentation of limitations on thread analysis messages during
the second phase The limited way in which suppression options interact with Thread Analysis messages
emitted during the second phase has been better documented. |
| PCLP-4380 | Deprecated type names are now compared against fully qualified types The message 586 (deprecated entity used) and 986 (deprecated type used in typedef)
will now match against fully qualified type names. |
| PCLP-4393 | Support MISRA C 2012 AMD-4 Directive 5.2 MISRA C 2012 Amendment 4 Directive 5.2 is now supported using the provided
au-misra3-amd4.lnt file found in the lnt/ directory of the PC-lint Plus distribution. |
| PCLP-4394 | Partial support for MISRA C 2012 AMD-4 Directive 5.3 Partial support for MISRA C 2012 Amendment 4 Directive 5.3 is now provided in the
au-misra3-amd4.lnt file found in the lnt/ directory of the PC-lint Plus distribution. |
| PCLP-4404 | Assistance for MISRA C 2012 AMD-4 Rule 22.14 Assistance for MISRA C 2012 Amendment 4 Rule 22.14 is now provided in the
au-misra3-amd4.lnt file found in the lnt/ directory of the PC-lint Plus distribution. |
| PCLP-4406 | Support MISRA C 2012 AMD-4 Rule 22.17 MISRA C 2012 Amendment 4 Rule 22.17 is now supported using the provided
au-misra3-amd4.lnt file found in the lnt/ directory of the PC-lint Plus distribution. |
| PCLP-4423 | Update generic selection expression checks to consider type predicates Messages 2419 (controlling expression contains a side effect which will not be
evaluated), 9211 (generic selection is not expanded from a function-like macro), 9213
(controlling expression contains a call to function which will not be called), 9214
(default association will be selected), 9216 (essential type of the controlling expression
does not match its standard type), and 9219 (parameter of generic selection macro
is not evaluated exactly once) now consider generic selection expressions that have a
type predicate. |
| PCLP-4469 | Add detail message parameter to 1940 A new detail parameter has been added to message 1940 to explain how a non-const
reference parameter has been transferred out of a function. The MISRA C++ 2008
configuration file has been modified for Rule 7-5-3 to use this new parameter narrow
the scope of the message emissions. |
| PCLP-4475 | Modify 9034 to consider the rank of essentially signed integer constant
expressions The message 9034 previously supported an exception written in MISRA C 2012 Rule
10.3 which allowed an essentially signed integer constant expression to be assigned to
an essentially unsigned type so long as it could be represented within that type. A
modification to MISRA C 2012 Rule 10.3 in MISRA C 2012 Technical Corrigendum
1 added the additional restriction that the integer constant expression in question
cannot have a rank higher than signed int. Message 9034 now considers this rank
requirement in applying the exception. |
| PCLP-4476 | Update messages 9078, 9079, 9087, and 9295 to only report conversions
involving object pointers Definition: Messages 9078, 9079, 9087, and 9295 previously emitted for conversions
regardless of pointer type. A modification to the MISRA C 2012 document clarifies
that only object pointer types should be considered for rules 11.3, 11.4, 11.5, and
11.7. The other pointer types (void, function, and incomplete) are handled by other
MISRA C 2012 rules and their corresponding PCLP messages. |
| PCLP-4477 | Message 9080 no longer emits while initializing an object containing
pointers with 0 Previously message 9080 (integer null pointer constant used) emitted when structs
or unions with pointer fields were initialized using a single zero initializer ( = 0).
This message will no longer be emitted in that scenario. This change supports the
modification to Rule 11.9 in MISRA C 2012 Technical Corrigendum 1. |
| PCLP-4479
PCLP-4592 | Update 1776 to support additional implied assignment contexts Message 1776 (implicit conversion of string literal is not const safe) has been expanded
to report additional implied assignment contexts including assignment via function
calls and return statements. |
| PCLP-4480 | Modify 9028 to account for operand rank Description: The message 9028 (essential-type value is not an appropriate operand to
operator) previously did not consider the rank of the non-essentially character
operand in addition and subtraction operations. An update made to MISRA C 2012
Rule 10.2 in MISRA C 2012 Technical Corrigendum 2 states that the rank of the
non-char operand shall be no greater than int. If this is not the case, a violation of
Rule 10.2, and therefore an emission of 9028, has occurred. This change adds such
new behavior to 9028. |
| PCLP-4482 | Category of MISRA C 2012 Rule 13.6 changed from Mandatory to
Required Previously, MISRA C 2012 Rule 13.6 was classified as a Mandatory rule, per
specification in the original MISRA C 2012 document. An update in MISRA C 2012
Technical Corrigendum 2 changes the category of this rule to Required. This change
ensures such updates are reflected in the PCLP manual. |
| PCLP-4484 | Modify message 533 to consider the current C language standard Previously, emission of 533 was elided for the main function, regardless of the current
C language standard. The implicit zero-return behavior for main was not introduced
until C99. Message 533 now emits when main reaches the end of control without a
return statement for C89/C90 mode. This change also aligns with the corresponding
correction to MISRA C 2012 Rule 17.4 made in Technical Corrigendum 2. |
| PCLP-4485 | Category of MISRA C 2012 Rule 17.5 changed from Advisory to Required Previously, MISRA C 2012 Rule 17.5 was classified as an Advisory rule, per
specification in the original MISRA C 2012 document. An update in MISRA C 2012
Technical Corrigendum 2 changes the category of this rule to Required. This change
ensures such updates are reflected in the PCLP manual. |
| PCLP-4506 | Added documentation of the ’c’ flag for the -size option. The -size option had an undocumented flag titled ’c’, which can elicit message
1746. Documentation for this flag has been added to both the option description and
message description. |
| PCLP-4507 | Message 977 no longer emitted for some conditional-expressions Message 977 (non-literal non-Boolean assigned to Boolean) is no longer emitted for
any conditional-expression for which both the second and third operand are literals
or Boolean type. |
| PCLP-4523 | Expand message 1537 to support AUTOSAR M9-3-1 The message 1537 (const member functions returns non-const pointer to
class member) is now expanded to include smart pointers using the new
unique_ptr_constructor, shared_ptr_constructor, and weak_ptr_constructor.
It additionally will report when the address of a class member reference is returned. |
| PCLP-4526 | Added missing thread analysis semantic documentation The semantics no_thread, thread_not, thread_only, and thread_unsafe are now
documented. |
| PCLP-4531 | Improve documentation for the -h option The documentation of the -h option is improved and references to the F parameter
for this option were removed from the Reference Manual. |
| PCLP-4532 | Documentation Improvement The fca flag is now referenced in the relevant semantics subsections. The Reference
Manual also includes an additional FAQ to demonstrate adding semantics using
attributes. This addition clarifies how the GCC attribute syntax can be used to
automatically apply a -sem option e.g. -sem(func,pure). |
| PCLP-4537 | Clarify that the –compiler-options option is not required for the IAR
compiler Section Creating a compiler configuration for IAR Embedded compilers has been
updated to include a clarifying note that –compiler-options="..." is not required. |
| PCLP-4540 | Deprecations of C++ types may omit the struct, class, union, or enum
keyword Previously, PC-lint Plus would recognize -deprecate(type, struct A), but not
-deprecate(type, class A) in C++ modules. Now, the struct, enum, union, and
class keywords are an optional part of the -deprecate option, regardless of if the
source code does or does not use these keywords when specifying the use of a type.
The behavior in C mode has not been altered. |
| PCLP-4541 | Fixed false positive 8516 for non-compliant file paths Previously, 8516 would emit when the file path to a module did not adhere to the
accepted naming conventions, even if the name of the module itself did. Now, only
the name of the module can elicit an emission of 8516. |
| PCLP-4554 | Improved message descriptions for messages 810 and 423 Previously, it was unclear what kinds of modifications to custodial pointers would elicit
810 versus 423. To clarify, code examples were added to both message descriptions,
and the messages now cross-reference each other, demonstrating the relationship
between the two. |
| PCLP-4579 | Added version and copyright information to the PC-lint Plus executable
on Windows Previously, when inspecting the Properties of the PC-lint Plus executable on
Windows, only the Product Name could be found in the Details pane. The
information here has been improved, and now includes File Verison, Product
Version, and Copyright. |
| PCLP-4599 | Updated pclp_config to provide a warning when suspicious include path
parsing is detected The pclp_config utility will now provide a warning when POSIX parsing is disabled
and an ASCII single or double quote is encountered while parsing an include path. |
| PCLP-4612 | Enable support for AUTOSAR19 Rule A2-10-1 / AUTOSAR17 Rule
A2-11-1 The existing message 578 (declaration hides symbol) is enabled in au-autosar.lnt to
support AUTOSAR17 Rule A2-11-1 and au-autosar19.lnt to support AUTOSAR19
Rule A2-10-1. |
| PCLP-4656 | Support usage of __lint_assert in constexpr contexts Previously, usage of an assert (expanded to __lint_assert
via ++dassert(x)=__lint_assert(!!(x))) within a constexpr function would elicit
an emission of ??. The implementation of __lint_assert has been adjusted to allow
it’s use in such contexts. |
| PCLP-4685 | Improving the Documentation of the [+/-]libm Option The documentation of the libm option was improved. |
| PCLP-4687 | New Query functions for C++20 and C++23 features New Query functions have been added to support C++23 explicit object member
function (ParmVarDecl::isExplicitObjectParameter,
FunctionDecl::hasCXXExplicitFunctionObjectParameter,
CXXMethodDecl::isExplicitObjectMemberFunction, CXXMethodDecl::isImplicitObjectMemberFunction, CXXMethodDecl::getNumExplicitParams, DeclRefExpr::isCapturedByCopyInLambdaWithExplicitObjectParameter). New
Query functions
have been added to support C++23 consteval if statements (IfStmt::isConsteval,
IfStmt::isNonNegatedConsteval, IfStmt::isNegatedConsteval). New Query
functions have been added to support C++23 immediate-escalating expressions and
functions (FunctionDecl::isImmediateEscalating,
DeclRefExpr::isImmediateEscalating,
CXXConstructExpr::isImmediateEscalating). A new Query function has been
added to support C++20 parenthesized list initialization (CXXParenListInitExpr). A
new Query function has been added
to support C++20 immediate functions (FunctionDecl::isImmediateFunction). A
new Query function has been added to support declarations in C++20 modules
(TagDecl::isThisDeclarationADemotedDefinition). A new Query function has
been added to support C++17 nested namespaces (NamespaceDecl::isNested). Some
other
various new Query functions have been added (VarDecl::hasDependentAlignment,
CXXRecordDecl::isCapturelessLambda,
CXXRecordDecl::isTriviallyCopyConstructible, LabelStmt::isSideEntry). |
| PCLP-4688 | Locker classes no longer need to have default constructors Message 2485 (invalid semantics for locker class) was previously emitted for classes
marked as a locker class for Thread Analysis if they did not have a default constructor.
Classes without a default constructor may now be designated as a locker class. |
| PCLP-4700 | Including a query example for tautological assignment Section ??query-examples was updated to include new query example to report on
tautological assignment. |
| PCLP-4710 | Soften message 9224 for test of integer literal zero Message 9224 (expression is not effectively boolean and must be explicitly tested for
zero) will no longer be reported for a condition consisting solely of the integer literal
zero. |
| PCLP-4719 | Improved support for MISRA C 2012 Rule 1.3 Previously, some support mechanisms for MISRA C 2012 Rule 1.3 in au-misra3.lnt
overlapped with other rules, creating duplicates. Now, a comment referencing the
previously overlapping rule exists in place of the support mechanism. Additionally,
support for this rule now references the same annexes in the C90 and C99 standards
that are mentioned in Appendix H of MISRA C 2012, which elaborates on Rule 1.3. |
| PCLP-4745 | Add support for Keil uVision armclang compiler We now support the Keil uVision armclang compiler in pclp_config.py as
keil_armclang. |
| PCLP-4768 | Fallthrough attributes are now excused from message 9138 The [[fallthrough]] attribute, and all of it’s variants, no longer elicit 9138. If other
violations occur on the same line, the message will still be issued. |
| PCLP-4772 | Citations are now rendered when viewing message descriptions using -help
or -dump_messages Previously, any citations found in reference manual message descriptions were replaced
by whitespace when printing the description using ?? or -dump_messages. Citations
are now printed when using these options. |
| PCLP-4801 | Improving the Integration of PC-lint Plus into Eclipse-based IDEs Section Integrating PC-lint Plus with Eclipse-based IDEs has been reworked to define
an output parser, highlight messages in the Console view, show parsed output in the
Problems pane, allow navigation to code issues by selecting a message in the Problems
or Console pane, and more. |
| PCLP-4802 | Emphasize the effects of marking code as library on analysis The documentation for options -libh, +libh, -libm, +libm, -libdir, +libdir,
-library, +libclass, -elib, and flag flb have been updated to refer to the effects
that marking code as library has on analysis by referring to flag flf for more
information. |
| PCLP-4806 | Better support IAR ARM compiler configurations for atomics Previously some IAR compiler builtins for atomic operations were not accounted for
in compiler.yaml and could lead to configuration errors. Those have been addressed. |
| PCLP-4808 | Added getValue query for StringLiteral AST nodes Previously, strings composing StringLiteral nodes could not be retrieved via
queries. A getValue query, returning the string for any StringLiteral, was added. |
| PCLP-4850 | Message 970 no longer emitted for postfix operator parameters Message 970 (use of modifier or type outside of a typedef) is no longer emitted for
the required int placeholder parameter of a postfix increment or decrement operator. |
| PCLP-4888 | Harmonize emission conditions of messages 720, 820, and 9084 Messages 720 (boolean test of assignment), 820 (boolean test of parenthesized
assignment), and 9084 (result of assignment operator used) are now all emitted for
compound assignment operators and calls to overloaded assignment operator functions
using infix syntax. Message 820 can no longer be suppressed by surrounding the
expression in additional parentheses. The supplemental messages associated with
messages 720 and 820 have been refined. |
| PCLP-4889 | Message 9008 no longer emitted in template instantiations Message 9008 (comma operator used) is no longer emitted when a comma is used as
a fold operator in a fold expression, or within template instantiations. |
| PCLP-4899 | Update description of message 606 The description of message 606 (non-ANSI escape sequence) has been updated to
include the \u and \U sequences on the list of approved escape sequences. The
description of the message has also been reformatted to address rendering issues with
the text of the description. |
| PCLP-4904 | Message 9436 now emitted for constant static data members Message 9436 (symbol has array type) was previously suppressed for static
data members that were declared as constexpr (in C++11 and later) or
const-qualified (prior to C++11). This message is no longer automatically
suppressed for this case. The previous behavior may be obtained using
the option -equery(9436,"msgSymbolParam(1).VarDecl:{isStaticDataMember
&& isConstexpr}") (for constexpr static data
members) or -equery(9436,"msgSymbolParam(1).VarDecl:{isStaticDataMember
&& getType.getNonReferenceType.isConstQualified}") (for const-qualified
static data members). |
| PCLP-4916 | Thread Analysis message source locations can now emit base names Thread analysis messages, documented in the Thread Analysis section, with source
locations will now respect negative values of the flag ffn and omit the base name of
a file. |
| PCLP-4939 | -deprecate options in coding standard configuration files no longer use
deprecation commentary The coding standard configuration files found in lnt/ previously used the commentary
argument of the -deprecate option to include relevant Rule text when message 586
was emitted. Rule text for guidelines associated with message 586 are now added
using the -append option. |
| PCLP-4947 | Improve reporting of MISRA C 2012 AMD 4 Rule 22.18 Message 2457 replaces message 2531 for reporting violations of MISRA C 2012 AMD
4 Rule 22.18 in au-misra3-amd3.lnt. |
| PCLP-4959 | Updated AUTOSAR append text to include the version The AUTOSAR rules appended to relevant messages now include the version of
AUTOSAR the message pertains to. |
| PCLP-4967 | Use of coding standard configuration files represented in message 900 -append options have been added to coding standard configuration files which will
cause message 900 to be appended with bracketed text indicating the configuration
files used. Message 900 may be enabled with the option +e900. |
| PCLP-4992 | pclp_config now accepts command line arguments when invoked from
another python module The pclp_config.py utility can now be called with command line arguments from
another Python module without the need to invoke the script in a sub-process. |
| PCLP-4993 | Deprecate CryptDecrypt and mktemp in au-cwe.lnt CryptDecrypt is now deprecated as part of the support mechanisms for CWE-327.
mktemp is now deprecated as part of the support mechanisms for CWE-377. |
| PCLP-5001 | Corrected append text for CERT C Recommendation EXP05-C Support for CERT C Recommendation EXP05-C now references the correct guideline. |
| PCLP-5002 | Updated message description for error 52 The message description for 52 (expected an lvalue) previously referenced a defunct
flag option and did not make it clear that any assignment operator may elicit the
message. The message description has been updated to resolve these issues. |
| PCLP-5019 | Support GCC configurations using C++23 with the pclp_config.py tool The pclp_config.py tool has been updated to support C++23 configuration for GCC.
Some additional standard flags have been added, specifically for C17 and C23. |
| PCLP-5030 | Add message 1765 The new message 1765 (object has been previously self-moved but is used) will report
when an object is used which had previously moved into itself. |
| PCLP-5035 | Extend the fbl flag option to identifier lookups in dependent base classes Enabling the fbl flag option previously allowed dependent base classes to be searched
for type names encountered in class templates. This lookup behavior is now extended
to identifiers when the fbl flag option is set. |
| PCLP-5039 | Added isOrdinary, isWide, isUTF8, isUTF16, isUTF32, isUnevaluated, and
containsNonAscii queries for StringLiteral AST nodes Previously, the kind of a StringLiteral node could not be determined using queries,
nor could it be determined whether the string represented by the node contained
non-ASCII characters. New queries were added to allow for more detailed analysis of
StringLiteral nodes. |
| PCLP-5049 | Add support for GCC’s assume attribute Previously, processing of GCC’s assume attribute could elicit an error message. This
has been corrected. |
| PCLP-5056 | Add section about PCLP_NO_LNT_VERSION_CHECK to the "Using PC-lint Plus
in Safety Critical Applications" document The "Using PC-lint Plus in Safety Critical Applications" document
(doc/pclp-sca.pdf) now includes a section which describes the recommendation to
not set the environment variable PCLP_NO_LNT_VERSION_CHECK. |
| PCLP-5065 | C and C++ language standards can now be specified with pclpvscfg Previously, the plpcvscfg utility did not provide a way to specify the language
standard. In many cases, this is required to generate a valid Visual Studio compiler
configuration. New menus allow the user to select C and C++ language standards. |
| PCLP-5066 | Improve rendering of paragraph separations for -help and -dump_messages The message descriptions emitted when using the -help and -dump_messages did not
previously always separate paragraphs with an empty line. This has been corrected. |
| PCLP-5068 | Add pclp_config option transformation for TI compilers defines The pclp_config.py tool’s compilers.yaml file is updated to include the
preprocessor define options for the Texas Instruments compilers. |
| PCLP-5076 | Added new language option flags in database of pclp_config The pclp_config.py tool has had the compilers.yaml file updated with language
version flags from the latest versions of each compiler. This mostly includes additions
of C17, C23, C++20, and C++23 support. |
| PCLP-5077 | Informational message 2751 replaced with warning message 2541 Informational message 2751 is replaced with warning message 2541. The message
indicates a condition that will likely cause false positive thread analysis warning
messages. |
| PCLP-5078 | Add project configuration support for Microchip compilers Previously using any of the Microchip compilers as an argument to pclp_config.py
while using –generate-project-config would not generate a complete project
configuration. This capability has been added. |
| PCLP-5122 | Enhance message presentation when enabling MISRA C 2012 amendments
The MISRA C 2012 amendment
author files, au-misra3-amd1.lnt, au-misra3-amd2.lnt, au-misra3-amd3.lnt, and
au-misra3-amd4.lnt, -append options have been modified to include additional
text indicating the amendment used to enable a supporting message. This makes
pinpointing the author file responsible for an issued message easier. |
| PCLP-5147 | Use of MISRA guideline headline text Copyrighted MISRA guideline headline text is now used (with permission) in the
MISRA configuration files used to enable support for MISRA standards and in
relevant support statements appearing in message descriptions. See the first page of
the Messages chapter for relevant copyright information. |
| PCLP-5159 | Updated the "Using PC-lint Plus in Safety Critical Applications"
document The "Using PC-lint Plus in Safety Critical Applications" document (located in
doc/pclp-sca.pdf) has been updated with new guidance. See the "Revision History"
section of that document for details. |
| PCLP-5174
PCLP-3195 | Message 1946 no longer emits for functional casts using curly braces or
those resulting in a constructor call Previously, message 1946 (use of functional cast) was issued for functional casts using
curly braces. For those resulting in constructor calls, only those that produced a call to
an explicit constructor were excused. Now, functional casts using curly braces and
those invoking a constructor are excused completely. This change aligns the behavior
of the message with the specifications of MISRA C++:2023 Rule 8.2.2. |
| PCLP-5177 | Noted potential limitation when using pclp_config.py with a non-English
locale The documentation has been updated to note that the pclp_config.py configuration
script may not be able to extract expected information when generating a compiler
configuration in an environment with a non-English locale. |
| |
|
|
| PCLP-2135 | Fix 9003 false negative File-scope static variables are now considered for message 9003 (could define variable
at block scope). |
| PCLP-3198 | Fixed false positive 9045 for nested structures Message 9045 (complete definition of symbol is unnecessary in this translation unit)
is no longer incorrectly issued for structures whose only use appears within another
structure. |
| PCLP-3213 | Resolved false positive 9119 for functional style casts using brace
initialization Previously, 9119 was erroneously emitted for functional style casts using braces
instead of parenthesis. Both forms are explicit type conversions, and therefore not
candidates for 9119. This defect has been corrected. |
| PCLP-3390 | Resolved false positive 9034 when true and false macros are used as macro
arguments Previously, 9034 would occasionally misidentify the MISRA C 2012 essential type of
true and false macros when used as macro arguments. Now, true and false macros
are always correctly determined to be essentially boolean, thereby eliminating false
positive emissions of 9034. Additionally, uppercase variants these macros (TRUE and
FALSE) were incorrectly diagnosed as not essentially boolean. Now, such macros are
considered essentially boolean. |
| PCLP-3734 | Assumption that pointer may be null is now applied following a comparison
against null Resolves an issue where value tracking would fail to consider a pointer as potentially
null where the pointer had previously been checked for null using a comparison against
null. |
| PCLP-3848 | Resolve false negative 1774 for if, while, for, and switch statement
condition and/or initializer variables Previously, 1774 remained silent for if/while/for/switch statement condition or
initializer variables whose initializing expressions attempted a non-dynamic cast from
one pointer type to another. This defect has been corrected. |
| PCLP-3856 | Fix 438, 838, 522, and 523 false positives related to lambda captures Lambdas which capture variables by reference are now considered by messages 438,
838, 522, 523. |
| PCLP-3867 | Message hooks inappropriately executed for supplementals of suppressed
messages A message Hook could previously be executed for the supplemental message of a
suppressed primary message, producing unexpected results. Message hooks are no
longer executed for supplementals of suppressed messages. |
| PCLP-3967 | Functions named "random" or "rand" within user-defined namespaces are
no longer reported by message 2461 Previously, false positive instances of message 2461 were reported for functions by
the name of "random" or "rand" within user-defined namespaces. The message now
applies only to these functions when in namespace std or at global scope. |
| PCLP-4010 | Fix false positive 9049 within lambda body Message 9049 (increment/decrement operator used in expression with other
side-effects) is no longer issued for increment and decrement expressions that are
within the body of a lambda expression and which have no additional-side effects. |
| PCLP-4182 | Resolved false negative 9060 in long block comments Previously message 9060 (trigraph in comment), was not emitted if it was far inside
of a block comment. This has been resolved all trigraphs in the block comment will
be found. |
| PCLP-4260 | Correction of internal error 795D141F in thread analysis semantic
processing Combinations of several thread analysis semantics and certain rare code sequences
could cause an incomplete semantic state which would cause an internal error when
referenced. The cause of the incomplete semantic state has been corrected. |
| PCLP-4332 | Removed claim about 605’s applicability in message 1537’s description The message 1537 (non-const pointer returned from const member function)
previously claimed that message 605 (pointee implicitly gains/loses qualifier) would
be emitted for returning the address of a class data member from a const function.
This is incorrect and has been removed. |
| PCLP-4432 | 586 reports deprecated macros in a nested macro expansion Deprecated macros appearing in a nested macro expansion will now be reported by
message 586. |
| PCLP-4440 | Memory leaks fixed Many small memory leaks were fixed, so PC-lint Plus should use a slightly smaller
peak memory use during execution. |
| PCLP-4465 | Fixed false negative for 1781 and 1940 when parameter is reference to
pointer Previously messages 1781 and 1940 weren’t emitted when a reference parameter was
assigned to another parameter which was a reference to pointer. These messages will
now emit in such a scenario. |
| PCLP-4466 | Fixed false positive for 1781 and 1940 when parameter is reference to
pointer Previously messages 1781 and 1940 were emitted in cases when the function
parameter’s address being assigned wasn’t a reference type. These messages will not
be emitted in such a scenario. |
| PCLP-4471 | Potential crash when using defaulted virtual destructors in C++03 mode An explicitly-defaulted overriding virtual destructor in a base class could previously
cause PC-lint Plus to crash when analyzed in C++03 mode. This issue has been
resolved. |
| PCLP-4487 | Removed duplicate message 9436 when using an array function parameter
in a template Previously when message 9436 was emitted for an abstract template declaration of a
function parameter, it was also emitted for each template instantiation as well. Now
when that message is emitted in that scenario, it is only emitted once for the abstract
template declaration. |
| PCLP-4509 | Resolve false positive for 9128 Message 9128 (plain character data mixed with non-plain-character data) is no longer
emitted for conditional operators where the second and third operands are both plain
char types. |
| PCLP-4555 | Variable access information in thread analysis function reports issued in
inconsistent order The variable access information in thread analysis function reports was emitted in an
inconsistent order. The emitted information will now be ordered by variable name. |
| PCLP-4558 | Messages 550, 551, 552, 727, 728, 729, and 738 will now respect all
unevaluated contexts Previously, messages 550 (local variable not accessed), 551 (static non-local variable
not accessed), 552 (external variable not accessed), 727 (static local variable not
initialized), 728 (static non-local variable not initialized), 729 (external variable not
initialized), and 738 (address of static local variable not explicitly initialized before
passed to a function) may have not considered all unevaluated contexts, such as
*alignof * operators, constraint-expression of concept definitions, requires-clauses, and
the requirement-seq of requires-expressions. Now they will consider these unevaluated
contexts and possibly emit messages when the only access or initialization happened
in an unevaluated context. |
| PCLP-4566 | Thread Analysis messages issued in inconsistent order The second phase thread analysis messages were emitted in an inconsistent order;
these messages will now be emitted in a consistent order based upon the referenced
object names. |
| PCLP-4571 | Message 979, 1401, and 9175 locations have been fixed for out of line
template class method instantiations Message 979 (function could be marked with pure semantic) is now emitted at
the location of an out of line method definition for a template class rather than
the declaration when emitted for a specific instantiation. A duplicate emission of
1401 (non-static data symbol not initialized by constructor), and 9175 (function has
void return type and no external side-effects) at the location of a template class
method declaration for a specific instantiation with an out of line definition has been
eliminated. These messages will only be emitted at the location of the out of line
definition. |
| PCLP-4582 | Duplicate 586 messages have been resolved Message 586 (deprecated usage) was previously emitted multiple times for type
deprecation when a type was elaborated with an explicit namespace. A duplicate
basetype deprecation would also be emitted regardless if a type deprecation occurred,
or if a basetype deprecation was already emitted. Both of these duplications have
been resolved. |
| PCLP-4721 | Limit the situations in which message 923 is enabled within au-misra3.lnt The au-misra3.lnt configuration file contained an option whose intention was to
enable message 923 (explicit cast between pointer and non-pointer types) only for
casts involving void pointers but the message was also enabled for casts involving
other uses of void (such as a pointer to a function that returns void) which had the
potential to result in false positives. This has been corrected. |
| PCLP-4742 | Resolve false positive 757, 758, 759, 768, 769 and false negative 749, 751,
752, 753, 754 in macro expansion Previously a declaration in a macro expansion was considered to be in a header region
regardless of whether it was written in the module or not. This may have resulted
in false positives for messages 757 (global declarator not referenced), 758 (global tag
type not referenced), 759 (header declaration could be moved from header to module),
768 (global structure member not referenced), or 769 (global enumeration constant
not referenced). Additionally the corresponding messages 749 (local enumeration
constant not referenced), 751 (local typedef not referenced), 752 (local declarator not
referenced), 753 (local tag type not referenced), and 754 (local structure member not
referenced) would not be emitted in place of 769, 756, 757, 758, or 768 respectively.
Macro expansions are now considered to be in a header only if they are written there,
which resolves these issues. |
| PCLP-4760 | Resolved crash for CXXRecordDecl’s getLambdaStaticInvoker,
isProvablyNotDerivedFrom, and isVirtuallyDerivedFrom’ queries Previously a crash would occur if
a query was evaluated for CXXRecordDecl’s getLambdaStaticInvoker and the class
was not a lambda, or for isProvablyNotDerivedFrom, or isVirtuallyDerivedFrom
where one of the participating classes did not have a definition. These crashes have
been resolved. |
| PCLP-4761 | Changed CXXRecordDecl’s isCLike and isDerivedFrom queries to return
None for forward declarations Previously forward declared classes might have provided a value when using
CXXRecordDecl’s isCLike or isDerivedFrom queries. Now a None will be returned
since the value of these queries are unknowable if a definition of the participating
classes is not present in the module. |
| PCLP-4762 | Correct return value for isLocalClass Query function The isLocalClass Query function is documented as returning the enclosing function
for local classes but previously returned a Boolean value indicating only whether
or not the supplied class is local. The function now behaves as described in the
documentation. |
| PCLP-4785 | Eliminated some duplicated type deprecations Previously type deprecations in C mode of struct, union, or enum types would result
in duplicate message 586 (is deprecated) emissions. Only one message will be emitted
in this scenario now. |
| PCLP-4818 | Resolve false positive 1550 in lambda parameter default argument The message 1550 (exception thrown in function call not on exception list) would
previously be incorrectly issued for lambda function parameters that had a function
call as a default argument if the exception from the call did not match the exception
specification of the function enclosing the lambda function. Now the message is only
issued if the function call in the default argument does not match the exception
specification of the lambda expression itself. |
| PCLP-4872 | Remove CWE-398 category CWE-398 has been removed from the au-cwe.lnt file because CWE categories are
not allowed in mapping files. |
| PCLP-4912 | Internal error when using the hasICEInitializer Query function on a
variable without an initializer Use of the hasICEInitializer Query function on a variable that does not have
an initializer would previously result in an internal error. This behavior has been
corrected. |
| PCLP-4937 | Internal error when using the getBitWidthValue Query function on a
bit-field with value-dependent width Calling the getBitWidthValue Query function on a bit-field with a value-dependent
bit width expression could previously cause PC-lint Plus to terminate with an internal
error. This behavior has been corrected. |
| PCLP-4957 | Barr C rule 7.1.o not honored in the naming conventions The previous implementation of naming convention rules resulted in false positives
for variables that require multiple prefixes when utilizing the au-barr.lnt author
file. This issue has been addressed by honoring the rule subset 7.1.o. |
| PCLP-4970 | Fix hang when a using directive attempts to create a cycle in the strong
type hierarchy A hang that could occur when a self-referential using directive whose name was
previously designated as a strong type is encountered has been resolved. |
| PCLP-4974 | Resolve error messages related to enumeration template parameters with
underlying character or Boolean types Previously error messages such as 1024 (no matching function for call) may have
be emitted in some instances where a template parameter of an enumeration with
underlying type that is a character type or Boolean type. These error messages are
no longer emitted. |
| PCLP-4986 | Corrected message 1962 to be an Elective Note Message 1962 was incorrectly labeled as an Informational message but is now
corrected to be an Elective note. |
| PCLP-4987 | Preprocessing-only mode now expands system headers Previously, system headers may not have been expanded when using the -p option to
only preprocess. This issue has been resolved and headers will always be expanded. |
| PCLP-5021 | Corrected append text for CERT C rules Update instance where rule DCL40-C was classified as a recommendation and correct
append text for ARR37. |
| PCLP-5034 | Added missing built-in function semantics for Qt’s QMutexLocker class Usage of Qt’s QMutexLocker class would cause message 2752 and associated
supplemental messages to be emitted because the built-in function semantics for the
class members were incomplete. The missing built-in function semantics have been
added. |
| PCLP-5036 | Resolved internal errors 19F5CC61 and 998C0E63 for constrained function
template arguments Multiple instantiations of a C++20 constrained function template argument with a
specialized class template would previously elicit an internal error. This has been
resolved. |
| PCLP-5064 | Correct default Visual Studio language standards The pclp_config.py utility has been updated to provide a better default C and C++
language standard for each Visual Studio version. |
| PCLP-5067 | Internal error 499C50D3 when processing indeterminate mutexes It was previously possible to create an invalid locker object with an indeterminate
mutex which could result in an internal error during later processing. This has been
corrected. |
| PCLP-5087 | Change the suppression options used to enable the messages supporting
MISRA C Rule 11.6 The MISRA configuration files contained suppression options that enabled messages
177, 179, and 923 only for casts involving void pointers, but the messages were
not enabled for qualified versions of void pointers, which resulted in potential false
negatives. This has been corrected. |
| PCLP-5106 | Removed message 754 and 768 for MISRA C Rule 2.8 Previously messages 754 (local member not referenced) and 768 (global member not
referenced) were used to support MISRA C Rule 2.8, but now have been removed as
they do not apply to this rule. |
| PCLP-5113 | Resolved false negative 818, 843, 844, 952, 953, 954, 1764, and 1803 for
initializer lists Messages 818 (parameter could be pointer to const), 818 (parameter could be pointer
to const), 843 (static variable could be const), 844 (static variable could be pointer to
const), 952 (parameter could be const), 953 (local variable could be const), 954 (local
variable could be pointer to const), 1764 (parameter could be reference to const) and
1803 (variable could be constexpr) previously would not be emitted if the object in
question was used in a initializer list. These messages will now be emitted. |
| PCLP-5116 | Resolved sporadic false negative 9012 In rare instances message 9012 (body should be a compound) would previously not
have been emitted for offending code. This is now fixed and the message is now emitted
consistently. |
| PCLP-5176 | Update support claim for MISRA C++ 2008 rule 0-1-4 and
AUTOSAR17/AUTOSAR19 rule M0-1-4 The support claim for the rules 0-1-4 and M0-1-4 was amended to partially supported.
PC-lint Plus does not currently report on global non-static variables that are not
referenced for the noted rules. |
| PCLP-5190 | Corrected append text for several CERT C guidelines Rules DCL41-C, SIG30-C, SIG31-C, SIG34-C, and SIG35-C were incorrectly appended
with a recommendation label, while the recommendation ARR00-C was noted as being
a rule. |
| |
PC-lint Plus 2.1 includes several new featues and numerous improvements including:
|
|
| PCLP-1519
PCLP-4422
PCLP-4040 | Add Boolean function result inferencing for Value Tracking Support for inferencing in Value Tracking has been extended to improve support for
common smart pointer usage patterns with the recognition of conditional dereferences
in the scope of pointer tests made indirectly using Boolean functions (including
operator bool). Additionally, Value Tracking now walks rewritten binary operators
generated by reliance on three-way comparison functions. |
| PCLP-2197 | Add anchored expressions to Value Tracking messages to enable -equery
suppressions Value Tracking messages now provide anchored expressions when available to enable
AST-based suppressions using -equery. Anchor information for an emitted message
can be found using the +paraminfo option. |
| PCLP-3197 | False negative instance of message 9034 involving compound assignment False negative instances of message 9034 for compound assignment operators assigning
to objects with types ranked lower than int and unsigned int have been resolved.
Previously, the messages affected by this false negative were only emitted when the
option -misra_interpret(c2012,essential type differs from standard type
only for int and unsigned int) was used. |
| PCLP-3344 | Add pclp_config version to generated compiler configuration header files The pclp_config utility now includes a comment with version information in
generated compiler configuration header files. |
| PCLP-3351 | Improve side effect classification for GNU Statement Expressions The classification of top-level and inner side effects for the GNU Statement Expression
language extension has been improved to resolve false positive instances of 523 for
statement expressions with inner side effects. This also resolves false negative instances
of message 522 for top-level statement expressions and related side effect interactions
for other messages such as 9007. |
| PCLP-3622 | Document integration with Visual Studio Code Visual Studio Code is now included among the list of IDEs with PC-lint Plus
integration instructions in the Reference Manual. |
| PCLP-3623 | Fix typo in custom message text for BARR-C 5.1a An extra space following the typedef name included within single quotes in the text
of the custom message 8527 emitted by a -astquery option in au-barr.lnt has been
corrected. |
| PCLP-3689 | Correct omission of documentation for existing C++98 support in
description of -std and fix various trivial documentation typos The description of the -std option has been updated to correct the previous omission
of c++98 from the documented list of valid arguments to this option. Several trivial
spelling and grammar issues throughout the documentation have also been fixed. |
| PCLP-3780 | Expand recognition of Boolean type hierarchies defined using Strong Types
when determining whether an expression is Boolean for the purposes of
MISRA C 2004 rules One of the methods by which an expression could be considered Boolean for the
purposes of messages used to support MISRA C 2004 rules 12.6 (9232), 13.1 (9236),
13.2 (9224), and 15.4 (9238) is through the Strong Type of the expression. Previously,
the Strong Type of the expression would only cause the expression to be considered
Boolean for this purpose if the Strong Type of the expression was the designated
Strong Boolean Type (set by a -strong option using either the B or b flag). This
Boolean classification now also recognizes an expression whose Strong Type is not
identical to the Strong Boolean Type but is convertible to it through a type hierarchy
as Boolean for the purpose of these rules. |
| PCLP-3811 | Add no_specific_walk semantic, a new name for the previously
undocumented nowalk semantic Previous versions of PC-lint Plus recognized an undocumented function semantic
nowalk which could inhibit Value Tracking from performing specific walks of a
function while still permitting the general walk to occur. This semantic has been
renamed no_specific_walk and documented. The previous name is retained as an
alias for compatibility. |
| PCLP-3840 | Add support for asm and __asm keywords for IAR compiler configs IAR compiler configurations did not previously include the __asm keyword as an
option to specify in-line assembly. This change adds support for this keyword.
Additionally, support for both asm and __asm was added to the IAR 8051 compiler
configuration. |
| PCLP-3859
PCLP-4047 | Resolve additional spurious pre-run crash messages caused by remote code
injection by antivirus software Spurious non-fatal crash messages with exception code 0x4001000A or 0x40010006
caused by remote code injection by certain antivirus software will no longer be emitted. |
| PCLP-3873 | Improve compiler configuration support for Microchip XC8 The pclp_config compiler database has been updated to improve support for the
Microchip XC8 compiler when generating a compiler configuration. |
| PCLP-3888 | Added missing thread analysis semantic documentation The thread analysis function semantics async, thread_lock, thread_unlock,
thread(thread_name), and thread_mono(thread_name) were not documented. The
reference manual has been updated. |
| PCLP-3903 | Improved pclp_config support for extracting compiler predefined macros The extracted predefined macros could be incomplete (Visual Studio) or absent
(Microchip XC8). Newer versions of Visual Studio provide a method to dump
predefined macros. This new method is used and if it fails the prior method is used.
Instructions for the Microchip XC8 predefined macros has been added. |
| PCLP-4002 | Support __atomic_is_lock_free built-in for sizes up to long long The __atomic_is_lock_free built-in used by standard library implementations now
returns true for sizes up to the size of long long. |
| PCLP-4231 | Updated descriptions for messages 9225 and 1502 The description of message 9225 has been updated to correct a typo and the
description of message 1502 updated to more accurately articulate the message
parameterizations. |
| PCLP-4235 | Expanded description of +fnr to clarify that it specifically applies to
functions not available to be walked The description of the fnr flag now notes that it applies only to functions not available
to be walked and describes when this occurs. |
| PCLP-4238 | New –shell-parse-compiler-options option for pclp_config.py The pclp_config.py script now supports
the new option –shell-parse-compiler-options which can be used to opt-in to
shell-like parsing of the arguments for –compiler-options, –compiler-c-options,
and –compiler-cpp-options. The behavior of this shell-like parsing is controlled by
the –posix-command-parsing and –no-posix-command-parsing options. |
| PCLP-4245 | Add instructions for locating GCC compiler for STM32CubeIDE users Section ??Creating a compiler configuration for GCC or Clang now includes
instructions for extracting the location of the GCC compiler from within the
STM32CubeIDE development tool. |
| PCLP-4248 | Recognize TI –include_path options with unquoted paths When generating compiler configurations for TI compilers, providing an unquoted
path with the option –include_path resulted in a failure to represent that path in
the generated .lnt file. This change resolves the issue, allowing unquoted file paths
to be used with –include_path. |
| PCLP-4250 | Updated descriptions of message 759 and the flo flag option Message 759 (header declaration for symbol could be moved from header to module)
may be issued within a library region if the referenced symbol is a non-library symbol,
such as occurs when a declaration for the symbol also appears in a non-library region
when the flo flag option is OFF (the default). The description of message 759
previously implied that the message would never be issued within a library region. The description of the flo flag option now notes that library suppressions are not
applied in certain situations. |
| PCLP-4251 | Expanded support for __int128, __int128_t, and __uint128_t The non-standard __int128 keyword and the __int128_t and __uint128_t typedefs
are now supported by default. Support was previously only enabled when using -sp8
or -sp16. |
| PCLP-4262 | Add version number, date, and revision history to "Using PC-lint Plus in
Safety Critical Applications" document The "Using PC-lint
Plus in Safety Critical Applications" document (doc/pclp-sca.pdf) now includes a
version number and date on the title page and concludes with a new revision history
section. |
| PCLP-4266 | New faa flag option controls aligned allocations A new flag faa has been added to enable or disable C++17 aligned allocations for a
project. |
| PCLP-4272 | New Query functions for working with types New Query functions have been added to provide direct access to fundamental
types (getVoidType, getBoolType, getCharType, etc.), obtaining the size of
types (getTypeSizeInBits and getTypeSizeInChars), converting between bits
and char units (toCharUnitsFromBits and toBitsFromCharUnits), obtaining the
canonical type of a given type (getCanonicalType), and obtaining the integral
type corresponding to a specific bit width (getSignedIntTypeForBitwidth and
getUnsignedIntTypeForBitwidth). |
| PCLP-4291 | Support accessing contextual values of non-persistent variables within the
body of echo expressions in Queries The values of non-persistent variables at the time that an echo was registered can
now be accessed during the later evaluation of the echo body. |
| PCLP-4301 | Support for MISRA C 2012 AMD-3 MISRA
C 2012 Amendment 3 is now supported using the provided au-misra3-amd3.lnt file
found in the lnt/ directory of the PC-lint Plus distribution. |
| PCLP-4302 | Add new message 9202 to support MISRA C 2012 AMD-3 Rule 6.3 The new message 9202 (bitfield declared as member of union) reports member bitfields
declared in unions and supports MISRA C 2012 AMD-3 Rule 6.3. |
| PCLP-4303 | Add new message 9203 to support MISRA C 2012 AMD-3 Rule 8.16 The new message 9203 (declaration contains an alignment attribute whose expression
evaluates to zero) reports on declarations containing alignment attributes with
zero-valued expressions and supports MISRA C 2012 AMD-3 Rule 8.16. |
| PCLP-4304 | Add new message 9205 to support MISRA C 2012 AMD-3 Rule 8.17 The new message 9205 (declaration contains multiple alignment attributes) reports
when a declaration is encountered containing multiple alignment attributes and
supports MISRA C 2012 AMD-3 Rule 8.17. |
| PCLP-4305 | Add new message 841 to support MISRA C 2012 AMD-3 Rule 17.10 The new message 841 (function is declared as noreturn but returns a value) reports
when a function is declared as noreturn but whose return type is not void and supports
MISRA C 2012 AMD-3 Rule 17.10. |
| PCLP-4306 | Add new message 9211 to support MISRA C 2012 AMD-3 Rule 23.1 The new message 9211 (generic selection is not expanded from a function-like macro)
reports when a generic selection is encountered that is not expanded from a macro or
when the controlling expression is not listed as one of the macro’s arguments. This
implements MISRA C 2012 AMD-3 Rule 23.1. |
| PCLP-4307 | Add new message 2419 and 9213 to support MISRA C 2012 AMD-3 Rule
23.2 The new message 2419 (controlling expression contains a side effect which will not
be evaluated) reports when a controlling expression contains a side effect. The new
message 9213 (controlling expression contains a call to function which will not be
called) reports when a controlling expression contains a function call. This implements
MISRA C 2012 AMD-3 Rule 23.2. |
| PCLP-4308 | Add new message 9208 to support MISRA C 2012 AMD-3 Rule 23.3 The new message 9208 (generic selection does not contain any non-default
associations) reports when a generic selection is encountered that only contains a
default association and supports MISRA C 2012 AMD-3 Rule 23.3. |
| PCLP-4309 | Add new message 2416 to support MISRA C 2012 AMD-3 Rule 23.4 The new message 2416 (association list contains inappropriate type) reports when
a generic selection is encountered that contains an association which can never be
selected. This implements MISRA C 2012 AMD-3 Rule 23.4. |
| PCLP-4310 | Add new message 9210 to support MISRA C 2012 AMD-3 Rule 23.8 The new message 9210 (generic selection does not contain any non-default
associations) reports when a generic selection is encountered that contains a default
association that does not come first or last in the association list and supports MISRA
C 2012 AMD-3 Rule 23.8. |
| PCLP-4312 | Add new message 2505 to support MISRA C 2012 AMD-3 Rule 7.5 The new message 2505 (argument to integer constant macro should be an unsuffixed
integer literal) reports when an integer constant macro uses an inappropriate type.
This implements MISRA C 2012 AMD-3 Rule 7.5. |
| PCLP-4313 | Add new messages 2502 and 9503 reporting alignment conflicts to support
MISRA C 2012 AMD-3 Rule 8.15 The new messages 2502 (differing alignment requirements seen) and 9503 (declaration
specifies an alignment differently from another declaration that derives an equivalent
alignment on a different basis) report when an object is declared multiple times with
different alignment requirements. These messages provide partial support for MISRA
C 2012 AMD-3 Rule 8.15. |
| PCLP-4314 | Add new message 2417 to support MISRA C 2012 AMD-3 Rule 17.13 The new message 2417 (const/volatile on function type has unspecified behavior)
reports when a function type is specified with const or volatile. This new message,
combined with existing errors 4175 and 5805, supports MISRA C 2012 AMD-3 Rule
17.13. |
| PCLP-4316 | Add new messages 2504 and 9504 to support MISRA C 2012 AMD-3 Rule
21.22 The new message 9504 (argument supplied to type-generic macro resulting in call to
function should have an essentially signed, essentially unsigned, or essentially (real
or complex) floating type) reports when a type-generic macro from <tgmath.h> is
encountered that does not use an appropriate essential type. This implements MISRA
C 2012 AMD-3 Rule 21.22. 2504 (argument supplied to type-generic macro resulting
in call to function should have a real or complex arithmetic type) is also introduced
to warn about such uses that result in undefined behavior. |
| PCLP-4317 | Add new message 9218 to support MISRA C 2012 AMD-3 Rule 21.23 The new message 9218 (arguments to type-generic macro from tgmath.h have
differing types) reports when a multi-argument tgmath macro call is encountered that
uses varying types. This implements MISRA C 2012 AMD-3 Rule 21.23. |
| PCLP-4318 | Add new message 9214 to support MISRA C 2012 AMD-3 Rule 23.5 The new message 9214 (generic selection selects default because pointer type is not
implicitly converted) reports when a generic selection is encountered that selects the
default association when an implicit pointer conversion might have been expected.
Such cases where a pointer association differs in qualifiers, implicit casts to void, or
null constants selecting default are reported. This supports MISRA C 2012 AMD-3
Rule 23.5. |
| PCLP-4319 | Add new message 9216 to support MISRA C 2012 AMD-3 Rule 23.6 The new message 9216 (essential type of the controlling expression does not match
its standard type) reports when a generic selection is encountered whose controlling
expression has an essential type that differs from its standard type. This message
provides support for MISRA C 2012 AMD-3 Rule 23.6. |
| PCLP-4320 | Add new message 9219 to support MISRA C 2012 AMD-3 Rule 23.7 The new message 9219 (parameter of generic selection macro is not evaluated exactly
once) reports when a generic selection macro is encountered that does not evaluate the
arguments in the controlling expression exactly once, regardless of which association
is selected. This supports MISRA C 2012 AMD-3 Rule 23.7 |
| PCLP-4321 | Updates to au-misra3.lnt and au-misra3-amd2.lnt as per MISRA C 2012
Amendment 3 MISRA C 2012 Amendment 3 includes several updates to MISRA C 2012 and MISRA
C 2012 AMD-2 that were not previously reflected in the corresponding au-misra3.lnt
and au-misra3-amd2.lnt files. These updates include reclassifying Rule 21.11 as
Advisory, reclassifying Rule 21.12 as Required, removal of the restrictions for the
_Generic keyword and the stdalign.h and stdnoreturn.h headers for Rule 1.4, and
increasing the scope of Rule 21.12 to include all facilities of the fenv.h header. These
changes are now reflected in the au-misra3.lnt and au-misra3-amd2.lnt files. |
| PCLP-4322 | Add complex floating essential type for MISRA C 2012 AMD-3 MISRA C 2012 essential type messages now support a new "complex floating" essential
type category to support MISRA C 2012 AMD-3. |
| PCLP-4326 | Add support for Visual Studio /FI and /external:I options The Visual Studio /FI and /external:I compiler options are now supported. |
| PCLP-4330 | Correct false positive 779 messages issued for type-dependent expressions Message 779 (string constant in comparison operator) was previously incorrectly
issued for type-dependent expressions. This issue has been resolved. |
| PCLP-4337 | Detect character size when generating compiler configurations for TI
compilers Generated compiler configurations for TI compilers (ti_cl2000, ti_cl430, ti_cl6x,
and ti_armcl) now extract the target architecture character size from the compiler
and add an appropriate -sb option in the generated size options. This will not affect
the previous behavior for most compilers which will simply generate a -sb8 option,
but it is particularly relevant to the ti_cl2000 compiler entry where a -sb16 option
will now be generated to correctly support the TI cl2000 compiler targeting 16-bit
characters. |
| PCLP-4340 | Exclude ti_edg implementation detail compiler database entry from the
list of compilers shown by pclp_config The ti_edg entry in the pclp_config compiler database is an abstract base and
implementation detail for other, specific TI compilers and is not generally intended
for direct use. This compiler database entry will no longer be included in the output
from –list-compilers. |
| PCLP-4342 | Add support for compiler relative include file search directories. The keil_armcc, microchip_xc8, and TI compilers search for include files in known
directories relative to the compiler but do not have a method to extract the directories.
The compiler configuration include file search options will now be determined from
the location of the compiler. |
| PCLP-4343 | Remove temporary compiler generated files within the configuration utility
pclp_config When pclp_config invokes the user selected compiler, many compilers generate files
associated with the provided source files. The invocation instructions in the compilers
database did not always have the proper instructions to delete all of the compiler
generated file. All compiler generated temporary files will now be deleted. |
| PCLP-4344 | Improved and corrected determining of compiler versions within the
pclp_config utility. The pclp_config utility was unable to determine the compiler version for some
of the supported compilers. The missing instructions were added and the incorrect
instructions were updated. The compiler version can now be determined for all
pclp_config supported compilers . |
| PCLP-4349 | Improved error messages for pclp_config when a command uses
–compiler-database where –compilation-db was intended The pclp_config.py option –compiler-database is used to specify an alternative
path to the compilers.yaml compiler database which provides information about the
compilers supported by pclp_config. It is typically unnecessary to use this option to
specify the path explicitly because the compilers.yaml compiler database included
in the PC-lint Plus distribution is automatically loaded from the same directory
as the pclp_config.py script if the directory structure has not been modified.
The distinct and unrelated option –compilation-db is used when generating a
project configuration to specify the path to a JSON compilation database such as a
compile_commands.json compilation database generated by CMake.
The error messages emitted in cases where pclp_config.py is invoked with an
argument that appears to have specified one of these two options where the other was
likely intended have been improved to specifically highlight this distinction. |
| PCLP-4353 | Updated manufacturer of the Freescale compilers Updated the manufacture of the Freescale compilers to be NXP/Freescale. |
| PCLP-4355 | Correct minor issues in generated Visual Studio compiler configuration
files The generated Visual Studio compiler configuration files did not suppress messages
13 and 104 in uchar.h (Visual Studio 2015 and later) and ucyvalshar.h (Visual
Studio 2013); did not suppress message 5881 in setjmp.h and eh.h (Visual Studio
2015); did not suppress message 5394 in scoped_allocator (Visual Studio 2012);
did not suppress message 4886 in math.h (Visual Studio 2005); and did not enable
support for C++20 for Visual Studio 2019. In addition, if the user supplied compiler
options included the /JMC option, it was treated as a J option. All of these issues have
been corrected. Additionally, /Zc:wchar_t and /Zc:wchar_t- C++ options are now
correctly translated. |
| PCLP-4358 | Improved Visual Studio configuration file comments The comments for specific Visual Studio options in the pclp_config generated
compiler configuration files are now more readable and understandable. |
| PCLP-4387 | Include right shifts for message 9053 The message 9053, implemented to support MISRA C 2012 Rule 12.2, did not report
when excessive right shifts occurred. Additionally, 9053 did not report negative shifts
of any kind. Excessive right shift and negative shift operations will now be reported
by message 9053. |
| PCLP-4389 | Message 527 now reports code that is unreachable due to a prior infinite
loop Message 527 now reports statements that are unreachable due to appearing after an
infinite loop with a constant condition without a break. |
| PCLP-4390 | Recognize the assignment of a constant value in a Boolean context as itself
representing a constant value Message 506 now recognizes the result of the assignment of a constant as yielding
a constant value. This message will now report constructs such as while (x = 1)
where an assignment of a constant appears in a Boolean context. |
| PCLP-4392 | Support MISRA C 2012 AMD-4 MISRA
C 2012 Amendment 4 is now supported using the provided au-misra3-amd4.lnt file
found in the lnt/ directory of the PC-lint Plus distribution. |
| PCLP-4398 | Support MISRA C 2012 AMD 4 Rule 18.10 The new message 2502 (pointer to variably modified array type was used) reports
when a pointer whose pointee is a variably modified array type is declared. This
implements MISRA C AMD-4 Rule 18.10 |
| PCLP-4409 | Support MISRA C 2012 AMD 4 Rule 12.6 The new message 181 (atomic record type directly accessed) reports when a member
of an atomic struct or union is accessed via the . or -> operators. This implements
MISRA C AMD-4 Rule 12.6. |
| PCLP-4416 | Improved pclp_config support for Visual Studio compiler options that
start with a dash Visual Studio compiler options may start with either a forward slash (/) or a dash
(-). Previously pclp_config only recognized the -I compiler option and ignored any
other compiler options that started with a dash. Recognized Visual Studio compiler
options may now start with either a forward slash or a dash. |
| PCLP-4425 | Revise when thread analysis processing is inhibited The second phase of thread analysis, which occurs after Global Wrap-up, previously
would not execute if there were fewer than 2 threads (or a single non-mono thread).
This caused the thread reports and beneficial thread analysis messages to not be
emitted. Assuming that Global Wrapup is not disabled, the thread reports will now
always be generated and the thread analysis second phase will be inhibited only if
there are no threads or mutexes, or if a thread analysis fatal condition has occurred
unless overridden by setting the ftc flag to 2 or greater. |
| PCLP-4428
PCLP-4417 | New message 1797 improves support for MISRA C++ Rule 14-5-3 and
AUTOSAR M14-5-3 The new message 1797 replaces the previous use of message 1721 as the support
mechanism for MISRA C++ Rule 14-5-3 and AUTOSAR M14-5-3. The previous use
of message 1721 to support this rule resulted in false positive rule violation messages
because message 1721 reports assignment operators that are not copy nor move
assignment operators while the rule only applies if the assignment operator is further
a function template taking a parameter whose type is a template parameter type.
Message 1797 reports the specific situation described in the rule. The level of support
for AUTOSAR M14-5-3 has been changed from "Partially supported" to "Supported". |
| PCLP-4429 | Add warning message for when an object is used as a mutex and then as
a locker. When an object is initially used as a mutex and subsequently used as a locker, the
usages as a locker were silently ignored. This condition will now be reported with
message 2540 and will no longer inhibit the second phase of thread analysis. |
| PCLP-4436 | Enable include_next preprocessor keyword in TI compiler configurations
generated by pclp_config Recent versions of the TI compilers support for the include_next preprocessor
directive and use it in their C++ headers to include their corresponding C headers.
pclp_config now enables support for the include_next preprocessor for the TI
compilers. |
| PCLP-4453 | Examples added to description of the -cond option Examples have been added to the description of the -cond option. |
| PCLP-4459 | Note the constraints of -setenv when used in a configuration file Environment variable expansions are not affected by -setenv options appearing
within the same configuration file. This is now noted in the section ??Expansion of
Environment Variables in Options Expansion of Environment Variables in Options. |
| PCLP-4491 | Recognize C++23 feature test macros in pclp_config All C++23 feature test macros are recognized by pclp_config when generating the
compiler configuration header file. |
| PCLP-4538 | Additional instructions for integrating PC-lint Plus with IAR Embedded
Workbench Section ??Integrating PC-lint Plus with IAR Embedded Workbench is changed to
include additional setup instructions that show how to Run PC-lint Plus using a
keyboard shortcut. The additional instructions also highlight how to add PC-lint Plus
to the "Toolbar". |
| PCLP-4590 | Improved link navigation for Revision History entries The clickable links in the summary sections of the Revision History now navigate
directly to the corresponding issue instead of the beginning of the containing section. |
| PCLP-4595 | Improved instructions for integrating PC-lint Plus with Visual Studio
Code Section ??Integrating PC-lint Plus with Visual Studio Code has been reworked
to include additional setup instructions, add support for supplemental messages,
overcome "Problem Matcher" limitations, and more. |
| PCLP-4606 | Updates to au-misra3.lnt and au-misra3-amd2.lnt as per MISRA C 2012
Amendment 4 MISRA C 2012 Amendment 4 includes several updates to MISRA C 2012 and MISRA
C 2012 AMD-2 that were not previously reflected in the corresponding au-misra3.lnt
and au-misra3-amd2.lnt files. These updates include an exception to Rule 3.1 to
allow uniform resource identifiers within comments, and removing the prohibition of
<stdatomics.h> and <threads.h> library facilities from Rule 1.4. These changes are
now reflected in the au-misra3.lnt and au-misra3-amd2.lnt files. |
| PCLP-4660 | Improve Keil ARMCC and Microchip XC8 compiler configuration
generation The configuration utility (pclp_config) did not include all of the compiler supplied
header directories in the generated compiler configurations for the Keil ARMCC and
Microchip XC8 compilers. The compilers.yaml file includes instruction comments if
the assumptions for the required headers for the Keil ARMCC and Microchip XC8
compilers are incorrect and need to be adjusted by the user. |
| PCLP-4669 | Improved support for Microchip XC8 keywords and predefined macros Errors were previously emitted when analyzing several of the Microchip XC8 header
files because of misconfigured keywords and predefined macros. The generated XC8
compiler configurations have been corrected to eliminate these issues. |
| |
|
|
| PCLP-3201 | Correct false negative 9102 for digraph sequence "<:" The message 9102 (possible digraph sequence) was not correctly emitted when
encountering the character sequence <: and digraphs were enabled. |
| PCLP-3551 | False positive 725 within template instantiations Message 725 (unexpected lack of indentation) would sometimes incorrectly be issued
for the body of a constexpr if statement within an instantiated template. Messages
525 (unexpected negative indentation) and 725 are no longer emitted for template
instantiations. |
| PCLP-3569 | Correct false positive 550 for braced member-init-lists The message 550 (local variable not subsequently accessed) was incorrectly emitted
when encountering an initializer list using braced syntax. |
| PCLP-3660 | Correct false positive 776 for the summation of two ints cast to a long of
the same size The message 776 (possible truncation of addition) was unjustly emitted when long
and int are the same size. |
| PCLP-4230 | False positive message 9006 for dependent sizeof expressions Message 9006 (sizeof used on expression with side effect) was previously incorrectly
emitted for value-dependent sizeof expressions. This issue has been corrected. |
| PCLP-4243 | Correct rare memory corruption in thread analysis semantic processing Combinations of several thread analysis semantics and certain rare code sequences
could cause memory corruption and incorrect processing of the semantics of the
affected user function. The memory corruption has been corrected which also corrects
the processing of the semantics. |
| PCLP-4244 | Correct rare memory corruption in file stream semantic processing Combinations of several file stream semantics and certain rare code sequences could
cause memory corruption and incorrect processing of the semantics of the affected
user function. The memory corruption has been corrected which also corrects the
processing of the semantics. |
| PCLP-4246 | Resolve crash/internal error 292B4782 for constant division by zero A crash (Windows Exception Code 0xC0000094) or an internal error (292B4782)
which could occur when a constant expression involving guaranteed division (or
remainder) by zero (e.g. 1 / 0) appeared in certain contexts has been resolved. |
| PCLP-4254 | Resolve false positive instances of messages 550, 551, and 552 for rewritten
comparison operators in C++20 Previously in C++20 mode, if a variable was only accessed using a comparison operator
in the rewritten candidate set (a rewritten comparison operator), a false positive 550,
551, or 552 could later be emitted for the variable. This behavior has been updated
to recognize variable accesses within operands to rewritten comparison operators. |
| PCLP-4255 | Correct handing of C/C++ options when determining size options in
pclp_config The pclp_config configuration utility could incorrectly handle the user provided
compiler options while extracting the information needed for the size options. |
| PCLP-4258 | Update pclp_config to prefer setting size_t to unsigned long over unsigned
long long when both types are the same size to match recommendation
from C++ standard The C++ standard recommend that size_t should be a type whose integer conversion
ranks is no greater than that of signed long int unless a larger size is necessary
to represent all possible values. Prior versions of the compiler database used by
pclp_config.py would preferentially configure the size type to unsigned long long
instead of unsigned long when sizeof(long) == sizeof(long long). This could
cause false positive ?? (enum redeclaration with different underlying type) messages
to be emitted after encountering a conflicting definition of size_t in a standard
library header. The compiler database has been updated to prefer unsigned long in
this situation. |
| PCLP-4265 | False negative messages 1524, 1732, and 1733 for new expression appearing
in a member init list PC-lint Plus previously did not emit messages 1524 (new in constructor for class
which has no explicit destructor), 1732 (new in constructor for class which has no
user-provided copy assignment operator), and 1733 (new in constructor for class
which has no user-provided copy constructor) for new expressions appearing in a
constructor’s member init list. This has been corrected. |
| PCLP-4269 | Memory leak when using -cond and -egrep/+egrep options A memory leak which could occur when using the -cond and -egrep/+egrep options
has been corrected. |
| PCLP-4273 | Correct false positive message 504 for shift assignment operators Message 504 (unusual shift operation) was previously incorrectly issued for shift
assignment operators with unparenthesized right-hand operands. This issue has been
resolved. |
| PCLP-4275 | Resolve internal error 187F3BF3 (-37) An internal error with error code 187F3BF3 and diagnostic info -37 that could occur
during the evaluation of a non-static data member initializer containing an implicit or
explicit use of the this pointer outside the context of a non-static member function
has been resolved. |
| PCLP-4297 | False negative 785 for uninitialized members of a structure nested within
a union Message 785 (too few initializers) was not previously emitted for initializer lists of
aggregates nested within a union. This has been corrected. |
| PCLP-4300 | Correct name of the file argument of the thread_report options in built
in help and the Reference Manual. Some instances of the file argument of the thread_report options were incorrectly
referred to as filename. |
| PCLP-4336 | Remove unimplemented pclp_config option –ignore-options The pclp_config option –ignore-options was recognized but never implemented.
The option has been removed. |
| PCLP-4341 | Resolve a crash/internal error/hang that could occur during Global
Wrap-up when using the Metrics feature on a large project using many
concurrent analysis threads An issue that could variously manifest as a crash, a hang, or an internal error during
Global Wrap-up when analyzing a large project using both the Metrics feature and
enabling many concurrent threads using the -max_threads option has been resolved. |
| PCLP-4345 | Remove inapplicable C++ configuration from the Microchip XC8 and XC16
compiler database entries The Microchip XC8 and XC16 compilers only support C code. Unnecessary
configuration entries related to extracting C++ information from these compilers have
been removed from compilers.yaml |
| PCLP-4346 | Correct handing of C/C++ options when determining size options in
pclp_config The pclp_config configuration utility was unable to extract the information to
generate the size options for all compilers. |
| PCLP-4350 | Correct false positive 9107 for class template static data members Message 9107 (header cannot be included in more than one translation unit) was
incorrectly emitted when multiple definitions of a class template static data member
were encountered. |
| PCLP-4351 | Resolve internal errors when evaluating certain Hook fields or Query
functions for value-dependent expressions Use of the is_constant_expr,
is_ice, or is_value Hook fields or the isConstantExpr, isIntegerConstantExpr,
evaluateAsBooleanCondition, evaluateAsFloat, evaluateAsInt,
getIntegerConstantExpr, evaluateAsBooleanCondition, isCXX11ConstantExpr,
or isCXX98IntegralConstantExpr Query functions would previously elicit an
internal error when evaluated for a value-dependent expression. This issue has been
corrected. |
| PCLP-4361 | Correct false positive 9102 for digraph sequence "<::" The message 9102 (possible digraph sequence) was incorrectly emitted when
encountering the character sequence <:: not immediately followed by : or >. |
| PCLP-4375 | Incorrect deprecation text for AUTOSAR Rule M18-7-1 The au-autosar.lnt and au-autosar19.lnt author files previously incorrectly
refered to AUTOSAR Rule M18-7-1 as A18-7-1 in the deprecation text issued with
message 586. The deprecation text used in these files has been corrected. |
| PCLP-4414 | Updated pclp_config to handle fixed precision floating point types in
standard header files Previously when projects using C++20 in GCC 12 or later, configurations generated
by pclp_config would cause a parse issue due to the use of the __float80 type in the
<compare> header file. Additionally when projects using C++ code in GCC 13 or later
combined with glibc 2.37 or later, configurations generated by pclp_config would
cause a parse issues due to the use of the _Float32, _Float32x, _Float64, _Float64x,
and _Float128 types in various glibc header files. New compiler configurations
generated by pclp_config will not emit these parse errors. |
| PCLP-4446 | Internal error when the isCXX11ConstantExpr Query function is
evaluated in a C module Evaluation of the isCXX11ConstantExpr Query function for an expression appearing
in a C module would previously result in internal error 1AF10F50. This issue has been
resolved. |
| PCLP-4463 | Incorrect library region determination for certain Hook events Previously, user-defined hooks executed for statement events would sometimes utilize
the incorrect library status resulting in incorrect results for expansion of the
is_library field as well as messages emitted from such hooks being inappropriately
suppressed. |
| PCLP-4464 | User-defined hooks executed twice for label statements Previously, user-defined hooks would be executed twice for label statements. This
issue has been corrected. |
| PCLP-4516 | Corrected invalid string escape sequences in pclp_config The automated configuration tool pclp_config contained invalid string escape
sequences that prior to version 3.12 of python were silently ignored. These invalid
string escape sequences were corrected. |
| PCLP-4534 | Resolve Python error while generating include options when using
pclp_config.py to generate a compiler configuration without specifying a
compiler binary using –compiler-bin The error message Error: local variable ’found_paths’ referenced before
assignment derived from a Python exception within pclp_config.py previously
prevented the generation of an output file when running pclp_config.py without
specifying a compiler binary with –compiler-bin. Attempting to generate a compiler
configuration without specifying a compiler binary is intended to produce several
warning messages noting the functionality that is unavailable without the compiler
binary, but the process now correctly produces a limited output file without an error. |
| PCLP-4567 | Resolved an issue in Value Tracking that manifested as a hang before
crashing due to memory exhaustion An issue that could cause processing to hang before crashing once memory was
exhausted during Value Tracking has been resolved. |
| PCLP-4577 | Inappropriate evaluation of Query echo reflections Previously, an echo expression’s reflection would sometimes incorrectly be evaluated
in the context of a subsequently defined query which could result in unexpected
behavior or a crash. This has been corrected. |
| PCLP-4597 | Resolved false negatives of message 550 and 551 due to supressions For message 550 (local variable not accessed) a false negative could previously occur if
message 550 was suppressed before the end of a function scope. For message 551 (static
non-local variable not accessed) a false negative could previously occur if message 551
was suppressed before the end of the file. Both have been resolved. |
| PCLP-4630 | Enable usage of _Float16 and __bf16 types Previous use of the _Float16 or __bf16 types would result in a parse error. Now no
error is produced when using these types. |
| PCLP-4636 | Enable usage of _Complex _Float16 type Previous use of the _Complex _Float16 type would result in a parse error. Now no
error is produced when using this type. |
| PCLP-4679 | Resolve false negatives in the value of the file.num_include_directives
metric in Linux and macOS builds of PC-lint Plus An issue that previously could have resulted in the file.num_include_directives
metric undercounting include directives when using the Linux or macOS builds of
PC-lint Plus has been resolved. This issue did not impact Windows builds of PC-lint
Plus. |
| |
|
|
| PCLP-1962 | Ignore unevaluated contexts for message 1938 Message 1938 is no longer emitted for references to global variables within unevaluated
contexts such as sizeof expressions. |
| PCLP-1977 | Improve performance of processing files containing heavy use of macro
expansion including common Boost headers Performance has been improved in situations where many large, nested macro
expansions are encountered. This particularly improves processing speed when
including a library such as Boost Phoenix. |
| PCLP-2113 | Mark std::uncaught_exception as dangerous Usage of the former standard library function std::uncaught_exception will now
elicit message 421. This function has been replaced by std::uncaught_exceptions. |
| PCLP-2245 | Evaluate qualified calls to virtual functions with static dispatch Value Tracking now walks the static target function when evaluating a qualified call
to a virtual function. |
| PCLP-2606 | New fit flag to consider functions not declared as noexcept to be impure
if they throw an exception The new fit flag is off by default. If the flag is turned on (such as with the option
+fit), then a throw expression within a function body will render that function
impure unless the function is declared as not throwing any exceptions (in which case
a thrown exception cannot be allowed to escape by any control path). |
| PCLP-2969 | Improved support for AUTOSAR Rule A10-3-5 Message 9438 will report virtual non-copy/non-move assignment operator functions.
With messages 9407 and 9410, complete support for AUTOSAR Rule A10-3-5 is now
provided. |
| PCLP-2972 | Improved support for AUTOSAR Rule A12-4-2 Message 9441 will report public non-virtual destructors in effectively non-final classes.
A class is effectively final if either it or its destructor is final. Complete support for
AUTOSAR Rule A2-13-5 is now provided. |
| PCLP-2997 | Deterministic field and base order for rendering of class/struct/union
objects in Value Tracking messages The order in which fields and bases of an object were displayed within a particular
instance of a Value Tracking message could previously vary between repeated runs of
PC-lint Plus. These items are now deterministically displayed in alphabetical order.
The existing behavior of listing all bases first and all fields second still applies, and
as such the bases and fields are alphabetized separately among themselves. |
| PCLP-3067 | Update options for specifying language versions The -std option now accepts -std=c++20 to specify C++20. The previously
deprecated -A option is no longer listed in the documentation. The legacy -A option
was considered deprecated in the initial release of PC-lint Plus version 1.0; this option
is now obsolete. The -std option should be used instead. |
| PCLP-3095 | Do not emit message 9176 for dependent types Message 9176 is no longer emitted for casts involving dependent types within
templates. Casts arising from specific template instantiations will still be reported.
For example,
//lint -w1 +e9176
template<typename T, typename U>
void f() {
T* t = 0;
reinterpret_cast<U*>(t);
}
void g() {
f<int, double>();
}
previously emitted two instances of message 9176, one for the generic cast from T* to U*
and a second for the specific cast from int* to double*. Message 9176 now only reports the
latter. |
| PCLP-3291 | Update documentation for message 422 The documentation for message 422 has been updated to remove an inapplicable
example and clarify the circumstances in which the message is emitted. |
| PCLP-3357 | Improved analysis of constant arrays The specific values of array elements of constant scalar arrays are now used to support
the analysis of expressions that reference them. |
| PCLP-3511 | Support for AUTOSAR 19 PC-lint Plus previously provided support only for AUTOSAR 17 coding guidelines.
Support is now provided for AUTOSAR 19 coding guidelines as well (the latest version
of the AUTOSAR standard). |
| PCLP-3516 | New builtin function semantics for the log, logf, and logl functions PC-lint Plus will now detect potential domain errors resulting from misuse of the log,
logf, and logl Standard C library functions. |
| PCLP-3523 | New message 9456 supports AUTOSAR A6-5-3 The new message 9456 now reports on a do statement that is used outside of a
statement-like macro definition. |
| PCLP-3527 | Support for AUTOSAR Rule A2-13-5 Message 9439 will report hexadecimal floating and integer literals that contain lower
case digits (a-f). Complete support for AUTOSAR Rule A2-13-5 is now provided. |
| PCLP-3528 | Support for AUTOSAR19 Rule A2-13-6 Message 9423 (non-basic character used in identifier) can also be used to indicate
identifiers that use non-basic characters.
AUTOSAR19 Rule A2-13-6 is now supported by the new messages 9443
(universal-character-name used in identifier). |
| PCLP-3532 | Message 1511 parameterized with access of hidden function Message 1511 (member function hides non-virtual member) is now parameterized
by the member access of the function being hidden allowing suppression of the
message for e.g. hidden private members (using -estring(1511,private)). This
change supports the exception to AUTOSAR19 Rule A10-2-1 for private member
functions. |
| PCLP-3537 | Support AUTOSAR Rule A5-1-3 AUTOSAR Rule A5-1-3 is now suported by the new message ?? (parameter list
omitted from lambda expression). |
| PCLP-3538 | Support for AUTOSAR A5-1-6 provided by new message 3903 The new message 3903 provides support for AUTOSAR A5-1-6 by reporting lambda
expressions without explicitly specified return types. |
| PCLP-3541 | Improved support for AUTOSAR Rule A13-6-1 Message 9440 is issued whenever the digit sequence separators (’) in an integral or
floating literal do not occur every Nth digit, where N is: 2 for hexadecimal, 3 for
decimal and octal, and 4 for binary. Complete support for AUTOSAR Rule A13-6-1
is now provided. |
| PCLP-3594 | Improve analysis of pointers initialized in if statements The existing support for analysis of modifications to a pointer value made within if
statements has been extended to improve the handling of cases where a pointer first
obtains a meaningful value when values are assigned in both paths through an if
statement. |
| PCLP-3595 | Improve analysis of multiple return points in functions returning
structures The analysis of possible return values associated with various conditional return points
within a called function now has improved support for merging values within returned
structures. |
| PCLP-3619 | Improve handling of user-defined conversions in Value Tracking The circumstances under which Value Tracking evaluates implicit calls to user-defined
conversion operators have been generalized to improve analysis quality. |
| PCLP-3669 | Remove the deprecated +fdu flag option The fdu flag option was previously deprecated in PCLP-3514 and has now been fully
removed. |
| PCLP-3814 | Improve support for exceptions to MISRA C 2012 Rule 10.3 Message 9034 now implements an additional exception for initialization with 0 to
improve support for MISRA C 2012 Rule 10.3. |
| PCLP-3816 | Extend scope of message 9034 to include switch case values Message 9034 now applies MISRA C 2012 Rule 10.3 to the conversion of a switch case
value to the type of the switch condition expression. |
| PCLP-3872 | Improve text of mapped clang error and supplemental messages References to clang options which do not apply to PC-lint Plus have been removed
from the text of various mapped clang messages for clarity. |
| PCLP-3880 | Update license information for LLVM The Open Source Declarations have been updated to reflect the new license employed
by the LLVM project. |
| PCLP-3901 | Update information on accommodating the _bit compiler extension The documentation no longer recommends the use of reserved word options for
the _bit keyword which some compilers use to name a one-bit integral type. See
PCLP-3935. |
| PCLP-3905 | Improved performance of -d/-u options appearing between
-env_push/-env_pop options Project configurations generated with the pclp_config utility typically enclose each
module in a block that begins with -env_push and ends with a corresponding
-env_pop. Within this block are relevant -d options that define macros the correspond
to similar compiler options. When the total number of such options across all blocks
for a project was very large, severe performance degradation could result. This issue
has been corrected . |
| PCLP-3912 | Improve support for MISRA C 2012 Rule 1.1 using message 793 Message 793 expands support for MISRA C 2012 Rule 1.1 by reporting when
translation limits are exceeded. |
| PCLP-3913 | Fix typo in appended text for CERT-C Rule POS54-C The appended text for violations of POS54-C reported by message 534 when
using au-certc.lnt now correctly refers to POS54-C where it previously referenced
POS53-C. |
| PCLP-3919 | Add walk_parent_expr hook field as alias for walk_pexpr The walk_parent_expr hook field documented in the Hooks Programmer’s Guide
was previously only accessible as walk_pexpr. This field is now also accessible with
the name walk_parent_expr. |
| PCLP-3920 | Remove unused suppression from MISRA C 2012 Rule 10.3 An -estring option for message 9052 has been removed from the Rule 10.3 section of
the MISRA C 2012 configuration file. This suppression was not applicable as message
9052 is not enabled by the MISRA C 2012 configuration file and is not used to provide
support for any MISRA C 2012 rules. |
| PCLP-3930 | Exclude deduction guides from messages reporting function declarations Messages concerning function declarations such as 2701, 902 and 955 have been
updated to prevent inapplicable messages for deduction guides. Note that message
9141 will still report deduction guides. |
| PCLP-3935 | Support for integer types of arbitrary size PC-lint Plus now supports the _ExtInt extension which allows support for
arbitrarily-sized integers, including single-bit types. |
| PCLP-3955 | Improve performance for const array initialization chains when many array
elements are initialized in terms of other arrays referencing further such
arrays with interleaving function invocations Performance has been improved when processing larger examples of the form:
int g();
int const a[] = { 1+g(), 2+g(), 3+g() };
int const * const b[] = { a+g(), a+g(), a+g() };
int const * const * const c[] = { b+g(), b+g(), b+g() };
void f() {
c;
}
which previously exhibited performance differences based on the presence or absence of
const qualification. |
| PCLP-3960 | Added support for Visual Studio 2022 The automated configuration tool (pclp_config.py) has been enhanced to support
Visual Studio 2022 and later versions of Visual Studio 2019.
The C++ feature test macros in the generated compiler configuration header
files are now filtered to match what PC-lint Plus supports. A new option
(–dont-filter-feature-test-macros) has been added to disable this filtering if
required. |
| PCLP-4003 | Exclude Boolean operators from MISRA C 2004 underlying type rules While Boolean operators yield a result of type int, MISRA has clarified that
they do not intend for them to participate in underlying type enforcement.
Expressions classified as Boolean-by-Construction are now excluded from underlying
type classification. |
| PCLP-4004 | Use int as destination underlying type for the purpose of initialization for
MISRA C 2004 Initialization of a variable of enumeration type could previously result in an instance
of message 9225 reporting an underlying type conversion with an enumeration type
as the destination type. In such cases the destination type used in the message and
for the purpose of determining whether the message is issued will now be int. |
| PCLP-4007 | Exclude initialization of pointers from MISRA C 2004 Rule 10.1 Violations of MISRA C 2004 Rule 10.1 will no longer be reported when an integer,
e.g. a null pointer constant, is used to initialize a pointer. |
| PCLP-4009 | Clarify descriptions of messages 3402 and 3702 The descriptions of messages 3402 and 3702 have been updated to clarify that they are
emitted for lambdas that default to capture by value and by reference, respectively. |
| PCLP-4013 | Corrected and improved thread analysis reports The generated machine readable (CSV, JSON, and XML) thread analysis reports
could be invalid. All known issues with these reports have been corrected. The layout
of the (text format) threads report has been improved by placing the thread name
on its own line and splitting the root function prototype and its definition source line
information on separate lines. In addition, several new status fields associated with
the report filters have been added. |
| PCLP-4014 | Add Undecidable classification for MISRA C 2012 Rule 2.1 The MISRA C 2012 support matrix now shows rule 2.1 as "Req*" rather than "Req",
indicating that it is undecidable. |
| PCLP-4021 | Update Frequently Asked Questions entry regarding the creation of
custom messages The Frequently Asked Question entry about creating new messages now notes that
the new Queries feature provides this capability. |
| PCLP-4025 | Linux builds now require glibc 2.17 The required version of glibc has increased from 2.11 to 2.17. |
| PCLP-4026 | Support the char8_t keyword in clang and GCC compiler configurations
generated with pclp_config Clang and GCC compiler configurations generated by pclp_config will now enable
the char8_t keyword when appropriate. |
| PCLP-4033 | Increase default template recursion depth limit The default template recursion depth limit (modifiable via the -tr_limit option) has
increased from 75 to 1024. |
| PCLP-4036 | Update GCC compiler configuration generation Configurations generated
for GCC previously contained the options –u_GLIBCXX_BUILTIN_IS_SAME_AS
and –u_GLIBCXX_HAVE_BUILTIN_IS_CONSTANT_EVALUATED to prevent the use of
unavailable extended keywords. These keywords are now supported and these options
are no longer generated. |
| PCLP-4041 | Update documentation with correct version of AUTOSAR targeted by
au-autosar.lnt The documentation for Beta 1 stated that the provided au-autosar.lnt file
targeted AUTOSAR 17-10, the actual targeted version is AUTOSAR 17-03. The
documentation has been corrected. |
| PCLP-4042 | Add missing AUTOSAR Rule M17-0-3 to au-autosar.lnt An entry for the (unsupported) AUTOSAR Rule M17-0-3 has been added to
au-autosar.lnt. |
| PCLP-4043 | Removed error messages The following errors have been removed from PC-lint Plus: 64 (incompatible types in
initialization), 111 (assignment to const object), 1005 (destructor declaration requires
a class), 1049 (template argument arity mismatch), 1050 (missing template args),
1111 (illegal explicit specialization), 1121 (no viable function for range expression),
and 1122 (range expression begin/end mismatch). PC-lint Plus will diagnose relevant
errors with a mapped clang error in the 4001-6999 message range. |
| PCLP-4048 | Improvements to pclp_config Compiler configuration files generated by pclp_config.py now contain additional
information in the introductory comment that further document when and how
they were generated. The –compiler-c-options options or –compiler-cpp-options
options will be applied whenever the compiler is invoked. Previously these options
were only applied when the compiler was invoked to obtain the predefined macros.
Additional debugging options were added. For more details, see the pclp_config
Options Reference. |
| PCLP-4057 | Improved support for GCC 11 compiler configurations generated by
pclp_config Compiler configurations generated by pclp_config for GCC or clang compilers will
now include options that prevent the use of unsupported GCC features by standard
library headers via the __attr_dealloc and __attr_dealloc_free macros. |
| PCLP-4070 | Expand support for AUTOSAR A1-1-1 and change support level to
"partially supported" The detection of deprecated C++ standard library features supporting AUTOSAR
A1-1-1 has been expanded. The support status for this guideline has been changed
to "partially supported" and the scope of support is now described in the support
matrix. |
| PCLP-4073 | Remove mapping of messages previously used to provide support for
AUTOSAR A4-7-1 and mark this rule as not supported Messages 9119 and 9120 are no longer associated with AUTOSAR A4-7-1, and this
rule is now categorized as not supported. |
| PCLP-4074 | Document limitations for support of MISRA C++ 2008 Rule 3-4-1 Message 9003 (could define global variable within function) is used to support MISRA
C++ 2008 Rule 3-4-1 (and the corresponding AUTOSAR Rule M3-4-1) but has
limitations that prevent it from providing full coverage for this rule. The support
status of this rule has been downgraded to "partially supported" with the limitations
noted in the support matrix. |
| PCLP-4075 | Parameterize -append options for message 829 (+headerwarn option issued)
used in au-misra-cpp.lnt The +headerwarn option is used to support MISRA C++ 2008 Rules 18-0-1, 18-0-4,
18-7-1, and 27-0-1 in the au-misra-cpp.lnt file but the corresponding -append
options were not parameterized with the names of the offending headers. The result
was that use of a header that was prohibited by any of these guidelines was diagnosed
as a violation of all of them. This issue has been corrected and only the appropriate
guideline will now be referenced in the violation message. |
| PCLP-4076 | Add -append options for message 829 (+headerwarn option issued) used in
au-misra3-amd2.lnt The +headerwarn options is used to support MISRA C 2012 Rule 1.4 in the
au-misra3-amd2.lnt file did not contain corresponding -append options correlating
the resulting issuance of message 829 (+headerwarn option issued) to the violated rule.
This issue has been corrected, and message 829 issued as a result of using stdalign.h
or stdnoreturn.h will now reference the corresponding MISRA guideline. |
| PCLP-4093 | Update hardware requirements to reflect uniform requirement for 64-bit
CPU The hardware requirements have been updated to reflect that PC-lint Plus 2.0 requires
a 64-bit CPU and is not distributed with 32-bit binaries for any platform. |
| PCLP-4094 | Parse JSON compilation databases as JSON instead of YAML within
pclp_config The pclp_config utility previously used the yaml Python module to parse JSON
compilation databases when generating project configurations which could result in
a parse error when tabs were used for indentation as occurs in compilation databases
produced by iarbuild. The json module is now used to parse JSON compilation
databased by pclp_config. |
| PCLP-4095 | Include instructions for generating a JSON compilation database with
iarbuild Instructions for generating a JSON compilation database with recent versions of
iarbuild using the -jsondb option are now provided. |
| PCLP-4100 | Improvements to the representation of symbols and types in message
parameters Various minor improvements to the general representation of symbols and types
appearing in message parameterizations including:
- The Boolean type is represented as bool instead of _Bool in C++ mode.
- The restrict qualifier is consistently represented in C mode even when written
using an alternate keyword such as __restrict.
- Defaulted template type parameters are elided from the representation of the
instantiated type.
- The representation of nested template types elides spaces between adjacent closing
angle brackets in C++11 and later. |
| PCLP-4208 | Support multiple parsing behaviors for JSON compilation databases The parsing
behavior used when pclp_config.py processes a JSON compilation database now
defaults to posix-like for Linux and macOS and non-posix-like for Windows. The new
options –posix-command-parsing and –no-posix-command-parsing may be used
to override the default behavior. The parsing behavior affects how backslashes and
quotes are handled in response files and arguments embedded in the command field
of JSON compilation databases. |
| |