Help Center

Reference Manual for PC-lint® Plus

23 Revision History

For the latest information on PC-lint Plus, please refer to the news page on our website.

23.1 Version 2025 SP1

23.1.1 Highlights

PC-lint Plus 2025 SP1 introduces many refinements and several new features including:

23.1.2 Summary

New Features

PCLP-2062

Add new messages 2422 and 2722 to support MISRA C:2025 Rule 21.21

PCLP-2808

New tagged suppressions feature

PCLP-3525

Add message 1958 to support AUTOSAR Rule A18-1-6

PCLP-4104

Add message 9201 to support AUTOSAR Rule A5-1-1

PCLP-4113

Added new message 2906 and improved 2706 to support AUTOSAR A7-2-1

PCLP-4138

Support AUTOSAR Rule A13-2-2 with new message 9143

PCLP-4187

Added new fsb flag option

PCLP-4789

Add option to output call graph

PCLP-4839

Add new message 9480 to support MISRA C++:2023 Rule 0.2.4

PCLP-4845

Message 2710 added to support MISRA C++:2023 Rule 6.0.1

PCLP-4846

Add new message 9481 to support 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

PCLP-4854

Added new message 9490 to fully support MISRA C++:2023 Rule 7.0.3

PCLP-4855

Add new message 9477 to support MISRA C++:2023 Rule 8.1.1

PCLP-4856

Add new message 9478 to MISRA C++:2023 Rule 8.1.2

PCLP-4858

New message 9286 supports MISRA C++:2023 Rule 8.2.6

PCLP-4868

Add new messages 9261 and 9262 to support MISRA C++:2023 Rule 19.0.4

PCLP-4873

Added new message 9274 to fully support MISRA C++:2023 Rule 6.4.2

PCLP-4874

Added new message 9269 to fully support MISRA C++:2023 Rule 9.2.1

PCLP-4875

Added new message 9270 to fully support MISRA C++:2023 Rule 9.4.2

PCLP-4876

Added new message 9486 to fully support MISRA C++:2023 Rule 13.3.4

PCLP-4878

Add new message 3718 to support MISRA C++:2023 Rule 28.6.4.

PCLP-4883

Add new messages 9484 and 9485 to support MISRA C++:2023 Rule 15.1.4

PCLP-4885

Added new message 9268 to fully support MISRA C++:2023 Rule 7.0.2

PCLP-4909

Added new message 9280 to fully support MISRA C++:2023 Rule 21.6.3

PCLP-5297

New message 9285 improves support for MISRA C++:2023 Rule 8.2.4

PCLP-5355

Added support for MISRA C++:2023 Rule 8.20.1

PCLP-5356

Add new message 9492 to support MISRA C++:2023 Rule 15.1.5

PCLP-5360

Add message 9289 for using the raw pointer constructor of a smart pointer to support MISRA C++:2023 Rule 23.11.1

PCLP-5361

Add support for MISRA C++:2023 Rule 22.3.1

PCLP-5397

Added built-in LINT_PRETTY_VERSION environment variable

Improvements

PCLP-835

Improve support for MISRA C 2004 Rule 16.5 and MISRA C 2012/2023/2025 Rule 8.2

PCLP-3004

Message 1506 now reports the status of sub-objects within data members of class type

PCLP-3339

Improve support for MISRA C++:2008 Rule 0-1-7

PCLP-3445

Message 647 no longer emits when int and long have the same size

PCLP-3674

Improved support for MISRA C++ 2008 Rule 17-0-2

PCLP-3736

Messages 1401 and 1541 now reports data members of class type which have uninitialized fields

PCLP-3881

Message 2650 no longer issued for redundant compound comparisons

PCLP-3948

Initializers must be exactly 0 to be exempt from 9068, 9069, and 9034

PCLP-4121

Add new message 3906 to support AUTOSAR Rule A8-4-7

PCLP-4629

Output Internal Errors in more fatally exiting scenarios

PCLP-4718

New instructions for integrating PC-lint Plus with the Sublime Text 3 IDE.

PCLP-4812

Reminder message added to install pyyaml and regex for pclp_config

PCLP-4867

Add new messages 9472, 9473, 9474, and 9475 to support 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

PCLP-4933

Remove reference to unsupplied boost.lnt file

PCLP-4936

Improved support for AUTOSAR Rules A17-0-1 and M17-0-2

PCLP-5026

Message 2405 now reports usage of assignment-suppressing character with n conversion specifier

PCLP-5086

Improvements to message 9005

PCLP-5105

Updated message 9058 behavior

PCLP-5155

Prevent errors when including the xkeycheck.h header for Green Hills compilers

PCLP-5172

Better support for TI CSS compilers

PCLP-5223

Improved support mechanism for MISRA C++:2023 Rule 6.9.2

PCLP-5227

Changed the behavior of -append to allow use of empty name parameters

PCLP-5240

Resolved 901 false positives for loop variables of range-based for loops

PCLP-5242

Use of AUTOSAR guideline headline text

PCLP-5243

Use of MISRA C:2025 guideline headline text

PCLP-5254

Message 977 no longer emitted for binary logical operator expressions in C code

PCLP-5257

Improve the location reported by message 9042 in certain situations

PCLP-5262

Better support the Green Hills Software compilers

PCLP-5273

Message 647 now reports multiplication and bitwise complement, does not report operations which cannot result in truncation

PCLP-5279

Corrected support for Keil compiler built-ins and keywords

PCLP-5280

Update message 1806 based on new interpretation of MISRA C++:2023 Rule 6.8.4

PCLP-5295

Better support for Keil compilers

PCLP-5318

Message 9441 no longer emits for dependent classes, does emit for violating class instantiations

PCLP-5323

New instructions for integrating PC-lint Plus with the Code Composer Studio IDE.

PCLP-5325

Support for Microsoft Visual Studio 2026

PCLP-5327

Support Microsoft STL changes

PCLP-5330

Improve support for MISRA C++:2023 Rule 8.2.5

PCLP-5335

Added several new Query functions

PCLP-5343

Handle C++26 feature test macros

PCLP-5350

Support the __is_layout_compatible and __is_pointer_interconvertible_base_of intrinsic functions

PCLP-5354

Enable messages 454 and 2507 to support MISRA C++:2023 Rule 8.18.1.

PCLP-5358

Enable messages 2422 and 2722 to support MISRA C++:2023 Rule 25.5.3.

PCLP-5362

Enable 2721 and 9223 for MISRA C++:2023 Rule 25.5.2

PCLP-5369

Add getSubExpr Query function for a UnaryOperator

PCLP-5370

Disable the interpretation of ! as a separator for equery options

PCLP-5377

Improve support for MISRA C++:2023 Rule 0.1.2

PCLP-5387

Assistance provided for MISRA C++:2023 Rules 8.7.2 and 8.9.1

PCLP-5398

Refine exception for MISRA C++:2023 Rule 11.3.1

PCLP-5399

New Query functions for InitListExpr

PCLP-5400

Add ffs flag to specify case-sensitive or insensitive file-systems

PCLP-5409

Improved documentation for indexing Query functions

PCLP-5439

Documented planned support for MISRA C++:2023 unsupported rules

PCLP-5443

Improved support for AUTOSAR M7-4-2 MISRA C++:2008 7-4-2

Bugs Fixed

PCLP-1324

Resolved false negative 550, 551, and 552 for unevaluated contexts

PCLP-3650

Resolve false positive for message 473

PCLP-4892

Stack analysis will use the worst case for functions with multiple definitions

PCLP-4964

Resolved false negative 526 and 1526 for some function templates

PCLP-4977

Resolved a false positive for message 953

PCLP-4979

Resolve deprecated type being issued for deduced types in a lambda capture

PCLP-4980

Resolved a false positive for message 1576

PCLP-5127

Resolved 9057 false negatives for suffixes ull and Ull

PCLP-5194

Resolved Internal Error 29BD57CB when trying to import a C++20 module that could not be found

PCLP-5211

GCC compiler configurations no longer generate errors when <limits> is included in a project

PCLP-5228

Resolved duplicate message emissions occurring for variable template instantiations

PCLP-5232

Resolved a false positive for messages 953 and 1803

PCLP-5237

Resolved a false positive for message 953

PCLP-5238

Resolve internal error when a for statement’s increment expression contains a zero literal

PCLP-5246

Potential internal error when unable to open output file for Diagnostic Accounting

PCLP-5247

Correction of internal error 499C50D7 related to semantic analysis of requires expressions within lambdas

PCLP-5252

Fix false positives for 419/669 and 420/670

PCLP-5253

Resolve potential crash for statements appearing after a throw in a switch case

PCLP-5256

Potential silent crash when taking address of a function in a header file

PCLP-5264

Corrected SHA1 calculation for UTF-16 encoded source files

PCLP-5268

Fix false positives for 419/669 and 420/670

PCLP-5271

Resolved an issue in Value Tracking that manifested as a crash

PCLP-5283

Fix false positive 2705 for assignments involving fields with reference type

PCLP-5289

Resolve false positive for message 1946

PCLP-5317

Resolved Crash with Exception Code 0xC00000FD

PCLP-5326

Possible incorrect behavior of single line suppressions

PCLP-5331

Resolved a crash when a ranged-based for statement references an auto function parameter

PCLP-5347

Improve support for Microsoft UCRT

PCLP-5365

Fixed a crash that could occur when parsing inline assembly

PCLP-5394

False negative 2469 from inline variables defined with macros

PCLP-5406

Fixed a potential crash in Thread Analysis

PCLP-5455

Corrected -append options for au-misra-cpp2.lnt

Known Issues

PCLP-939

Message 756 is disabled

PCLP-1039

Variable-not-accessed messages not issued for arrays

PCLP-2608

Message 522 incorrectly emitted for call to function that modifies object through pointer to const structure

PCLP-2614

False positive instance of message 522 for call to const member function but has external side-effects

PCLP-3147

Messages 1579 does not work as expected

PCLP-3223

The undocumented fil flag is not implemented

PCLP-3485

False positive message 9175 for lambda functions that modify local variables captured by reference

PCLP-3489

Messages 9128 may be incorrectly emitted within the instantiation of a template with a non-type template parameter

PCLP-3803

False positive 650 for shifted values

PCLP-3894

Messages 9131 and 9240 do not treat dependent qualified identifiers as primary or postfix expressions

PCLP-4161

False positives for Strong Type messages when using template parameters

PCLP-4299

False positive 587 and 650 for result of bitwise AND dependent on former sign bit of promoted value

PCLP-4740

Message 9079 incorrectly emitted for some equality operations in C mode

PCLP-4749

Messages 754 and 768 do not consider appearances in member designators as references

PCLP-5129

Message 9031 does not support expanded definition of composite expressions introduced in MISRA C:2023

AUTOSAR Summary

PCLP-5443

Improved support for AUTOSAR M7-4-2 MISRA C++:2008 7-4-2

PCLP-5318

Message 9441 no longer emits for dependent classes, does emit for violating class instantiations

PCLP-5242

Use of AUTOSAR guideline headline text

PCLP-5237

Resolved a false positive for message 953

PCLP-5232

Resolved a false positive for messages 953 and 1803

PCLP-5227

Changed the behavior of -append to allow use of empty name parameters

PCLP-4980

Resolved a false positive for message 1576

PCLP-4979

Resolve deprecated type being issued for deduced types in a lambda capture

PCLP-4936

Improved support for AUTOSAR Rules A17-0-1 and M17-0-2

PCLP-4187

Added new fsb flag option

PCLP-4138

Support AUTOSAR Rule A13-2-2 with new message 9143

PCLP-4121

Add new message 3906 to support AUTOSAR Rule A8-4-7

PCLP-4113

Added new message 2906 and improved 2706 to support AUTOSAR A7-2-1

PCLP-4104

Add message 9201 to support AUTOSAR Rule A5-1-1

PCLP-3525

Add message 1958 to support AUTOSAR Rule A18-1-6

PCLP-3485

False positive message 9175 for lambda functions that modify local variables captured by reference

MISRA Summary

PCLP-5455

Corrected -append options for au-misra-cpp2.lnt

PCLP-5398

Refine exception for MISRA C++:2023 Rule 11.3.1

PCLP-5387

Assistance provided for MISRA C++:2023 Rules 8.7.2 and 8.9.1

PCLP-5377

Improve support for MISRA C++:2023 Rule 0.1.2

PCLP-5362

Enable 2721 and 9223 for MISRA C++:2023 Rule 25.5.2

PCLP-5361

Add support for MISRA C++:2023 Rule 22.3.1

PCLP-5360

Add message 9289 for using the raw pointer constructor of a smart pointer to support MISRA C++:2023 Rule 23.11.1

PCLP-5358

Enable messages 2422 and 2722 to support MISRA C++:2023 Rule 25.5.3.

PCLP-5356

Add new message 9492 to support MISRA C++:2023 Rule 15.1.5

PCLP-5355

Added support for MISRA C++:2023 Rule 8.20.1

PCLP-5354

Enable messages 454 and 2507 to support MISRA C++:2023 Rule 8.18.1.

PCLP-5330

Improve support for MISRA C++:2023 Rule 8.2.5

PCLP-5289

Resolve false positive for message 1946

PCLP-5283

Fix false positive 2705 for assignments involving fields with reference type

PCLP-5280

Update message 1806 based on new interpretation of MISRA C++:2023 Rule 6.8.4

PCLP-5257

Improve the location reported by message 9042 in certain situations

PCLP-5253

Resolve potential crash for statements appearing after a throw in a switch case

PCLP-5243

Use of MISRA C:2025 guideline headline text

PCLP-5240

Resolved 901 false positives for loop variables of range-based for loops

PCLP-5223

Improved support mechanism for MISRA C++:2023 Rule 6.9.2

PCLP-5127

Resolved 9057 false negatives for suffixes ull and Ull

PCLP-5105

Updated message 9058 behavior

PCLP-5086

Improvements to message 9005

PCLP-5026

Message 2405 now reports usage of assignment-suppressing character with n conversion specifier

PCLP-4909

Added new message 9280 to fully support MISRA C++:2023 Rule 21.6.3

PCLP-4885

Added new message 9268 to fully support MISRA C++:2023 Rule 7.0.2

PCLP-4883

Add new messages 9484 and 9485 to support MISRA C++:2023 Rule 15.1.4

PCLP-4882

Add new messages 1980, 1981, 1982, 1983, 1984, and 1985 to support MISRA C++:2023 Rule 15.0.1

PCLP-4878

Add new message 3718 to support MISRA C++:2023 Rule 28.6.4.

PCLP-4876

Added new message 9486 to fully support MISRA C++:2023 Rule 13.3.4

PCLP-4875

Added new message 9270 to fully support MISRA C++:2023 Rule 9.4.2

PCLP-4874

Added new message 9269 to fully support MISRA C++:2023 Rule 9.2.1

PCLP-4873

Added new message 9274 to fully support MISRA C++:2023 Rule 6.4.2

PCLP-4868

Add new messages 9261 and 9262 to support MISRA C++:2023 Rule 19.0.4

PCLP-4867

Add new messages 9472, 9473, 9474, and 9475 to support MISRA C++:2023 Rule 18.4.1

PCLP-4858

New message 9286 supports MISRA C++:2023 Rule 8.2.6

PCLP-4856

Add new message 9478 to MISRA C++:2023 Rule 8.1.2

PCLP-4855

Add new message 9477 to support MISRA C++:2023 Rule 8.1.1

PCLP-4854

Added new message 9490 to fully support MISRA C++:2023 Rule 7.0.3

PCLP-4848

Added new message 9283 and 9284 for non-constexpr global variables to support MISRA C++:2023 Rule 6.7.2

PCLP-4846

Add new message 9481 to support MISRA C++:2023 Rule 6.5.2

PCLP-4845

Message 2710 added to support MISRA C++:2023 Rule 6.0.1

PCLP-4839

Add new message 9480 to support MISRA C++:2023 Rule 0.2.4

PCLP-4187

Added new fsb flag option

PCLP-4113

Added new message 2906 and improved 2706 to support AUTOSAR A7-2-1

PCLP-3948

Initializers must be exactly 0 to be exempt from 9068, 9069, and 9034

PCLP-3674

Improved support for MISRA C++ 2008 Rule 17-0-2

PCLP-3339

Improve support for MISRA C++:2008 Rule 0-1-7

PCLP-2808

New tagged suppressions feature

PCLP-2062

Add new messages 2422 and 2722 to support MISRA C:2025 Rule 21.21

PCLP-835

Improve support for MISRA C 2004 Rule 16.5 and MISRA C 2012/2023/2025 Rule 8.2

PCLP-5129

Message 9031 does not support expanded definition of composite expressions introduced in MISRA C:2023

PCLP-4749

Messages 754 and 768 do not consider appearances in member designators as references

PCLP-4740

Message 9079 incorrectly emitted for some equality operations in C mode

PCLP-3894

Messages 9131 and 9240 do not treat dependent qualified identifiers as primary or postfix expressions

PCLP-3489

Messages 9128 may be incorrectly emitted within the instantiation of a template with a non-type template parameter

PCLP-3485

False positive message 9175 for lambda functions that modify local variables captured by reference

23.1.3 New Features



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.

23.1.4 Improvements



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.

23.1.5 Bugs Fixed



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.

23.1.6 Known Issues



PCLP-939

Message 756 is disabled
Message 756 (global typedef not referenced) is disabled in the current release.

PCLP-1039

Variable-not-accessed messages not issued for arrays
Messages 550 (local variable not accessed) and 552 (external variable not accessed) are not currently issued for variables of array type.

PCLP-2608

Message 522 incorrectly emitted for call to function that modifies object through pointer to const structure
Message 522 (highest operation lacks side effects) may be incorrectly emitted for the call to a function whose only side effect is to modify an object via a pointer to a const structure which itself contains a pointer-to-non-const member which is then used to modify an object.

PCLP-2614

False positive instance of message 522 for call to const member function but has external side-effects
A false positive instance of message 522 may be emitted for a call to a const member function despite the presence of external side-effects.

PCLP-3147

Messages 1579 does not work as expected
Message 1579 (non-static pointer data member may have been zeroed or freed in a separate method) is not emitted with the example provided in the message description and may similarly not be emitted in other situations.

PCLP-3223

The undocumented fil flag is not implemented
The ?? flag, which would control whether or not indentation checking is applied to labels, is not implemented. This unimplemented flag is not documented in the list of flag options, but a reference to it is made in section 13.4.

PCLP-3485

False positive message 9175 for lambda functions that modify local variables captured by reference
Messages 9175 (function has void return type and no external side-effects) may be incorrectly emitted for closure type call operators that have a void return type and modify a local variable that has been captured by reference. The option -equery(9175, msgSymbolParam(1).CXXMethodDecl.getParent:isLambda and not isCapturelessLambda) may be used to suppress this message for all capturing lambdas.

PCLP-3489

Messages 9128 may be incorrectly emitted within the instantiation of a template with a non-type template parameter
Message 9128 (plain character data mixed with non-plain-character data) may be improperly emitted during the instantiation of a template containing a non-type template parameter, having a signed char or unsigned char underlying type, which is used in a context where 9128 would be appropriately emitted if the non-type template parameter instead had an underlying type of plain char.

PCLP-3803

False positive 650 for shifted values
Message 650 (constant out of range for operator) is sometimes incorrectly issued when the result of a shift expression is compared with a constant value.

PCLP-3894

Messages 9131 and 9240 do not treat dependent qualified identifiers as primary or postfix expressions
Messages 9131 (operand of logical operator is not a postfix expression) and 9240 (operand of logical operator is not a primary expression) do not treat dependent qualified identifiers as postfix expressions or primary expressions, respectively, when they should be recognized as both. This can result in false positive emissions of these messages when a dependent qualified identifier is used as an operand to a logical operator. The following options -equery(9131 9240, msgStringParam(1) == "left" && BinaryOperator.getLHS.CXXDependentScopeMemberExpr) and -equery(9131 9240, msgStringParam(1) == "right" && BinaryOperator.getRHS.CXXDependentScopeMemberExpr) may be used to suppress the false positives for these messages.

PCLP-4161

False positives for Strong Type messages when using template parameters
The Strong Type of a declaration which contains a template type in its instantiation will not evaluate to a Strong Type, even if one is provided as a template argument. There is currently no softener to exclude checks for these types. Suppressions can be made for false positives which occcur from template types. For example to suppress 633 for all push_back calls to a std::vector the following suppression can be used, -ecall(633, std::vector<*>::push_back).

PCLP-4299

False positive 587 and 650 for result of bitwise AND dependent on former sign bit of promoted value
Messages 587 (constant out of range for operator) and 650 (predicate can be pre-determined) may be incorrectly emitted when the non-constant portion of a comparison operation is a bitwise AND operator, itself having an operand that is a variable with a signed type that is smaller than int.

PCLP-4740

Message 9079 incorrectly emitted for some equality operations in C mode
Message 9079 (conversion from pointer to void to other pointer type) is incorrectly emitted for equality operators having a LHS operand of pointer to object type and a RHS operand of pointer to void type. This issue only occurs in C modules. The C Standard specifies that the pointer to object operand is converted to pointer to void in this case so the message indicating a conversion to object pointer type is undeserved.

PCLP-4749

Messages 754 and 768 do not consider appearances in member designators as references
Messages 754 (local member not referenced) and 768 (global structure member not referenced) do not consider the use of field names in the member designator of a designated initializer to constitute a reference. As a result, these messages may be emitted for fields whose only use occurs as a member designator.

PCLP-5129

Message 9031 does not support expanded definition of composite expressions introduced in MISRA C:2023
Message 9031 (composite expression assigned to wider essential type) does not yet consider the bitwise operator ~ or the unary operators +/- to be composite operators, a change introduced in MISRA C:2023. This message will not be emitted for expressions that violate MISRA C:2023 Rule 10.6 by virtue of this updated guidance.

23.2 Version 2025

23.2.1 Highlights

PC-lint Plus 2025 includes several new featues and numerous improvements including:

23.2.2 Summary

New Features

PCLP-853

Added support for function attributes warn_unused_result and nodiscard

PCLP-1060

New message 9140 supports AUTOSAR M6-6-3

PCLP-2040

New message for use of delete on void pointers

PCLP-2061

Add new message 2721 and 9223 to support MISRA C 2012 AMD-1 Rule 21.19

PCLP-2458

New message 9197 supports MISRA C 2012 Rule 14.2

PCLP-2605

Reintroduced message 962 from PC-lint 9

PCLP-2837

Parallel builds with imposter are now supported

PCLP-2909

Template classes, functions, and variables can be deprecated

PCLP-2917

Added support for MISRA C 2012 Rule 12.4

PCLP-3419

New message 3980 supports MISRA C++ 7-5-3

PCLP-3522

New message 9189 helps support AUTOSAR A7-1-7

PCLP-3524

Add new message 1950 to support AUTOSAR Rule A12-1-5

PCLP-3530

New message 9241 supports AUTOSAR19 A5-2-6

PCLP-3535

Add new message 2506 to support AUTOSAR Rule A21-8-1 and CERT C Rule STR37-C

PCLP-3536

New message 9453 supports AUTOSAR A8-5-2

PCLP-3917

Add new message 2469 to support AUTOSAR M3-2-4

PCLP-3994

Add new messages 2507 to support MISRA C Rule 19.1

PCLP-4066

New fuv flag option

PCLP-4084

Diagnostic Accounting Feature

PCLP-4102

New message 3708 and 9508 support AUTOSAR Rule A3-3-2

PCLP-4107

New messages 9191 and 9192 supports AUTOSAR A6-5-2

PCLP-4108

New message 9193 supports AUTOSAR M6-5-4

PCLP-4109

New messages 9194 and 9195 supports AUTOSAR M6-5-5

PCLP-4110

New message 9196 supports AUTOSAR M6-5-6

PCLP-4111

Add new message 1803 to support AUTOSAR Rule A7-1-2

PCLP-4112

New message 1955 supports AUTOSAR Rule A7-1-5

PCLP-4114

Add new message 3717 to support AUTOSAR19 Rule A7-3-1

PCLP-4115

Add new messages 9220 and 9221 to support MISRA C++ 2008 Rule 7-4-3

PCLP-4116

New message 3780 supports AUTOSAR A7-5-1

PCLP-4117

Add new message 9206 to support AUTOSAR Rule A8-2-1

PCLP-4119

New message 3910 supports AUTOSAR19 A8-4-5

PCLP-4120

New messages 3715 and 3716 supports AUTOSAR19 A8-4-6

PCLP-4122

Add message 3915 to support AUTOSAR19 Rules A8-4-4 and A8-4-8

PCLP-4127

New message 9249 supports AUTOSAR M10-2-1

PCLP-4128

New messages 9242, 9243, 9244, 9245, and 9246 support AUTOSAR A11-0-2

PCLP-4129

New messages 3513, 3713, and 3913 supports AUTOSAR A12-0-1

PCLP-4130

Add new message 1947 to support AUTOSAR Rule A12-1-2

PCLP-4132

Add new message 1801 to support AUTOSAR Rule A12-4-1

PCLP-4134

Add new message 1424 to support AUTOSAR Rule A12-8-3

PCLP-4135

Add new message 1957 to support AUTOSAR Rule A12-8-6

PCLP-4136

New message 3714 and 9514 supports AUTOSAR A13-1-2

PCLP-4137

Add new messages 9266 and 9267 to support AUTOSAR Rule A13-1-3

PCLP-4139

Add new message 9239 to support AUTOSAR Rule A13-5-4

PCLP-4140

New messages 1804 and 1805 support AUTOSAR19 A14-5-1

PCLP-4141

Add new message 9248 to support AUTOSAR Rule A14-5-3 and MISRA C++ Rule 14-5-1

PCLP-4142

Add new message 9250 to support AUTOSAR Rule M14-6-1

PCLP-4145

Add new messages 9302 and 9303 to support AUTOSAR Rule A15-1-3

PCLP-4146

New message 3712 and 3912 supports AUTOSAR A15-2-1

PCLP-4147

New message 3433 supports AUTOSAR M15-3-3

PCLP-4150

New message 3548 supports AUTOSAR A15-4-3

PCLP-4151

Added support for AUTOSAR Rule A15-5-1 with new message 9470

PCLP-4152

New message 3904 supports AUTOSAR A18-5-4

PCLP-4153

Add new messages 3435 and 3436 and enable 3047 to support AUTOSAR19 Rule A18-5-9

PCLP-4155

Add new messages 3709 and 3710 to support AUTOSAR19 Rule A18-5-11

PCLP-4156

New message 3711 supports AUTOSAR 18-9-3

PCLP-4157

New message 3905 supports AUTOSAR A18-9-4

PCLP-4253

New message 2840 supports AUTOSAR M6-5-2

PCLP-4315

New message 9188 adds support for MISRA C 2012 AMD-3 Rule 18.9

PCLP-4325

New message 3537 supports AUTOSAR M9-3-1

PCLP-4395

Add new message 9222 to support MISRA C 2012 AMD 4 Rule 7.6

PCLP-4473

Added new message supporting MISRA C 2012 Rule 10.1

PCLP-4501

Add sub-option for stack usage to allocate variables at the start of the function

PCLP-4551

Commas are now optional when specifying multiple messages for -e(, –e(, -e{, and –e{

PCLP-4593

New message 2776 replaces 1776 for C modules

PCLP-4644

Add new messages 9277 and 9278 to support MISRA C 2012 Rule 5.8 and MISRA C 2012 Rule 5.9

PCLP-4645

Add new message 9279 to support AUTOSAR A2-10-4

PCLP-4798

Add new message 9155 to identify commented-out code

PCLP-4826

Support for MISRA C++:2023

PCLP-4842

Added new message 9184 to support MISRA C++ 2023 Directive 5.7.2

PCLP-4844

New message 9251 supports MISRA C++:2023 Rule 5.13.6

PCLP-4847

New message 9257 supports MISRA C++:2023 Rule 6.7.1

PCLP-4849

Add new message 1806 to support MISRA C++:2023 Rule 6.8.4

PCLP-4857

New message 9164 reports on uses of reinterpret_cast

PCLP-4859

New message 9161 supports MISRA C++:2023 Rule 8.2.9

PCLP-4860

New message 9207 supports MISRA C++:2023 Rule 8.3.2

PCLP-4861

Add new message 9256 to support MISRA C++:2023 Rule 10.1.2

PCLP-4863

New message 9253 reports on the use of bit-fields

PCLP-4864

Add new message 1953 to support MISRA C++:2023 Rule 13.3.2

PCLP-4865

New message 1956 reports on symmetric operators implemented as member functions

PCLP-4866

Added support for MISRA C++ 2023 Rule 17.8.1

PCLP-4869

Added support for MISRA C++ 2023 Rule 22.4.1

PCLP-4877

Add new message 3911 to support MISRA C++:2023 Rule 28.6.1

PCLP-4880

Add new message 3907 to support MISRA C++:2023 Rule 9.5.2

PCLP-4881

Add new message 9217 to support MISRA C++:2023 Rule 10.4.1

PCLP-4900

Add new message 9255 to support MISRA C++:2023 Rule 6.0.3

PCLP-4956

Explicit support for MISRA C:2023

PCLP-5089

Support for MISRA C:2025

PCLP-5100

Added Unused Suppressions Tool

Improvements

PCLP-960

Update 9103 to fully support MISRA C++ Rule 2-10-5

PCLP-1578

Emit function location for 9070

PCLP-2603

Re-enabled message 767

PCLP-2978

Assembly related errors are no longer emitted.

PCLP-3005

Messages 419 and 420 now also issued for non-buffer arguments

PCLP-3012

Messages 750, 1401, 1540, 1541, 1565, 1566, 1578, 1579, 1927 are now issued in a consistent order

PCLP-3058

Enabled support for MISRA 2004 Rule 20.3 and MISRA 2012 Directive 4.11

PCLP-3061

Added supplemental message for message 455

PCLP-3410

Support language extension specifying an explicit address using a colon

PCLP-3620

-efunc can now be used to suppress messages within special member functions and conversion operators.

PCLP-3648

Emit message 686 in response to suppression of message 322

PCLP-3716

Corrected representation of format string checking for wide-string functions

PCLP-3766

Message 9035 added as a way to support MISRA C 2004 Rule 1.1

PCLP-3922

Removing section "Differences from PC-lint 9" and documenting the default value of -vt_depth

PCLP-3937

Update message 9264 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

PCLP-3949

Improved built-in function semantics

PCLP-3957

Update MISRA C++ 2008 configuration template

PCLP-3971

Add -isystem and -Hincdir= to the list of defaults for –prefix-directory-options in pclp_config.py

PCLP-3973

Added support for MISRA C 2012 Directive 4.13

PCLP-3980

Variables marked with attribute unused are now exempt from message 438

PCLP-4012

Use of the __generic keyword no longer elicits errors when using IAR compiler configurations

PCLP-4016

Built-in function semantics for std::jthread

PCLP-4046

Do not emit message 1764 for universal reference parameter of template instantiated with a lambda

PCLP-4058

Include metrics that evaluate to a metric host/collection on the metric report

PCLP-4103

Added support for AUTOSAR19 Rule A5-0-4

PCLP-4105

Support for AUTOSAR Rule A5-1-2

PCLP-4123

Enable message 1764 to support AUTOSAR19 Rule A8-4-9

PCLP-4124

Add support for AUTOSAR19 Rule A8-4-10

PCLP-4126

Added support for AUTOSAR Rule M10-1-2

PCLP-4143

Message 4787 and 5630 have been moved to 163 and 164 respectively

PCLP-4154

Added support for AUTOSAR19 Rule A18-5-10

PCLP-4167

Improvements to the documentation of the section covering the utility pclp_config

PCLP-4206

Update size option extraction method for TI compiler configurations

PCLP-4323

Improved loop counter detection for message 850

PCLP-4327

Message 2467 will only report definitions

PCLP-4347

Clean up temporary IAR compiler output files when generating an IAR compiler configuration with pclp_config.py

PCLP-4374

Improve documentation of limitations on thread analysis messages during the second phase

PCLP-4380

Deprecated type names are now compared against fully qualified types

PCLP-4393

Support MISRA C 2012 AMD-4 Directive 5.2

PCLP-4394

Partial support for MISRA C 2012 AMD-4 Directive 5.3

PCLP-4404

Assistance for MISRA C 2012 AMD-4 Rule 22.14

PCLP-4406

Support MISRA C 2012 AMD-4 Rule 22.17

PCLP-4423

Update generic selection expression checks to consider type predicates

PCLP-4469

Add detail message parameter to 1940

PCLP-4475

Modify 9034 to consider the rank of essentially signed integer constant expressions

PCLP-4476

Update messages 9078, 9079, 9087, and 9295 to only report conversions involving object pointers

PCLP-4477

Message 9080 no longer emits while initializing an object containing pointers with 0

PCLP-4479

Update 1776 to support additional implied assignment contexts

PCLP-4480

Modify 9028 to account for operand rank

PCLP-4482

Category of MISRA C 2012 Rule 13.6 changed from Mandatory to Required

PCLP-4484

Modify message 533 to consider the current C language standard

PCLP-4485

Category of MISRA C 2012 Rule 17.5 changed from Advisory to Required

PCLP-4506

Added documentation of the ’c’ flag for the -size option.

PCLP-4507

Message 977 no longer emitted for some conditional-expressions

PCLP-4523

Expand message 1537 to support AUTOSAR M9-3-1

PCLP-4526

Added missing thread analysis semantic documentation

PCLP-4531

Improve documentation for the -h option

PCLP-4532

Documentation Improvement

PCLP-4537

Clarify that the –compiler-options option is not required for the IAR compiler

PCLP-4540

Deprecations of C++ types may omit the struct, class, union, or enum keyword

PCLP-4541

Fixed false positive 8516 for non-compliant file paths

PCLP-4554

Improved message descriptions for messages 810 and 423

PCLP-4579

Added version and copyright information to the PC-lint Plus executable on Windows

PCLP-4599

Updated pclp_config to provide a warning when suspicious include path parsing is detected

PCLP-4612

Enable support for AUTOSAR19 Rule A2-10-1 / AUTOSAR17 Rule A2-11-1

PCLP-4656

Support usage of __lint_assert in constexpr contexts

PCLP-4685

Improving the Documentation of the [+/-]libm Option

PCLP-4687

New Query functions for C++20 and C++23 features

PCLP-4688

Locker classes no longer need to have default constructors

PCLP-4700

Including a query example for tautological assignment

PCLP-4710

Soften message 9224 for test of integer literal zero

PCLP-4719

Improved support for MISRA C 2012 Rule 1.3

PCLP-4745

Add support for Keil uVision armclang compiler

PCLP-4768

Fallthrough attributes are now excused from message 9138

PCLP-4772

Citations are now rendered when viewing message descriptions using -help or -dump_messages

PCLP-4801

Improving the Integration of PC-lint Plus into Eclipse-based IDEs

PCLP-4802

Emphasize the effects of marking code as library on analysis

PCLP-4806

Better support IAR ARM compiler configurations for atomics

PCLP-4808

Added getValue query for StringLiteral AST nodes

PCLP-4850

Message 970 no longer emitted for postfix operator parameters

PCLP-4888

Harmonize emission conditions of messages 720, 820, and 9084

PCLP-4889

Message 9008 no longer emitted in template instantiations

PCLP-4899

Update description of message 606

PCLP-4904

Message 9436 now emitted for constant static data members

PCLP-4916

Thread Analysis message source locations can now emit base names

PCLP-4939

-deprecate options in coding standard configuration files no longer use deprecation commentary

PCLP-4947

Improve reporting of MISRA C 2012 AMD 4 Rule 22.18

PCLP-4959

Updated AUTOSAR append text to include the version

PCLP-4967

Use of coding standard configuration files represented in message 900

PCLP-4992

pclp_config now accepts command line arguments when invoked from another python module

PCLP-4993

Deprecate CryptDecrypt and mktemp in au-cwe.lnt

PCLP-5001

Corrected append text for CERT C Recommendation EXP05-C

PCLP-5002

Updated message description for error 52

PCLP-5019

Support GCC configurations using C++23 with the pclp_config.py tool

PCLP-5030

Add message 1765

PCLP-5035

Extend the fbl flag option to identifier lookups in dependent base classes

PCLP-5039

Added isOrdinary, isWide, isUTF8, isUTF16, isUTF32, isUnevaluated, and containsNonAscii queries for StringLiteral AST nodes

PCLP-5049

Add support for GCC’s assume attribute

PCLP-5056

Add section about PCLP_NO_LNT_VERSION_CHECK to the "Using PC-lint Plus in Safety Critical Applications" document

PCLP-5065

C and C++ language standards can now be specified with pclpvscfg

PCLP-5066

Improve rendering of paragraph separations for -help and -dump_messages

PCLP-5068

Add pclp_config option transformation for TI compilers defines

PCLP-5076

Added new language option flags in database of pclp_config

PCLP-5077

Informational message 2751 replaced with warning message 2541

PCLP-5078

Add project configuration support for Microchip compilers

PCLP-5122

Enhance message presentation when enabling MISRA C 2012 amendments

PCLP-5147

Use of MISRA guideline headline text

PCLP-5159

Updated the "Using PC-lint Plus in Safety Critical Applications" document

PCLP-5174

Message 1946 no longer emits for functional casts using curly braces or those resulting in a constructor call

PCLP-5177

Noted potential limitation when using pclp_config.py with a non-English locale

Bugs Fixed

PCLP-2135

Fix 9003 false negative

PCLP-3198

Fixed false positive 9045 for nested structures

PCLP-3213

Resolved false positive 9119 for functional style casts using brace initialization

PCLP-3390

Resolved false positive 9034 when true and false macros are used as macro arguments

PCLP-3734

Assumption that pointer may be null is now applied following a comparison against null

PCLP-3848

Resolve false negative 1774 for if, while, for, and switch statement condition and/or initializer variables

PCLP-3856

Fix 438, 838, 522, and 523 false positives related to lambda captures

PCLP-3867

Message hooks inappropriately executed for supplementals of suppressed messages

PCLP-3967

Functions named "random" or "rand" within user-defined namespaces are no longer reported by message 2461

PCLP-4010

Fix false positive 9049 within lambda body

PCLP-4182

Resolved false negative 9060 in long block comments

PCLP-4260

Correction of internal error 795D141F in thread analysis semantic processing

PCLP-4332

Removed claim about 605’s applicability in message 1537’s description

PCLP-4432

586 reports deprecated macros in a nested macro expansion

PCLP-4440

Memory leaks fixed

PCLP-4465

Fixed false negative for 1781 and 1940 when parameter is reference to pointer

PCLP-4466

Fixed false positive for 1781 and 1940 when parameter is reference to pointer

PCLP-4471

Potential crash when using defaulted virtual destructors in C++03 mode

PCLP-4487

Removed duplicate message 9436 when using an array function parameter in a template

PCLP-4509

Resolve false positive for 9128

PCLP-4555

Variable access information in thread analysis function reports issued in inconsistent order

PCLP-4558

Messages 550, 551, 552, 727, 728, 729, and 738 will now respect all unevaluated contexts

PCLP-4566

Thread Analysis messages issued in inconsistent order

PCLP-4571

Message 979, 1401, and 9175 locations have been fixed for out of line template class method instantiations

PCLP-4582

Duplicate 586 messages have been resolved

PCLP-4721

Limit the situations in which message 923 is enabled within au-misra3.lnt

PCLP-4742

Resolve false positive 757, 758, 759, 768, 769 and false negative 749, 751, 752, 753, 754 in macro expansion

PCLP-4760

Resolved crash for CXXRecordDecl’s getLambdaStaticInvoker, isProvablyNotDerivedFrom, and isVirtuallyDerivedFrom’ queries

PCLP-4761

Changed CXXRecordDecl’s isCLike and isDerivedFrom queries to return None for forward declarations

PCLP-4762

Correct return value for isLocalClass Query function

PCLP-4785

Eliminated some duplicated type deprecations

PCLP-4818

Resolve false positive 1550 in lambda parameter default argument

PCLP-4872

Remove CWE-398 category

PCLP-4912

Internal error when using the hasICEInitializer Query function on a variable without an initializer

PCLP-4937

Internal error when using the getBitWidthValue Query function on a bit-field with value-dependent width

PCLP-4957

Barr C rule 7.1.o not honored in the naming conventions

PCLP-4970

Fix hang when a using directive attempts to create a cycle in the strong type hierarchy

PCLP-4974

Resolve error messages related to enumeration template parameters with underlying character or Boolean types

PCLP-4986

Corrected message 1962 to be an Elective Note

PCLP-4987

Preprocessing-only mode now expands system headers

PCLP-5021

Corrected append text for CERT C rules

PCLP-5034

Added missing built-in function semantics for Qt’s QMutexLocker class

PCLP-5036

Resolved internal errors 19F5CC61 and 998C0E63 for constrained function template arguments

PCLP-5064

Correct default Visual Studio language standards

PCLP-5067

Internal error 499C50D3 when processing indeterminate mutexes

PCLP-5087

Change the suppression options used to enable the messages supporting MISRA C Rule 11.6

PCLP-5106

Removed message 754 and 768 for MISRA C Rule 2.8

PCLP-5113

Resolved false negative 818, 843, 844, 952, 953, 954, 1764, and 1803 for initializer lists

PCLP-5116

Resolved sporadic false negative 9012

PCLP-5176

Update support claim for MISRA C++ 2008 rule 0-1-4 and AUTOSAR17/AUTOSAR19 rule M0-1-4

PCLP-5190

Corrected append text for several CERT C guidelines

Known Issues

PCLP-939

Message 756 is disabled

PCLP-1039

Variable-not-accessed messages not issued for arrays

PCLP-2608

Message 522 incorrectly emitted for call to function that modifies object through pointer to const structure

PCLP-2614

False positive instance of message 522 for call to const member function but has external side-effects

PCLP-3004

Message 1565 does not report the status of sub-objects within data members of class type

PCLP-3147

Messages 1579 does not work as expected

PCLP-3223

The undocumented +fil flag is not implemented

PCLP-3485

False positive message 9175 for lambda functions that modify local variables captured by reference

PCLP-3489

Messages 9128 may be incorrectly emitted within the instantiation of a template with a non-type template parameter

PCLP-3803

False positive 650 for shifted values

PCLP-3881

Message 2650 incorrectly reported for redundant portion of comparison operators

PCLP-3894

Messages 9131 and 9240 do not treat dependent qualified identifiers as primary or postfix expressions

PCLP-4161

False positives for Strong Type messages when using template parameters

PCLP-4299

False positive 587 and 650 for result of bitwise AND dependent on former sign bit of promoted value

PCLP-4740

Message 9079 incorrectly emitted for some equality operations in C mode

PCLP-4749

Messages 754 and 768 do not consider appearances in member designators as references

PCLP-5127

Message 9057 not emitted for ull or Ull suffixes

PCLP-5129

Message 9031 does not support expanded definition of composite expressions introduced in MISRA C:2023

AUTOSAR Summary

PCLP-4959

Updated AUTOSAR append text to include the version

PCLP-4888

Harmonize emission conditions of messages 720, 820, and 9084

PCLP-4612

Enable support for AUTOSAR19 Rule A2-10-1 / AUTOSAR17 Rule A2-11-1

PCLP-4523

Expand message 1537 to support AUTOSAR M9-3-1

PCLP-4380

Deprecated type names are now compared against fully qualified types

PCLP-4325

New message 3537 supports AUTOSAR M9-3-1

PCLP-4253

New message 2840 supports AUTOSAR M6-5-2

PCLP-4157

New message 3905 supports AUTOSAR A18-9-4

PCLP-4156

New message 3711 supports AUTOSAR 18-9-3

PCLP-4155

Add new messages 3709 and 3710 to support AUTOSAR19 Rule A18-5-11

PCLP-4154

Added support for AUTOSAR19 Rule A18-5-10

PCLP-4153

Add new messages 3435 and 3436 and enable 3047 to support AUTOSAR19 Rule A18-5-9

PCLP-4152

New message 3904 supports AUTOSAR A18-5-4

PCLP-4151

Added support for AUTOSAR Rule A15-5-1 with new message 9470

PCLP-4150

New message 3548 supports AUTOSAR A15-4-3

PCLP-4147

New message 3433 supports AUTOSAR M15-3-3

PCLP-4146

New message 3712 and 3912 supports AUTOSAR A15-2-1

PCLP-4145

Add new messages 9302 and 9303 to support AUTOSAR Rule A15-1-3

PCLP-4143

Message 4787 and 5630 have been moved to 163 and 164 respectively

PCLP-4141

Add new message 9248 to support AUTOSAR Rule A14-5-3 and MISRA C++ Rule 14-5-1

PCLP-4139

Add new message 9239 to support AUTOSAR Rule A13-5-4

PCLP-4137

Add new messages 9266 and 9267 to support AUTOSAR Rule A13-1-3

PCLP-4136

New message 3714 and 9514 supports AUTOSAR A13-1-2

PCLP-4135

Add new message 1957 to support AUTOSAR Rule A12-8-6

PCLP-4134

Add new message 1424 to support AUTOSAR Rule A12-8-3

PCLP-4132

Add new message 1801 to support AUTOSAR Rule A12-4-1

PCLP-4130

Add new message 1947 to support AUTOSAR Rule A12-1-2

PCLP-4129

New messages 3513, 3713, and 3913 supports AUTOSAR A12-0-1

PCLP-4128

New messages 9242, 9243, 9244, 9245, and 9246 support AUTOSAR A11-0-2

PCLP-4127

New message 9249 supports AUTOSAR M10-2-1

PCLP-4126

Added support for AUTOSAR Rule M10-1-2

PCLP-4124

Add support for AUTOSAR19 Rule A8-4-10

PCLP-4123

Enable message 1764 to support AUTOSAR19 Rule A8-4-9

PCLP-4122

Add message 3915 to support AUTOSAR19 Rules A8-4-4 and A8-4-8

PCLP-4119

New message 3910 supports AUTOSAR19 A8-4-5

PCLP-4117

Add new message 9206 to support AUTOSAR Rule A8-2-1

PCLP-4116

New message 3780 supports AUTOSAR A7-5-1

PCLP-4115

Add new messages 9220 and 9221 to support MISRA C++ 2008 Rule 7-4-3

PCLP-4114

Add new message 3717 to support AUTOSAR19 Rule A7-3-1

PCLP-4112

New message 1955 supports AUTOSAR Rule A7-1-5

PCLP-4111

Add new message 1803 to support AUTOSAR Rule A7-1-2

PCLP-4110

New message 9196 supports AUTOSAR M6-5-6

PCLP-4109

New messages 9194 and 9195 supports AUTOSAR M6-5-5

PCLP-4108

New message 9193 supports AUTOSAR M6-5-4

PCLP-4107

New messages 9191 and 9192 supports AUTOSAR A6-5-2

PCLP-4105

Support for AUTOSAR Rule A5-1-2

PCLP-4103

Added support for AUTOSAR19 Rule A5-0-4

PCLP-4102

New message 3708 and 9508 support AUTOSAR Rule A3-3-2

PCLP-4066

New fuv flag option

PCLP-4046

Do not emit message 1764 for universal reference parameter of template instantiated with a lambda

PCLP-3957

Update MISRA C++ 2008 configuration template

PCLP-3917

Add new message 2469 to support AUTOSAR M3-2-4

PCLP-3535

Add new message 2506 to support AUTOSAR Rule A21-8-1 and CERT C Rule STR37-C

PCLP-3530

New message 9241 supports AUTOSAR19 A5-2-6

PCLP-3524

Add new message 1950 to support AUTOSAR Rule A12-1-5

PCLP-3522

New message 9189 helps support AUTOSAR A7-1-7

PCLP-2909

Template classes, functions, and variables can be deprecated

PCLP-1060

New message 9140 supports AUTOSAR M6-6-3

PCLP-4142

Add new message 9250 to support AUTOSAR Rule M14-6-1

PCLP-4140

New messages 1804 and 1805 support AUTOSAR19 A14-5-1

PCLP-4120

New messages 3715 and 3716 supports AUTOSAR19 A8-4-6

PCLP-3536

New message 9453 supports AUTOSAR A8-5-2

PCLP-4798

Add new message 9155 to identify commented-out code

PCLP-4645

Add new message 9279 to support AUTOSAR A2-10-4

PCLP-3485

False positive message 9175 for lambda functions that modify local variables captured by reference

CERT C Summary

PCLP-5001

Corrected append text for CERT C Recommendation EXP05-C

PCLP-4593

New message 2776 replaces 1776 for C modules

PCLP-5021

Corrected append text for CERT C rules

PCLP-5190

Corrected append text for several CERT C guidelines

MISRA Summary

PCLP-4947

Improve reporting of MISRA C 2012 AMD 4 Rule 22.18

PCLP-4904

Message 9436 now emitted for constant static data members

PCLP-4900

Add new message 9255 to support MISRA C++:2023 Rule 6.0.3

PCLP-4889

Message 9008 no longer emitted in template instantiations

PCLP-4888

Harmonize emission conditions of messages 720, 820, and 9084

PCLP-4881

Add new message 9217 to support MISRA C++:2023 Rule 10.4.1

PCLP-4880

Add new message 3907 to support MISRA C++:2023 Rule 9.5.2

PCLP-4877

Add new message 3911 to support MISRA C++:2023 Rule 28.6.1

PCLP-4869

Added support for MISRA C++ 2023 Rule 22.4.1

PCLP-4866

Added support for MISRA C++ 2023 Rule 17.8.1

PCLP-4865

New message 1956 reports on symmetric operators implemented as member functions

PCLP-4864

Add new message 1953 to support MISRA C++:2023 Rule 13.3.2

PCLP-4863

New message 9253 reports on the use of bit-fields

PCLP-4861

Add new message 9256 to support MISRA C++:2023 Rule 10.1.2

PCLP-4860

New message 9207 supports MISRA C++:2023 Rule 8.3.2

PCLP-4859

New message 9161 supports MISRA C++:2023 Rule 8.2.9

PCLP-4857

New message 9164 reports on uses of reinterpret_cast

PCLP-4850

Message 970 no longer emitted for postfix operator parameters

PCLP-4849

Add new message 1806 to support MISRA C++:2023 Rule 6.8.4

PCLP-4847

New message 9257 supports MISRA C++:2023 Rule 6.7.1

PCLP-4844

New message 9251 supports MISRA C++:2023 Rule 5.13.6

PCLP-4842

Added new message 9184 to support MISRA C++ 2023 Directive 5.7.2

PCLP-4826

Support for MISRA C++:2023

PCLP-4768

Fallthrough attributes are now excused from message 9138

PCLP-4721

Limit the situations in which message 923 is enabled within au-misra3.lnt

PCLP-4719

Improved support for MISRA C 2012 Rule 1.3

PCLP-4710

Soften message 9224 for test of integer literal zero

PCLP-4593

New message 2776 replaces 1776 for C modules

PCLP-4509

Resolve false positive for 9128

PCLP-4485

Category of MISRA C 2012 Rule 17.5 changed from Advisory to Required

PCLP-4484

Modify message 533 to consider the current C language standard

PCLP-4482

Category of MISRA C 2012 Rule 13.6 changed from Mandatory to Required

PCLP-4479

Update 1776 to support additional implied assignment contexts

PCLP-4477

Message 9080 no longer emits while initializing an object containing pointers with 0

PCLP-4476

Update messages 9078, 9079, 9087, and 9295 to only report conversions involving object pointers

PCLP-4475

Modify 9034 to consider the rank of essentially signed integer constant expressions

PCLP-4473

Added new message supporting MISRA C 2012 Rule 10.1

PCLP-4469

Add detail message parameter to 1940

PCLP-4406

Support MISRA C 2012 AMD-4 Rule 22.17

PCLP-4404

Assistance for MISRA C 2012 AMD-4 Rule 22.14

PCLP-4395

Add new message 9222 to support MISRA C 2012 AMD 4 Rule 7.6

PCLP-4393

Support MISRA C 2012 AMD-4 Directive 5.2

PCLP-4323

Improved loop counter detection for message 850

PCLP-4315

New message 9188 adds support for MISRA C 2012 AMD-3 Rule 18.9

PCLP-4147

New message 3433 supports AUTOSAR M15-3-3

PCLP-4143

Message 4787 and 5630 have been moved to 163 and 164 respectively

PCLP-4127

New message 9249 supports AUTOSAR M10-2-1

PCLP-4126

Added support for AUTOSAR Rule M10-1-2

PCLP-4115

Add new messages 9220 and 9221 to support MISRA C++ 2008 Rule 7-4-3

PCLP-4110

New message 9196 supports AUTOSAR M6-5-6

PCLP-4109

New messages 9194 and 9195 supports AUTOSAR M6-5-5

PCLP-4108

New message 9193 supports AUTOSAR M6-5-4

PCLP-4046

Do not emit message 1764 for universal reference parameter of template instantiated with a lambda

PCLP-4010

Fix false positive 9049 within lambda body

PCLP-3994

Add new messages 2507 to support MISRA C Rule 19.1

PCLP-3973

Added support for MISRA C 2012 Directive 4.13

PCLP-3957

Update MISRA C++ 2008 configuration template

PCLP-3937

Update message 9264 for MISRA C++ 2008 Rule 5-0-15

PCLP-3917

Add new message 2469 to support AUTOSAR M3-2-4

PCLP-3766

Message 9035 added as a way to support MISRA C 2004 Rule 1.1

PCLP-3419

New message 3980 supports MISRA C++ 7-5-3

PCLP-3390

Resolved false positive 9034 when true and false macros are used as macro arguments

PCLP-3198

Fixed false positive 9045 for nested structures

PCLP-3058

Enabled support for MISRA 2004 Rule 20.3 and MISRA 2012 Directive 4.11

PCLP-2458

New message 9197 supports MISRA C 2012 Rule 14.2

PCLP-2061

Add new message 2721 and 9223 to support MISRA C 2012 AMD-1 Rule 21.19

PCLP-1060

New message 9140 supports AUTOSAR M6-6-3

PCLP-4480

Modify 9028 to account for operand rank

PCLP-4394

Partial support for MISRA C 2012 AMD-4 Directive 5.3

PCLP-4142

Add new message 9250 to support AUTOSAR Rule M14-6-1

PCLP-3941

Added messages 2452, 2453, and 2455 as support mechanisms for MISRA C 2012 Rule 1.3

PCLP-2917

Added support for MISRA C 2012 Rule 12.4

PCLP-5147

Use of MISRA guideline headline text

PCLP-5122

Enhance message presentation when enabling MISRA C 2012 amendments

PCLP-5106

Removed message 754 and 768 for MISRA C Rule 2.8

PCLP-5089

Support for MISRA C:2025

PCLP-5087

Change the suppression options used to enable the messages supporting MISRA C Rule 11.6

PCLP-4798

Add new message 9155 to identify commented-out code

PCLP-4644

Add new messages 9277 and 9278 to support MISRA C 2012 Rule 5.8 and MISRA C 2012 Rule 5.9

PCLP-5174

Message 1946 no longer emits for functional casts using curly braces or those resulting in a constructor call

PCLP-5129

Message 9031 does not support expanded definition of composite expressions introduced in MISRA C:2023

PCLP-5127

Message 9057 not emitted for ull or Ull suffixes

PCLP-4749

Messages 754 and 768 do not consider appearances in member designators as references

PCLP-4740

Message 9079 incorrectly emitted for some equality operations in C mode

PCLP-3894

Messages 9131 and 9240 do not treat dependent qualified identifiers as primary or postfix expressions

PCLP-3489

Messages 9128 may be incorrectly emitted within the instantiation of a template with a non-type template parameter

PCLP-3485

False positive message 9175 for lambda functions that modify local variables captured by reference

23.2.3 New Features



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.

23.2.4 Improvements



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.

23.2.5 Bugs Fixed



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.

23.2.6 Known Issues



PCLP-939

Message 756 is disabled
Message 756 (global typedef not referenced) is disabled in the current release.

PCLP-1039

Variable-not-accessed messages not issued for arrays
Messages 550 (local variable not accessed) and 552 (external variable not accessed) are not currently issued for variables of array type.

PCLP-2608

Message 522 incorrectly emitted for call to function that modifies object through pointer to const structure
Message 522 (highest operation lacks side effects) may be incorrectly emitted for the call to a function whose only side effect is to modify an object via a pointer to a const structure which itself contains a pointer-to-non-const member which is then used to modify an object.

PCLP-2614

False positive instance of message 522 for call to const member function but has external side-effects
A false positive instance of message 522 may be emitted for a call to a const member function despite the presence of external side-effects.

PCLP-3004

Message 1565 does not report the status of sub-objects within data members of class type
Message 1565 will report when an initializer function has not initialized a non-static data member of the class of which the initializer function is a non-static member function. It will not report based on the status of non-static data members of other objects nested recursively as sub-objects of a non-static data member of class type.

PCLP-3147

Messages 1579 does not work as expected
Message 1579 (non-static pointer data member may have been zeroed or freed in a separate method) is not emitted with the example provided in the message description and may similarly not be emitted in other situations.

PCLP-3223

The undocumented +fil flag is not implemented
The +fil flag, which would control whether or not indentation checking is applied to labels, is not implemented. This unimplemented flag is not documented in the list of flag options, but a reference to it is made in section 13.4.

PCLP-3485

False positive message 9175 for lambda functions that modify local variables captured by reference
Messages 9175 (function has void return type and no external side-effects) may be incorrectly emitted for closure type call operators that have a void return type and modify a local variable that has been captured by reference. The option -equery(9175, msgSymbolParam(1).CXXMethodDecl.getParent:isLambda and not isCapturelessLambda) may be used to suppress this message for all capturing lambdas.

PCLP-3489

Messages 9128 may be incorrectly emitted within the instantiation of a template with a non-type template parameter
Message 9128 (plain character data mixed with non-plain-character data) may be improperly emitted during the instantiation of a template containing a non-type template parameter, having a signed char or unsigned char underlying type, which is used in a context where 9128 would be appropriately emitted if the non-type template parameter instead had an underlying type of plain char.

PCLP-3803

False positive 650 for shifted values
Message 650 (constant out of range for operator) is sometimes incorrectly issued when the result of a shift expression is compared with a constant value.

PCLP-3881

Message 2650 incorrectly reported for redundant portion of comparison operators
Message 2650 (portion of compound comparison operator out of range) is sometimes reported when the comparison portion of a compound comparison operator is redundant instead of only when the comparison portion of a compound comparison operator is out of range.

PCLP-3894

Messages 9131 and 9240 do not treat dependent qualified identifiers as primary or postfix expressions
Messages 9131 (operand of logical operator is not a postfix expression) and 9240 (operand of logical operator is not a primary expression) do not treat dependent qualified identifiers as postfix expressions or primary expressions, respectively, when they should be recognized as both. This can result in false positive emissions of these messages when a dependent qualified identifier is used as an operand to a logical operator. The following options -equery(9131 9240, msgStringParam(1) == "left" && BinaryOperator.getLHS.CXXDependentScopeMemberExpr) and -equery(9131 9240, msgStringParam(1) == "right" && BinaryOperator.getRHS.CXXDependentScopeMemberExpr) may be used to suppress the false positives for these messages.

PCLP-4161

False positives for Strong Type messages when using template parameters
The Strong Type of a declaration which contains a template type in its instantiation will not evaluate to a Strong Type, even if one is provided as a template argument. There is currently no softener to exclude checks for these types. Suppressions can be made for false positives which occcur from template types. For example to suppress 633 for all push_back calls to a std::vector the following suppression can be used, -ecall(633, std::vector<*>::push_back).

PCLP-4299

False positive 587 and 650 for result of bitwise AND dependent on former sign bit of promoted value
Messages 587 (constant out of range for operator) and 650 (predicate can be pre-determined) may be incorrectly emitted when the non-constant portion of a comparison operation is a bitwise AND operator, itself having an operand that is a variable with a signed type that is smaller than int.

PCLP-4740

Message 9079 incorrectly emitted for some equality operations in C mode
Message 9079 (conversion from pointer to void to other pointer type) is incorrectly emitted for equality operators having a LHS operand of pointer to object type and a RHS operand of pointer to void type. This issue only occurs in C modules. The C Standard specifies that the pointer to object operand is converted to pointer to void in this case so the message indicating a conversion to object pointer type is undeserved.

PCLP-4749

Messages 754 and 768 do not consider appearances in member designators as references
Messages 754 (local member not referenced) and 768 (global structure member not referenced) do not consider the use of field names in the member designator of a designated initializer to constitute a reference. As a result, these messages may be emitted for fields whose only use occurs as a member designator.

PCLP-5127

Message 9057 not emitted for ull or Ull suffixes
Message 9057 (lowercase L follows ’u’ in literal suffix) is emitted for suffixes containing a single lowercase L (ul and Ul) but not for suffixes that contain multiple lowercase Ls (ull and Ull).

PCLP-5129

Message 9031 does not support expanded definition of composite expressions introduced in MISRA C:2023
Message 9031 (composite expression assigned to wider essential type) does not yet consider the bitwise operator ~ or the unary operators +/- to be composite operators, a change introduced in MISRA C:2023. This message will not be emitted for expressions that violate MISRA C:2023 Rule 10.6 by virtue of this updated guidance.

23.3 Version 2.2

23.3.1 Highlights

PC-lint Plus 2.2 improves support for C++20, introduces support for C++23, addresses compatibility issues with recent versions of GCC and Visual Studio, and resolves several defects.

23.3.2 Summary

New Features

PCLP-4697

Support for C++20 Module Partitions

Improvements

PCLP-3964

Added support for C++20 literal class non-type template parameters to Value Tracking

PCLP-4334

Resolved syntax errors when using recently updated versions of Visual Studio 2022 standard library headers in C++20 mode

PCLP-4647

Improved instructions for integrating PC-lint Plus with the SEGGER IDE

PCLP-4671

Add support for C17, C23, and C++23 language standards

PCLP-4708

Improved type printing

PCLP-4725

Added detail parameters to message 540

PCLP-4746

Improved Strong Types in deduced types and template argument deduction

PCLP-4750

Improve filenames for file metrics

Bugs Fixed

PCLP-1471

Resolved crash when missing enumeration constant is used in constexpr functions

PCLP-1643

Resolved crash when parsing overloaded shift operator with variadic arguments

PCLP-4270

Internal error D8BD27EC during instantiation of templated lambdas

PCLP-4285

Moved coroutine implementation out of experimental namespace

PCLP-4331

Resolved error when using a templated consteval function

PCLP-4682

Updated messages to support C++20 parenthesized list initialization

PCLP-4699

Fixed rendering of Unicode characters when dumping queries on Windows

PCLP-4704

Resolved false negative 578 for static local variables

PCLP-4711

Correct support for Keil armcc compiler

PCLP-4726

Fixed location information of message 631

PCLP-4727

Resolved false negative 9035 for VLA through typedef

PCLP-4728

Resolved false negative 971 when used as enum-base

PCLP-4729

Resolved false negative 9141 and 753 for friend class forward declarations

PCLP-4730

Resolved false negative 1901 and 1946 for variable templates

PCLP-4731

Resolved false negative 768 for multiple anonymous structs

PCLP-4732

Resolved false positive 9447 in template classes members with explicit template arguments

PCLP-4733

Resolved false positive 9447 with typedef return type

PCLP-4734

Resolved false positive 957 with internal linkage parameters

PCLP-4735

Resolved false positive 912 and 915 for enum with base promotable to int

PCLP-4736

Resolved false positive 911 for default template argument

PCLP-4737

Correct typename in messages 641 and 911 for enumerations with promotable integer base type

PCLP-4738

Change message number 541 to 2005

Known Issues

PCLP-939

Message 756 is disabled

PCLP-960

Message 9103 not issued for inter-module reuse

PCLP-2135

False negative 9003 for static variables

PCLP-2603

Message 767 is disabled

PCLP-2614

False positive instance of message 522 for call to const member function but has external side-effects

PCLP-3004

Message 1565 does not report the status of sub-objects within data members of class type

PCLP-3198

False positive 9045 for nested structures

PCLP-3213

False positive implicit conversion messages when an explicit cast expression is used as a template argument for a non-type template parameter

PCLP-3223

The undocumented +fil flag is not implemented

PCLP-3803

False positive 650 for shifted values

PCLP-3856

False positive side-effect related messages for a lambda that has side effects

PCLP-4010

False positive 9049 within lambda body

PCLP-4046

False positive 1764 for universal reference parameter of template instantiated with a lambda

23.3.3 New Features



PCLP-4697

Support for C++20 Module Partitions
Support for C++20 Modules has been updated to add support for module partitions.

23.3.4 Improvements



PCLP-3964

Added support for C++20 literal class non-type template parameters to Value Tracking
Value Tracking can now analyze values derived from non-type template arguments of literal class type, which were introduced in C++20.

PCLP-4334

Resolved syntax errors when using recently updated versions of Visual Studio 2022 standard library headers in C++20 mode
Updated support for C++20 has resolved syntax errors in Visual Studio 2022 library headers when used with -std=c++20 including <type_traits> and headers specific to C++20 features.

PCLP-4647

Improved instructions for integrating PC-lint Plus with the SEGGER IDE
Updated the XML file used for integrating PC-lint Plus with the SEGGER IDE to correctly categorize messages.

PCLP-4671

Add support for C17, C23, and C++23 language standards
Support has been added for C17, C23, and C++23 language modes.

PCLP-4708

Improved type printing

  • The tag type keyword will only be present when printing types if it is specified in the source code for struct, enum, union, and class in C++ mode.

  • Namespace qualification won’t be added to types unless it is present in the source code.

  • Template class non-type default arguments are not printed unless they are specified to be a non-default value.

  • For an array type declared with typedef, the underlying type will also be printed after the typedef name.

  • Anonymous enums, structs, classes, and unions either printed as their symbol name if they were defined in a typedef, or as anonymous as well as the location of it’s definition to differentiate different anonymous types.

  • The type of nullptr (nullptr_t) will be prefixed with "std::" in C++ mode.

  • Array type qualifiers now come always come before the non-qualified element type, even if they are added implicitly or through typedef.

PCLP-4725

Added detail parameters to message 540
Message 540 (initializer-string for char array is too long) now has an extra parameters to explain the difference in the array size and the initializer size.

PCLP-4746

Improved Strong Types in deduced types and template argument deduction
Previously in the context of deduced (auto) types or template argument deduction, Strong Types (see section ??Strong Types Strong Types) would not be preserved. Now Strong Types will be inferred for deduced types.

PCLP-4750

Improve filenames for file metrics
Filenames for file metrics no longer include current directory dot-slash prefixes and now respect the +ffn flag option.

23.3.5 Bugs Fixed



PCLP-1471 PCLP-4723

Resolved crash when missing enumeration constant is used in constexpr functions
Previously if an enumeration constant that was not defined, perhaps due to a misconfiguration, in the source code was used in a constexpr function, it would sometimes cause a crash. This is no longer the case.

PCLP-1643

Resolved crash when parsing overloaded shift operator with variadic arguments
Previously parsing the definition of an overloaded shift operator with variadic arguments would cause a crash, but now it does not.

PCLP-4270

Internal error D8BD27EC during instantiation of templated lambdas
Instantiation of templated lambdas could previously result in an internal error D8BD27EC. This issue has been corrected.

PCLP-4285

Moved coroutine implementation out of experimental namespace
Previously the C++20 standard header file coroutine declared its contents in the std::experimental namespace. Now it exists in the proper std namespace.

PCLP-4331

Resolved error when using a templated consteval function
Previously trying to evaluate a templated consteval function in a template context would issue an error message. Now these evaluations will no longer issue an error message.

PCLP-4682

Updated messages to support C++20 parenthesized list initialization
Messages 414 (possible division by zero), 453 (impure function marked pure), 564 (result depends on order of evaluation), 1762 (member function could be const), and 9084 (assignment used in a larger expression) now account for parenthesized list initialization that C++20 introduced.

PCLP-4699

Fixed rendering of Unicode characters when dumping queries on Windows
When using +dump_queries(unicode), previously some Unicode characters representing the tree structure of the query would be emitted as ?. Now these characters are correctly emitted as UTF-8 encoded characters and can be viewed in terminals and text editors that support it.

PCLP-4704

Resolved false negative 578 for static local variables
Previously message 578 would not be emitted for static local variables, now a message will be emitted for them.

PCLP-4711

Correct support for Keil armcc compiler
The changes previously introduced in PCLP-4346 incorrectly targeted the Keil uVision armclang compiler instead of the armcc compiler. The compiler database entry for keil_armcc has been corrected.

PCLP-4726

Fixed location information of message 631
Message 631 (tagged symbol defined differently) previously would emit the location of a forward declaration in another module, not the definition. Now it will provide the location of the definition in another module.

PCLP-4727

Resolved false negative 9035 for VLA through typedef
Message 9035 (variable length array declared) will now be emitted for variable length arrays declared using a type defined with a typedef.

PCLP-4728

Resolved false negative 971 when used as enum-base
Message 971 (use of plain char) will now be emitted for enumerations that specify a plain char as their enum-base.

PCLP-4729

Resolved false negative 9141 and 753 for friend class forward declarations
Message 9141 (global declaration of symbol) and message 753 (local type not referenced) will now be emitted type declared using a friend class forward declaration.

PCLP-4730

Resolved false negative 1901 and 1946 for variable templates
Message 1901 (creating a temporary) and message 1946 (use of functional-style cast) will now be emitted in the context of variable templates.

PCLP-4731

Resolved false negative 768 for multiple anonymous structs
Message 768 (global structure member not referenced) would previously only emit for non-referenced members of the first encountered global anonymous struct. Now the message is emitted for all non-referenced members of all global anonymous structs.

PCLP-4732

Resolved false positive 9447 in template classes members with explicit template arguments
Message 9447 (non-standard user defined assignment operator return) would previously be emitted in the context of template class assignment operator which specified a return type of that class explicitly using template arguments. In this case, the message is no longer emitted.

PCLP-4733

Resolved false positive 9447 with typedef return type
Message 9447 (non-standard user defined assignment operator return) would previously be emitted when returning the class type defined with a typedef. In this case, the message is no longer emitted.

PCLP-4734

Resolved false positive 957 with internal linkage parameters
Message 957 (function defined without a prototype) would previously be emitted for functions that have parameter types with internal linkage. In this case, the message is no longer emitted since those parameter types prevent the function from having external linkage.

PCLP-4735

Resolved false positive 912 and 915 for enum with base promotable to int
Message 912 (arithmetic conversions applied to binary operand beyond integer promotion) and message 915 (implicit arithmetic conversion) will no longer be emitted for enumeration types with an enum-base type that would receive an integer promotion to the int type.

PCLP-4736

Resolved false positive 911 for default template argument
Message 911 (implicit promotion) will no longer be emitted for default non-type template arguments in which the type is larger than the type of the expression provided.

PCLP-4737

Correct typename in messages 641 and 911 for enumerations with promotable integer base type
Message 911 (implicit promotion) will now emit the enumeration’s type instead of an underlying enum-base type. Message 641 (implicit conversion of enum to integral type) will now emit the underlying enum-base type after integer promotion in the context of a bitshift, if it is a type promotable to int, instead of just the underlying enum-base type.

PCLP-4738

Change message number 541 to 2005
Previously when a character escape sequence was out of range warning 541 would be emitted, but now error 2005 is emitted. This was changed because the desired value of the character or string literal cannot be determined or inferred in this scenario.

23.3.6 Known Issues



PCLP-939

Message 756 is disabled
Message 756 (global typedef not referenced) is disabled in the current release.

PCLP-960

Message 9103 not issued for inter-module reuse
Message 9103 (identifier with static storage reused) is not issued when a reuse of a static storage identifier occurs in a separate module.

PCLP-2135

False negative 9003 for static variables
A file-scope static variable referenced only within a single function will not be reported by 9003. The message will be issued for variables that are implicitly or explicitly extern.

PCLP-2603

Message 767 is disabled
Message 767 is disabled in the current release.

PCLP-2614

False positive instance of message 522 for call to const member function but has external side-effects
A false positive instance of message 522 may be emitted for a call to a const member function despite the presence of external side-effects.

PCLP-3004

Message 1565 does not report the status of sub-objects within data members of class type
Message 1565 will report when an initializer function has not initialized a non-static data member of the class of which the initializer function is a non-static member function. It will not report based on the status of non-static data members of other objects nested recursively as sub-objects of a non-static data member of class type.

PCLP-3198

False positive 9045 for nested structures
Message 9045 (complete definition of symbol is unnecessary in this translation unit) may be incorrectly issued for structures whose only use appears within another structure.

PCLP-3213

False positive implicit conversion messages when an explicit cast expression is used as a template argument for a non-type template parameter
When providing a cast expression as a template argument to a non-type template parameter some messages described as reporting implicit conversions may be issued as if the cast operand were implicitly converted to the cast type.

PCLP-3223

The undocumented +fil flag is not implemented
The +fil flag, which would control whether or not indentation checking is applied to labels, is not implemented. This unimplemented flag is not documented in the list of flag options, but a reference to it is made in section 13.4.

PCLP-3803

False positive 650 for shifted values
Message 650 (constant out of range for operator) is sometimes incorrectly issued when the result of a shift expression is compared with a constant value.

PCLP-3856

False positive side-effect related messages for a lambda that has side effects

PCLP-4010

False positive 9049 within lambda body
Message 9049 (increment/decrement operator used in expression with other side-effects) is incorrectly issued for increment and decrement expressions appearing as part of a statement without additional side-effects within the body of a lambda expression.

PCLP-4046

False positive 1764 for universal reference parameter of template instantiated with a lambda
Message 1764 (reference parameter of function could be reference to const) may be incorrectly issued when a function template is instantiated with a lambda as the argument corresponding to a universal reference parameter.

23.4 Version 2.1

23.4.1 Highlights

PC-lint Plus 2.1 includes several new featues and numerous improvements including:

23.4.2 Summary

New Features

PCLP-3086

Add compiler configuration support for Green Hills compilers

PCLP-3607

Add compiler configuration support for SEGGER compilers

PCLP-3763

Introductory support for CWE

PCLP-3874

Support for C++20 Modules module and import syntax and new -build_module_interface_unit option to build C++20 module interface units

PCLP-4039

New function metrics for incoming and outgoing function calls

PCLP-4256

Support C++20 using enum

PCLP-4352

New fql flag option to control Query execution in library regions

PCLP-4382

New metric function.num_switch_cases

PCLP-4396

Support MISRA C 2012 AMD-4 Rule 9.6 using messages 2903 and 2904

Improvements

PCLP-1519

Add Boolean function result inferencing for Value Tracking

PCLP-2197

Add anchored expressions to Value Tracking messages to enable -equery suppressions

PCLP-3197

False negative instance of message 9034 involving compound assignment

PCLP-3344

Add pclp_config version to generated compiler configuration header files

PCLP-3351

Improve side effect classification for GNU Statement Expressions

PCLP-3622

Document integration with Visual Studio Code

PCLP-3623

Fix typo in custom message text for BARR-C 5.1a

PCLP-3689

Correct omission of documentation for existing C++98 support in description of -std and fix various trivial documentation typos

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

PCLP-3811

Add no_specific_walk semantic, a new name for the previously undocumented nowalk semantic

PCLP-3840

Add support for asm and __asm keywords for IAR compiler configs

PCLP-3859

Resolve additional spurious pre-run crash messages caused by remote code injection by antivirus software

PCLP-3873

Improve compiler configuration support for Microchip XC8

PCLP-3888

Added missing thread analysis semantic documentation

PCLP-3903

Improved pclp_config support for extracting compiler predefined macros

PCLP-4002

Support __atomic_is_lock_free built-in for sizes up to long long

PCLP-4231

Updated descriptions for messages 9225 and 1502

PCLP-4235

Expanded description of +fnr to clarify that it specifically applies to functions not available to be walked

PCLP-4238

New –shell-parse-compiler-options option for pclp_config.py

PCLP-4245

Add instructions for locating GCC compiler for STM32CubeIDE users

PCLP-4248

Recognize TI –include_path options with unquoted paths

PCLP-4250

Updated descriptions of message 759 and the flo flag option

PCLP-4251

Expanded support for __int128, __int128_t, and __uint128_t

PCLP-4262

Add version number, date, and revision history to "Using PC-lint Plus in Safety Critical Applications" document

PCLP-4266

New faa flag option controls aligned allocations

PCLP-4272

New Query functions for working with types

PCLP-4291

Support accessing contextual values of non-persistent variables within the body of echo expressions in Queries

PCLP-4301

Support for MISRA C 2012 AMD-3

PCLP-4302

Add new message 9202 to support MISRA C 2012 AMD-3 Rule 6.3

PCLP-4303

Add new message 9203 to support MISRA C 2012 AMD-3 Rule 8.16

PCLP-4304

Add new message 9205 to support MISRA C 2012 AMD-3 Rule 8.17

PCLP-4305

Add new message 841 to support MISRA C 2012 AMD-3 Rule 17.10

PCLP-4306

Add new message 9211 to support 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

PCLP-4308

Add new message 9208 to support MISRA C 2012 AMD-3 Rule 23.3

PCLP-4309

Add new message 2416 to support MISRA C 2012 AMD-3 Rule 23.4

PCLP-4310

Add new message 9210 to support MISRA C 2012 AMD-3 Rule 23.8

PCLP-4312

Add new message 2505 to support 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

PCLP-4314

Add new message 2417 to support 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

PCLP-4317

Add new message 9218 to support MISRA C 2012 AMD-3 Rule 21.23

PCLP-4318

Add new message 9214 to support MISRA C 2012 AMD-3 Rule 23.5

PCLP-4319

Add new message 9216 to support MISRA C 2012 AMD-3 Rule 23.6

PCLP-4320

Add new message 9219 to support 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

PCLP-4322

Add complex floating essential type for MISRA C 2012 AMD-3

PCLP-4326

Add support for Visual Studio /FI and /external:I options

PCLP-4330

Correct false positive 779 messages issued for type-dependent expressions

PCLP-4337

Detect character size when generating compiler configurations for TI compilers

PCLP-4340

Exclude ti_edg implementation detail compiler database entry from the list of compilers shown by pclp_config

PCLP-4342

Add support for compiler relative include file search directories.

PCLP-4343

Remove temporary compiler generated files within the configuration utility pclp_config

PCLP-4344

Improved and corrected determining of compiler versions within the pclp_config utility.

PCLP-4349

Improved error messages for pclp_config when a command uses –compiler-database where –compilation-db was intended

PCLP-4353

Updated manufacturer of the Freescale compilers

PCLP-4355

Correct minor issues in generated Visual Studio compiler configuration files

PCLP-4358

Improved Visual Studio configuration file comments

PCLP-4387

Include right shifts for message 9053

PCLP-4389

Message 527 now reports code that is unreachable due to a prior infinite loop

PCLP-4390

Recognize the assignment of a constant value in a Boolean context as itself representing a constant value

PCLP-4392

Support MISRA C 2012 AMD-4

PCLP-4398

Support MISRA C 2012 AMD 4 Rule 18.10

PCLP-4409

Support MISRA C 2012 AMD 4 Rule 12.6

PCLP-4416

Improved pclp_config support for Visual Studio compiler options that start with a dash

PCLP-4425

Revise when thread analysis processing is inhibited

PCLP-4428

New message 1797 improves support for MISRA C++ Rule 14-5-3 and AUTOSAR M14-5-3

PCLP-4429

Add warning message for when an object is used as a mutex and then as a locker.

PCLP-4436

Enable include_next preprocessor keyword in TI compiler configurations generated by pclp_config

PCLP-4453

Examples added to description of the -cond option

PCLP-4459

Note the constraints of -setenv when used in a configuration file

PCLP-4491

Recognize C++23 feature test macros in pclp_config

PCLP-4538

Additional instructions for integrating PC-lint Plus with IAR Embedded Workbench

PCLP-4590

Improved link navigation for Revision History entries

PCLP-4595

Improved instructions for integrating PC-lint Plus with Visual Studio Code

PCLP-4606

Updates to au-misra3.lnt and au-misra3-amd2.lnt as per MISRA C 2012 Amendment 4

PCLP-4660

Improve Keil ARMCC and Microchip XC8 compiler configuration generation

PCLP-4669

Improved support for Microchip XC8 keywords and predefined macros

Bugs Fixed

PCLP-3201

Correct false negative 9102 for digraph sequence "<:"

PCLP-3551

False positive 725 within template instantiations

PCLP-3569

Correct false positive 550 for braced member-init-lists

PCLP-3660

Correct false positive 776 for the summation of two ints cast to a long of the same size

PCLP-4230

False positive message 9006 for dependent sizeof expressions

PCLP-4243

Correct rare memory corruption in thread analysis semantic processing

PCLP-4244

Correct rare memory corruption in file stream semantic processing

PCLP-4246

Resolve crash/internal error 292B4782 for constant division by zero

PCLP-4254

Resolve false positive instances of messages 550, 551, and 552 for rewritten comparison operators in C++20

PCLP-4255

Correct handing of C/C++ options when determining size options in pclp_config

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

PCLP-4265

False negative messages 1524, 1732, and 1733 for new expression appearing in a member init list

PCLP-4269

Memory leak when using -cond and -egrep/+egrep options

PCLP-4273

Correct false positive message 504 for shift assignment operators

PCLP-4275

Resolve internal error 187F3BF3 (-37)

PCLP-4297

False negative 785 for uninitialized members of a structure nested within a union

PCLP-4300

Correct name of the file argument of the thread_report options in built in help and the Reference Manual.

PCLP-4336

Remove unimplemented pclp_config option –ignore-options

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

PCLP-4345

Remove inapplicable C++ configuration from the Microchip XC8 and XC16 compiler database entries

PCLP-4346

Correct handing of C/C++ options when determining size options in pclp_config

PCLP-4350

Correct false positive 9107 for class template static data members

PCLP-4351

Resolve internal errors when evaluating certain Hook fields or Query functions for value-dependent expressions

PCLP-4361

Correct false positive 9102 for digraph sequence "<::"

PCLP-4375

Incorrect deprecation text for AUTOSAR Rule M18-7-1

PCLP-4414

Updated pclp_config to handle fixed precision floating point types in standard header files

PCLP-4446

Internal error when the isCXX11ConstantExpr Query function is evaluated in a C module

PCLP-4463

Incorrect library region determination for certain Hook events

PCLP-4464

User-defined hooks executed twice for label statements

PCLP-4516

Corrected invalid string escape sequences in pclp_config

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

PCLP-4567

Resolved an issue in Value Tracking that manifested as a hang before crashing due to memory exhaustion

PCLP-4577

Inappropriate evaluation of Query echo reflections

PCLP-4597

Resolved false negatives of message 550 and 551 due to supressions

PCLP-4630

Enable usage of _Float16 and __bf16 types

PCLP-4636

Enable usage of _Complex _Float16 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

Known Issues

PCLP-939

Message 756 is disabled

PCLP-960

Message 9103 not issued for inter-module reuse

PCLP-2135

False negative 9003 for static variables

PCLP-2603

Message 767 is disabled

PCLP-2614

False positive instance of message 522 for call to const member function but has external side-effects

PCLP-3004

Message 1565 does not report the status of sub-objects within data members of class type

PCLP-3198

False positive 9045 for nested structures

PCLP-3213

False positive implicit conversion messages when an explicit cast expression is used as a template argument for a non-type template parameter

PCLP-3223

The undocumented +fil flag is not implemented

PCLP-3803

False positive 650 for shifted values

PCLP-3856

False positive side-effect related messages for a lambda that has side effects

PCLP-4010

False positive 9049 within lambda body

PCLP-4046

False positive 1764 for universal reference parameter of template instantiated with a lambda

AUTOSAR Summary

PCLP-4361

Correct false positive 9102 for digraph sequence "<::"

PCLP-4230

False positive message 9006 for dependent sizeof expressions

PCLP-3201

Correct false negative 9102 for digraph sequence "<:"

MISRA Summary

PCLP-4428

New message 1797 improves support for MISRA C++ Rule 14-5-3 and AUTOSAR M14-5-3

PCLP-4409

Support MISRA C 2012 AMD 4 Rule 12.6

PCLP-4398

Support MISRA C 2012 AMD 4 Rule 18.10

PCLP-4396

Support MISRA C 2012 AMD-4 Rule 9.6 using messages 2903 and 2904

PCLP-4392

Support MISRA C 2012 AMD-4

PCLP-4387

Include right shifts for message 9053

PCLP-4350

Correct false positive 9107 for class template static data members

PCLP-4322

Add complex floating essential type for MISRA C 2012 AMD-3

PCLP-4321

Updates to au-misra3.lnt and au-misra3-amd2.lnt as per MISRA C 2012 Amendment 3

PCLP-4320

Add new message 9219 to support MISRA C 2012 AMD-3 Rule 23.7

PCLP-4319

Add new message 9216 to support MISRA C 2012 AMD-3 Rule 23.6

PCLP-4318

Add new message 9214 to support MISRA C 2012 AMD-3 Rule 23.5

PCLP-4317

Add new message 9218 to support MISRA C 2012 AMD-3 Rule 21.23

PCLP-4314

Add new message 2417 to support MISRA C 2012 AMD-3 Rule 17.13

PCLP-4313

Add new messages 2502 and 9503 reporting alignment conflicts to support MISRA C 2012 AMD-3 Rule 8.15

PCLP-4312

Add new message 2505 to support MISRA C 2012 AMD-3 Rule 7.5

PCLP-4310

Add new message 9210 to support MISRA C 2012 AMD-3 Rule 23.8

PCLP-4309

Add new message 2416 to support MISRA C 2012 AMD-3 Rule 23.4

PCLP-4308

Add new message 9208 to support MISRA C 2012 AMD-3 Rule 23.3

PCLP-4307

Add new message 2419 and 9213 to support MISRA C 2012 AMD-3 Rule 23.2

PCLP-4306

Add new message 9211 to support MISRA C 2012 AMD-3 Rule 23.1

PCLP-4305

Add new message 841 to support MISRA C 2012 AMD-3 Rule 17.10

PCLP-4304

Add new message 9205 to support MISRA C 2012 AMD-3 Rule 8.17

PCLP-4303

Add new message 9203 to support MISRA C 2012 AMD-3 Rule 8.16

PCLP-4302

Add new message 9202 to support MISRA C 2012 AMD-3 Rule 6.3

PCLP-4301

Support for MISRA C 2012 AMD-3

PCLP-4230

False positive message 9006 for dependent sizeof expressions

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

PCLP-3201

Correct false negative 9102 for digraph sequence "<:"

PCLP-3197

False negative instance of message 9034 involving compound assignment

PCLP-4606

Updates to au-misra3.lnt and au-misra3-amd2.lnt as per MISRA C 2012 Amendment 4

PCLP-4316

Add new messages 2504 and 9504 to support MISRA C 2012 AMD-3 Rule 21.22

PCLP-4010

False positive 9049 within lambda body

23.4.3 New Features



PCLP-3086

Add compiler configuration support for Green Hills compilers
Compiler configurations for the Green Hill Software compiler drivers can now be generated with the pclp_config installation and configuration utility. All of the compiler drivers are supported via a –compiler option value of either ghs for mixed or C++ specific source files or ghs_c for C specific source files that uses any GHS C headers that have conflicts with the corresponding C++ headers.

PCLP-3607

Add compiler configuration support for SEGGER compilers
Compiler configurations for the SEGGER’s gcc and segger-cc can now be generated using the pclp_config.py utility. Sections ??Creating a compiler configuration for SEGGER compilers and ??Integrating PC-lint Plus with SEGGER IDE were added to provide instructions on the process of generating a compiler configuration and integrating PC-lint Plus with the SEGGER IDE.

PCLP-3763

Introductory support for CWE
The new au-cwe.lnt author file (in the lnt/ directory of the PC-lint Plus distribution) enables support for CWE. In addition, a CWE Coverage Claim Representation (au-cwe.xml) is also available in the lnt/ directory.

PCLP-3874

Support for C++20 Modules module and import syntax and new -build_module_interface_unit option to build C++20 module interface units
The new option -build_module_interface_unit(filename[, module_decl_name]) can now be used to build C++20 module interface units to be imported by import or module declarations in other translation units. The optional second argument must be used to provide the name of the module if the module name differs from the file’s base name. Support for C++20 Modules in PC-lint Plus is currently limited to the subset of C++20 Modules functionality provided by clang 12. In particular, module partitions are not supported.

PCLP-4039

New function metrics for incoming and outgoing function calls
The new function metrics num_incoming_calls, num_calling_functions, and num_called_functions now provide access to the number of incoming calls, the number of distinct functions making at least one incoming call, and the number of distinct functions called by a particular function.

PCLP-4256

Support C++20 using enum
The C++20 using enum feature is now supported.

PCLP-4352

New fql flag option to control Query execution in library regions
The new fql flag option may be used to disable Queries evaluation in library regions.

PCLP-4382

New metric function.num_switch_cases
The new metric function.num_switch_cases represents the total number of case and default cases across all switch statements within a function.

PCLP-4396

Support MISRA C 2012 AMD-4 Rule 9.6 using messages 2903 and 2904
The new message 2903 reports when an initializer list mixes chained designators and positional initializers. The new message 2904 reports when a sub-object is initialized via braced initializer list with at least one positional init and a chained designator somewhere else in the containing init list. Together, these new messages implement MISRA C AMD-4 Rule 9.6.

23.4.4 Improvements



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.

23.4.5 Bugs Fixed



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.

23.4.6 Known Issues



PCLP-939

Message 756 is disabled
Message 756 (global typedef not referenced) is disabled in the current release.

PCLP-960

Message 9103 not issued for inter-module reuse
Message 9103 (identifier with static storage reused) is not issued when a reuse of a static storage identifier occurs in a separate module.

PCLP-2135

False negative 9003 for static variables
A file-scope static variable referenced only within a single function will not be reported by 9003. The message will be issued for variables that are implicitly or explicitly extern.

PCLP-2603

Message 767 is disabled
Message 767 is disabled in the current release.

PCLP-2614

False positive instance of message 522 for call to const member function but has external side-effects
A false positive instance of message 522 may be emitted for a call to a const member function despite the presence of external side-effects.

PCLP-3004

Message 1565 does not report the status of sub-objects within data members of class type
Message 1565 will report when an initializer function has not initialized a non-static data member of the class of which the initializer function is a non-static member function. It will not report based on the status of non-static data members of other objects nested recursively as sub-objects of a non-static data member of class type.

PCLP-3198

False positive 9045 for nested structures
Message 9045 (complete definition of symbol is unnecessary in this translation unit) may be incorrectly issued for structures whose only use appears within another structure.

PCLP-3213

False positive implicit conversion messages when an explicit cast expression is used as a template argument for a non-type template parameter
When providing a cast expression as a template argument to a non-type template parameter some messages described as reporting implicit conversions may be issued as if the cast operand were implicitly converted to the cast type.

PCLP-3223

The undocumented +fil flag is not implemented
The +fil flag, which would control whether or not indentation checking is applied to labels, is not implemented. This unimplemented flag is not documented in the list of flag options, but a reference to it is made in section 13.4.

PCLP-3803

False positive 650 for shifted values
Message 650 (constant out of range for operator) is sometimes incorrectly issued when the result of a shift expression is compared with a constant value.

PCLP-3856

False positive side-effect related messages for a lambda that has side effects

PCLP-4010

False positive 9049 within lambda body
Message 9049 (increment/decrement operator used in expression with other side-effects) is incorrectly issued for increment and decrement expressions appearing as part of a statement without additional side-effects within the body of a lambda expression.

PCLP-4046

False positive 1764 for universal reference parameter of template instantiated with a lambda
Message 1764 (reference parameter of function could be reference to const) may be incorrectly issued when a function template is instantiated with a lambda as the argument corresponding to a universal reference parameter.

23.5 Version 2.0

23.5.1 Highlights

PC-lint Plus 2.0 introduces major new features:

This release of PC-lint Plus also includes:

23.5.2 Summary

New Features

PCLP-386

Introducing Metrics

PCLP-2285

New options to control parsing limits

PCLP-3526

Added support for AUTOSAR Rule A5-1-7

PCLP-3529

Added support for AUTOSAR Rule A3-1-5

PCLP-3531

Added support for AUTOSAR Rule A7-1-9

PCLP-3533

Added support for AUTOSAR Rule A13-5-5

PCLP-3539

Added support for AUTOSAR Rule A5-1-8

PCLP-3548

Added support for AUTOSAR Rule A13-2-1

PCLP-3813

Introducing Queries

PCLP-3987

Introduce support for new C++20 features

Improvements

PCLP-1962

Ignore unevaluated contexts for message 1938

PCLP-1977

Improve performance of processing files containing heavy use of macro expansion including common Boost headers

PCLP-2113

Mark std::uncaught_exception as dangerous

PCLP-2245

Evaluate qualified calls to virtual functions with static dispatch

PCLP-2606

New fit flag to consider functions not declared as noexcept to be impure if they throw an exception

PCLP-2969

Improved support for AUTOSAR Rule A10-3-5

PCLP-2972

Improved support for AUTOSAR Rule A12-4-2

PCLP-2997

Deterministic field and base order for rendering of class/struct/union objects in Value Tracking messages

PCLP-3067

Update options for specifying language versions

PCLP-3095

Do not emit message 9176 for dependent types

PCLP-3291

Update documentation for message 422

PCLP-3357

Improved analysis of constant arrays

PCLP-3511

Support for AUTOSAR 19

PCLP-3516

New builtin function semantics for the log, logf, and logl functions

PCLP-3523

New message 9456 supports AUTOSAR A6-5-3

PCLP-3527

Support for AUTOSAR Rule A2-13-5

PCLP-3528

Support for AUTOSAR19 Rule A2-13-6

PCLP-3532

Message 1511 parameterized with access of hidden function

PCLP-3537

Support AUTOSAR Rule A5-1-3

PCLP-3538

Support for AUTOSAR A5-1-6 provided by new message 3903

PCLP-3541

Improved support for AUTOSAR Rule A13-6-1

PCLP-3594

Improve analysis of pointers initialized in if statements

PCLP-3595

Improve analysis of multiple return points in functions returning structures

PCLP-3619

Improve handling of user-defined conversions in Value Tracking

PCLP-3669

Remove the deprecated +fdu flag option

PCLP-3814

Improve support for exceptions to MISRA C 2012 Rule 10.3

PCLP-3816

Extend scope of message 9034 to include switch case values

PCLP-3872

Improve text of mapped clang error and supplemental messages

PCLP-3880

Update license information for LLVM

PCLP-3901

Update information on accommodating the _bit compiler extension

PCLP-3905

Improved performance of -d/-u options appearing between -env_push/-env_pop options

PCLP-3912

Improve support for MISRA C 2012 Rule 1.1 using message 793

PCLP-3913

Fix typo in appended text for CERT-C Rule POS54-C

PCLP-3919

Add walk_parent_expr hook field as alias for walk_pexpr

PCLP-3920

Remove unused suppression from MISRA C 2012 Rule 10.3

PCLP-3930

Exclude deduction guides from messages reporting function declarations

PCLP-3935

Support for integer types of arbitrary size

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

PCLP-3960

Added support for Visual Studio 2022

PCLP-4003

Exclude Boolean operators from MISRA C 2004 underlying type rules

PCLP-4004

Use int as destination underlying type for the purpose of initialization for MISRA C 2004

PCLP-4007

Exclude initialization of pointers from MISRA C 2004 Rule 10.1

PCLP-4009

Clarify descriptions of messages 3402 and 3702

PCLP-4013

Corrected and improved thread analysis reports

PCLP-4014

Add Undecidable classification for MISRA C 2012 Rule 2.1

PCLP-4021

Update Frequently Asked Questions entry regarding the creation of custom messages

PCLP-4025

Linux builds now require glibc 2.17

PCLP-4026

Support the char8_t keyword in clang and GCC compiler configurations generated with pclp_config

PCLP-4033

Increase default template recursion depth limit

PCLP-4036

Update GCC compiler configuration generation

PCLP-4041

Update documentation with correct version of AUTOSAR targeted by au-autosar.lnt

PCLP-4042

Add missing AUTOSAR Rule M17-0-3 to au-autosar.lnt

PCLP-4043

Removed error messages

PCLP-4048

Improvements to pclp_config

PCLP-4057

Improved support for GCC 11 compiler configurations generated by pclp_config

PCLP-4070

Expand support for AUTOSAR A1-1-1 and change support level to "partially supported"

PCLP-4073

Remove mapping of messages previously used to provide support for AUTOSAR A4-7-1 and mark this rule as not supported

PCLP-4074

Document limitations for support of MISRA C++ 2008 Rule 3-4-1

PCLP-4075

Parameterize -append options for message 829 (+headerwarn option issued) used in au-misra-cpp.lnt

PCLP-4076

Add -append options for message 829 (+headerwarn option issued) used in au-misra3-amd2.lnt

PCLP-4093

Update hardware requirements to reflect uniform requirement for 64-bit CPU

PCLP-4094

Parse JSON compilation databases as JSON instead of YAML within pclp_config

PCLP-4095

Include instructions for generating a JSON compilation database with iarbuild

PCLP-4100

Improvements to the representation of symbols and types in message parameters

PCLP-4208

Support multiple parsing behaviors for JSON compilation databases

Bugs Fixed

PCLP-2391

Resolve false positive instance of message 2434 for dereference of pointer lexically subsequent to but excluded from control flow after an earlier conditional deallocation within a loop

PCLP-2859

Resolve error 4714 for noexcept default constructor with default member initializer

PCLP-2999

False negative instance of message 1536 involving address of private array element

PCLP-3190

Resolve false negative instance of message 9011 when loop exit point count is exceeded only with consideration of a goto statement within a nested loop

PCLP-3242

Resolve false positive 641 involving a conditional operator expression where both the second and third operand are of the same enumeration type

PCLP-3633

Inappropriate suppression of messages 451, 537, and 967

PCLP-3652

Fixed crash for a friend function declaration containing an expression-form noexcept specifier with a default argument

PCLP-3855

Resolve unexpected syntax error for structured binding to const reference with Visual Studio standard library

PCLP-3864

Resolve internal error involving switch statements containing nested control structures where all independent paths are certain to uniformly throw, continue, or exit

PCLP-3907

Resolve false positive 727, 728, or 729 when taking the address of a parenthesized variable name

PCLP-3927

Improve recognition of temporary output file paths when configuring TI compilers

PCLP-3931

Resolve internal error associated with use of deduction guides

PCLP-3936

Correct domain error semantics for the log1p, log1pf, and log1pl functions

PCLP-3959

Message 9046 removed as supporting mechanism for AUTOSAR

PCLP-3974

False position message 2751 when thread root function is prefixed with the address-of operator

PCLP-3984

Properly handle backslashes in the command field of JSON compilation databases

PCLP-4027

Unintentionally extended comments in pclp_config-generated compiler configuration files

PCLP-4029

Resolve template substitution failure for certain non-type template arguments of enumeration type

PCLP-4165

Fix potential crash or hang when analyzing repeated definitions of a single function across multiple modules while using a large number of concurrent threads

PCLP-4188

Resolve false negative 1540 for data members after a const data member

PCLP-4192

Recognize __declspec(uuid)

PCLP-4200

Recognize __declspec(thread)

AUTOSAR Summary

PCLP-3959

Message 9046 removed as supporting mechanism for AUTOSAR

PCLP-3548

Added support for AUTOSAR Rule A13-2-1

PCLP-3541

Improved support for AUTOSAR Rule A13-6-1

PCLP-3539

Added support for AUTOSAR Rule A5-1-8

PCLP-3538

Support for AUTOSAR A5-1-6 provided by new message 3903

PCLP-3537

Support AUTOSAR Rule A5-1-3

PCLP-3533

Added support for AUTOSAR Rule A13-5-5

PCLP-3532

Message 1511 parameterized with access of hidden function

PCLP-3531

Added support for AUTOSAR Rule A7-1-9

PCLP-3529

Added support for AUTOSAR Rule A3-1-5

PCLP-3528

Support for AUTOSAR19 Rule A2-13-6

PCLP-3527

Support for AUTOSAR Rule A2-13-5

PCLP-3526

Added support for AUTOSAR Rule A5-1-7

PCLP-3523

New message 9456 supports AUTOSAR A6-5-3

PCLP-3511

Support for AUTOSAR 19

PCLP-2972

Improved support for AUTOSAR Rule A12-4-2

PCLP-2969

Improved support for AUTOSAR Rule A10-3-5

PCLP-4042

Add missing AUTOSAR Rule M17-0-3 to au-autosar.lnt

PCLP-4041

Update documentation with correct version of AUTOSAR targeted by au-autosar.lnt

PCLP-4074

Document limitations for support of MISRA C++ 2008 Rule 3-4-1

PCLP-4073

Remove mapping of messages previously used to provide support for AUTOSAR A4-7-1 and mark this rule as not supported

PCLP-4070

Expand support for AUTOSAR A1-1-1 and change support level to "partially supported"

CERT C Summary

PCLP-3913

Fix typo in appended text for CERT-C Rule POS54-C

MISRA Summary

PCLP-3920

Remove unused suppression from MISRA C 2012 Rule 10.3

PCLP-3912

Improve support for MISRA C 2012 Rule 1.1 using message 793

PCLP-3816

Extend scope of message 9034 to include switch case values

PCLP-3814

Improve support for exceptions to MISRA C 2012 Rule 10.3

PCLP-3190

Resolve false negative instance of message 9011 when loop exit point count is exceeded only with consideration of a goto statement within a nested loop

PCLP-3095

Do not emit message 9176 for dependent types

PCLP-4014

Add Undecidable classification for MISRA C 2012 Rule 2.1

PCLP-4007

Exclude initialization of pointers from MISRA C 2004 Rule 10.1

PCLP-4004

Use int as destination underlying type for the purpose of initialization for MISRA C 2004

PCLP-4003

Exclude Boolean operators from MISRA C 2004 underlying type rules

PCLP-4076

Add -append options for message 829 (+headerwarn option issued) used in au-misra3-amd2.lnt

PCLP-4075

Parameterize -append options for message 829 (+headerwarn option issued) used in au-misra-cpp.lnt

PCLP-4074

Document limitations for support of MISRA C++ 2008 Rule 3-4-1

23.5.3 New Features



PCLP-386

Introducing Metrics
Metrics can be used to enforce coding guidelines and measure code quality. See the Metrics chapter to learn how Metrics can easily enforce best practices and produce reports.

PCLP-2285

New options to control parsing limits
The new ar_limit, br_limit, cc_limit, and cs_limit options allow overriding of limits associated with operator arrow depth, nested bracket depth, constexpr function call depth, and maximum steps evaluated for constexpr functions.

PCLP-3526

Added support for AUTOSAR Rule A5-1-7
Message 9426 is issued whenever a lambda is the operand to typeid or decltype. Complete support for AUTOSAR Rule A5-1-7 is now provided.

PCLP-3529

Added support for AUTOSAR Rule A3-1-5
Message 9449 is issued whenever a non-template member function is defined within its class definition.

Support for AUTOSAR Rule A3-1-5 is now provided.

PCLP-3531

Added support for AUTOSAR Rule A7-1-9
Message 9428 is issued whenever an enum, union, struct, or class type is defined in the same statement with the declaration of a variable of its type.

Complete support for AUTOSAR Rule A7-1-9 is now provided.

PCLP-3533

Added support for AUTOSAR Rule A13-5-5
These messages apply only to user-declared comparison operator functions (operator==, operator!=, operator<, operator<=, operator>=, and operator>.

Message 9444 is issued whenever the function is a class/struct member.

Message 9445 is issued whenever the function is not noexcept (noexcept(true), throw(), or __declspec(nothrow)).

Message 9446 is issued whenever the parameters to the function have different types.

Support for AUTOSAR Rule A13-5-5 is now provided.

PCLP-3539

Added support for AUTOSAR Rule A5-1-8
Message 9442 is issued whenever a lambda definition is nested inside another lambda definition.

Support for AUTOSAR Rule A5-1-8 is now provided.

PCLP-3548

Added support for AUTOSAR Rule A13-2-1
Messages 9447 is issued whenever the return type of a user defined assignment operator is not a reference to the left hand parameter (’this’ for member functions and the first parameter for non-member functions) with the same const/volatile qualification.

Message 9448 is issued whenever the return value of a user defined assignment operator is not a reference to the left hand parameter (’*this’ for member functions and the first parameter for non-member functions) with the same const/volatile qualification.

Support for AUTOSAR Rule A13-2-1 is now provided.

PCLP-3813

Introducing Queries
The new PC-lint Plus Query Language provides a facility to extend the functionality of PC-lint Plus by defining custom checks and diagnostics and suppressing messages based on dynamic introspection.

PCLP-3987

Introduce support for new C++20 features
PC-lint Plus 2.0 introduces support for many C++20 features including three-way comparison (operator<=>), extended constexpr, and partial support for Concepts and Coroutines.

The C++20 Modules feature is not currently supported.

23.5.4 Improvements



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.

23.5.5 Bugs Fixed



PCLP-2391

Resolve false positive instance of message 2434 for dereference of pointer lexically subsequent to but excluded from control flow after an earlier conditional deallocation within a loop
A false positive instance of message 2434 could have previously occurred when, within a loop, a pointer was dereferenced subsequent to an if statement that conditionally executed a sequence consisting of the deallocation of the memory associated with the target of the pointer and an unconditional modification of control flow rendering the report site and the deallocation mutually exclusive. This issue has been resolved.

PCLP-2859

Resolve error 4714 for noexcept default constructor with default member initializer
A spurious instance of error 4714 (default member initializer needed within enclosing class) for a noexcept default constructor has been resolved.

PCLP-2999

False negative instance of message 1536 involving address of private array element
An issue in which an expected instance of message 1536 may not have been emitted when a member function returned the result of applying the address-of operator to a specific element of a private array data member has been resolved.

PCLP-3190

Resolve false negative instance of message 9011 when loop exit point count is exceeded only with consideration of a goto statement within a nested loop
An issue in which message 9011 may not appear when the presence of multiple exits is dependent on the attribution of a transfer of control within a nested loop to an outer loop has been resolved.

PCLP-3242

Resolve false positive 641 involving a conditional operator expression where both the second and third operand are of the same enumeration type
A conditional operator expression whose second and third operands are of the same enumeration type is now treated as resulting in a value of the common enumeration type. This resolves false positive instances of message 641 that could previously occur when an operation combined a recognized enumeration value and an unrecognized enumeration value from a conditional operator.

PCLP-3633

Inappropriate suppression of messages 451, 537, and 967
An #include directive with a file name that contained a directory separator was previously treated as library for the purposes of messages 451, 537, 967 which could result in a false negative in situations where the header was not a library file and the corresponding message was enabled for non-library files but disabled for library files. Additionally, messages 451 and 537 were previously unintentionally treated as appearing in a library region when the file being included was a library header but the #include directive appeared in a non-library region. These issues have been corrected.

PCLP-3652

Fixed crash for a friend function declaration containing an expression-form noexcept specifier with a default argument
PC-lint Plus would previously crash while parsing a friend function declaration that contained both a default argument and an expression-form noexcept specifier. This was most notably encountered when using the ASIO library which required using either the ++dASIO_NOEXCEPT_IF(x)= or ++dBOOST_ASIO_NOEXCEPT_IF(x)= options as a work-around. The underlying issue has been resolved and the previously-provided work-arounds are no longer necessary.

PCLP-3855

Resolve unexpected syntax error for structured binding to const reference with Visual Studio standard library
An unexpected syntax error that could occur when a structured binding attempted to bind to a const reference when using the Microsoft Visual Studio standard library has been resolved.

PCLP-3864 PCLP-3921

Resolve internal error involving switch statements containing nested control structures where all independent paths are certain to uniformly throw, continue, or exit
An internal error with error code 197D39F9 and diagnostic info -37 that could occur in specific situations involving switch statements containing nested control structures where all independent paths are certain to uniformly throw, continue, or exit has been resolved.

PCLP-3907

Resolve false positive 727, 728, or 729 when taking the address of a parenthesized variable name
False positive instances of messages 727, 728, or 729 that could have previously occurred when the operand to the address-of operator was the name of a variable enclosed in parentheses have been resolved.

PCLP-3927

Improve recognition of temporary output file paths when configuring TI compilers
An issue that could prevent the automated detection of macro definitions and size options from TI compilers when temporary files were produced in certain directories has been resolved.

PCLP-3931

Resolve internal error associated with use of deduction guides
An internal error with the Clang message “Can’t mangle a deduction guide name!” when a constructor call uses a deduction guide has been resolved.

PCLP-3936

Correct domain error semantics for the log1p, log1pf, and log1pl functions
A false positive 2423 (apparent domain error for function) or 2623 (possible domain error for function) message could be emitted when the log1p, log1pf, and log1pl functions were called with an argument having a value of less than one instead of a value of less than negative one. This issue has been corrected.

PCLP-3959

Message 9046 removed as supporting mechanism for AUTOSAR
References to message 9046 (symbol is typographically ambiguous) have been removed from the autosar author files as this message is not currently supported for C++ modules.

PCLP-3974

False position message 2751 when thread root function is prefixed with the address-of operator
If the thread root function passed to the std::thread constructor is prefixed with the address-of operator a false positive message ?? (indeterminable thread root function) was previously emitted. This issue is now resolved.

PCLP-3984

Properly handle backslashes in the command field of JSON compilation databases
When directory separators are represented using backslashes in the command field of a JSON compilation database, the resulting project configuration generated by pclp_config.py would not include the directory separators. This situation could occur when using cmake with a Makefile generator on Windows. This issue has been resolved.

PCLP-4027

Unintentionally extended comments in pclp_config-generated compiler configuration files
When a compiler option specified via one of –compiler-options, –compiler-c-options, or –compiler-cpp-options ended with a backslash, the explanatory C++-style comment that followed the transformed option could also end with a backslash eliciting message 427 (comment continued via back-slash) and causing any options on the following line to be ignored. For example, using:

--compiler-options=-I\

could result in the following line generated in the produced configuration file:

-i"\" // From compiler option(s): -I\

Compiler options are now enclosed in single quotes within the explanatory comment.

PCLP-4029

Resolve template substitution failure for certain non-type template arguments of enumeration type
An error most likely to manifest through message 5819 where template substitution failed due to the forwarding of the value of a non-type template parameter of enumeration type from an outer class template to a template argument list appearing within the instantiation of an inner member function or constructor template has been resolved.

PCLP-4165 PCLP-3630

Fix potential crash or hang when analyzing repeated definitions of a single function across multiple modules while using a large number of concurrent threads
An issue that could cause a crash or hang during global wrap-up or a later pass when analyzing a large project containing multiple definitions of the same function in many different modules while utilizing a large number of concurrent threads has been resolved.

PCLP-4188 PCLP-3956

Resolve false negative 1540 for data members after a const data member
Message 1540 previously exhibited false negatives for data members appearing subsequent to a data member declared const. This issue has been resolved.

PCLP-4192

Recognize __declspec(uuid)
PC-lint Plus 2.0 beta versions incorrectly emitted message ??5957) for all calls to __uuidof because it did not correctly recognize the Microsoft uuid attribute. This regression error has been corrected.

PCLP-4200

Recognize __declspec(thread)
The 2.0 beta versions silently ignored __declspec(thread) instead of treating it as equivalent to thread_local. This regression error has been corrected.

23.5.6 Known Issues

PCLP-939

Message 756 is disabled

PCLP-960

Message 9103 not issued for inter-module reuse

PCLP-2135

False negative 9003 for static variables

PCLP-2603

Message 767 is disabled

PCLP-2614

False positive instance of message 522 for call to const member function but has external side-effects

PCLP-3004

Message 1565 does not report the status of sub-objects within data members of class type

PCLP-3197

False negative instance of message 9034 involving compound assignment

PCLP-3198

False positive 9045 for nested structures

PCLP-3213

False positive implicit conversion messages when an explicit cast expression is used as a template argument for a non-type template parameter

PCLP-3223

The undocumented +fil flag is not implemented

PCLP-3569

False positive 550 for variable initializing const reference member using braced syntax

PCLP-3660

False positive instance of message 776 for addition between int and long of equal size

PCLP-3803

False positive 650 for shifted values

PCLP-3856

False positive side-effect related messages for a lambda that has side effects

PCLP-4010

False positive 9049 within lambda body

PCLP-4046

False positive 1764 for universal reference parameter of template instantiated with a lambda



PCLP-939

Message 756 is disabled
Message 756 (global typedef not referenced) is disabled in the current release.

PCLP-960

Message 9103 not issued for inter-module reuse
Message 9103 (identifier with static storage reused) is not issued when a reuse of a static storage identifier occurs in a separate module.

PCLP-2135

False negative 9003 for static variables
A file-scope static variable referenced only within a single function will not be reported by 9003. The message will be issued for variables that are implicitly or explicitly extern.

PCLP-2603

Message 767 is disabled
Message 767 is disabled in the current release.

PCLP-2614

False positive instance of message 522 for call to const member function but has external side-effects
A false positive instance of message 522 may be emitted for a call to a const member function despite the presence of external side-effects.

PCLP-3004

Message 1565 does not report the status of sub-objects within data members of class type
Message 1565 will report when an initializer function has not initialized a non-static data member of the class of which the initializer function is a non-static member function. It will not report based on the status of non-static data members of other objects nested recursively as sub-objects of a non-static data member of class type.

PCLP-3197

False negative instance of message 9034 involving compound assignment
A compound assignment involving operands of different essential type categories may be reported by message 9029, but compound assignment may not elicit an expected instance of message 9034.

PCLP-3198

False positive 9045 for nested structures
Message 9045 (complete definition of symbol is unnecessary in this translation unit) may be incorrectly issued for structures whose only use appears within another structure.

PCLP-3213

False positive implicit conversion messages when an explicit cast expression is used as a template argument for a non-type template parameter
When providing a cast expression as a template argument to a non-type template parameter some messages described as reporting implicit conversions may be issued as if the cast operand were implicitly converted to the cast type.

PCLP-3223

The undocumented +fil flag is not implemented
The +fil flag, which would control whether or not indentation checking is applied to labels, is not implemented. This unimplemented flag is not documented in the list of flag options, but a reference to it is made in section 13.4.

PCLP-3569

False positive 550 for variable initializing const reference member using braced syntax
Message 550 (local variable not subsequently accessed) may be incorrectly issued when the only use of the referenced variable is to initialize a const-qualified reference member in the member-init-list of a constructor using braced syntax.

PCLP-3660

False positive instance of message 776 for addition between int and long of equal size
The addition of an int and long while using a configuration where sizeof(int) == sizeof(long) may result in a false positive instance of message 776.

PCLP-3803

False positive 650 for shifted values
Message 650 (constant out of range for operator) is sometimes incorrectly issued when the result of a shift expression is compared with a constant value.

PCLP-3856

False positive side-effect related messages for a lambda that has side effects
Side effects resulting from the invocation of a closure type’s function call operator may elicit diagnostics (including 522, 523, and 438) that incorrectly imply the lack of a corresponding side effect.

PCLP-4010

False positive 9049 within lambda body
Message 9049 (increment/decrement operator used in expression with other side-effects) is incorrectly issued for increment and decrement expressions appearing as part of a statement without additional side-effects within the body of a lambda expression.

PCLP-4046

False positive 1764 for universal reference parameter of template instantiated with a lambda
Message 1764 (reference parameter of function could be reference to const) may be incorrectly issued when a function template is instantiated with a lambda as the argument corresponding to a universal reference parameter.

23.5.7 Changes to Beta Functionality Since Version 2.0 Beta 3

PCLP-4190

Resolve false positive messages involving conversions of integer constant expressions

PCLP-4198

Resolve incorrect library classification for file metrics

PCLP-4207

Correct undefined variable regression error within pclp_config



PCLP-4190

Resolve false positive messages involving conversions of integer constant expressions
False positive instances of messages involving the conversion of integer constant expressions such as message 569 in previous betas of version 2.0 have been resolved.

PCLP-4198

Resolve incorrect library classification for file metrics
Library status classification for file metric hosts was introduced in beta 2, but an issue that affected this classification could cause library files to be unexpectedly included in (when -flo is off) or excluded from (when +flo is on) the metric report. This issue has been resolved.

PCLP-4207

Correct undefined variable regression error within pclp_config
The 2.0 beta 3 version of pclp_config would abort if it was unable to determine the version information of the selected compiler. This issue has been corrected.

23.6 Version 1.4.1

23.6.1 Summary

Bugs Fixed

PCLP-3802

??

PCLP-3818

??

PCLP-3822

??

23.7 Version 1.4

23.7.1 Summary

New Features

PCLP-2033

??

PCLP-2440

??

PCLP-2744

??

PCLP-2753

??

PCLP-2757

??

PCLP-2762

??

PCLP-3022

??

PCLP-3550

??

PCLP-3709

??

Improvements

PCLP-805

??

PCLP-1662

??

PCLP-2072

??

PCLP-2299

??

PCLP-2331

??

PCLP-2569

??

PCLP-2589

??

PCLP-2681

??

PCLP-2891

??

PCLP-3013

??

PCLP-3087

??

PCLP-3134

??

PCLP-3141

??

PCLP-3192

??

PCLP-3204

??

PCLP-3219

??

PCLP-3260

??

PCLP-3422

??

PCLP-3491

??

PCLP-3508

??

PCLP-3514

??

PCLP-3546

??

PCLP-3558

??

PCLP-3562

??

PCLP-3566

??

PCLP-3567

??

PCLP-3572

??

PCLP-3596

??

PCLP-3597

??

PCLP-3598

??

PCLP-3601

??

PCLP-3604

??

PCLP-3605

??

PCLP-3616

??

PCLP-3629

??

PCLP-3636

??

PCLP-3639

??

PCLP-3640

??

PCLP-3641

??

PCLP-3642

??

PCLP-3647

??

PCLP-3655

??

PCLP-3663

??

PCLP-3666

??

PCLP-3690

??

PCLP-3691

??

PCLP-3693

??

PCLP-3695

??

PCLP-3698

??

PCLP-3701

??

PCLP-3703

??

PCLP-3705

??

PCLP-3706

??

PCLP-3712

??

PCLP-3717

??

PCLP-3718

??

PCLP-3720

??

PCLP-3723

??

PCLP-3732

??

PCLP-3733

??

PCLP-3738

??

PCLP-3739

??

PCLP-3741

??

PCLP-3745

??

PCLP-3752

??

PCLP-3753

??

PCLP-3754

??

PCLP-3755

??

PCLP-3757

??

PCLP-3758

??

PCLP-3761

??

PCLP-3764

??

PCLP-3775

??

PCLP-3788

??

PCLP-3797

??

Bugs Fixed

PCLP-2086

??

PCLP-2097

??

PCLP-2573

??

PCLP-2814

??

PCLP-2826

??

PCLP-3189

??

PCLP-3196

??

PCLP-3221

??

PCLP-3222

??

PCLP-3305

??

PCLP-3391

??

PCLP-3486

??

PCLP-3504

??

PCLP-3519

??

PCLP-3520

??

PCLP-3593

??

PCLP-3599

??

PCLP-3613

??

PCLP-3679

??

PCLP-3692

??

PCLP-3694

??

PCLP-3696

??

PCLP-3725

??

PCLP-3790

??

PCLP-3798

??

Known Issues

PCLP-2135

??

PCLP-2391

??

PCLP-2603

??

PCLP-2614

??

PCLP-2999

??

PCLP-3004

??

PCLP-3190

??

PCLP-3197

??

PCLP-3213

??

PCLP-3223

??

PCLP-3242

??

PCLP-3652

??

PCLP-3660

??

PCLP-3787

??

AUTOSAR Summary

PCLP-3599

??

PCLP-3546

??

PCLP-3520

??

CERT C Summary

PCLP-2744

??

PCLP-3558

??

PCLP-2762

??

PCLP-2757

??

PCLP-2753

??

MISRA Summary

PCLP-3788

??

PCLP-3757

??

PCLP-3647

??

PCLP-3605

??

PCLP-3192

??

PCLP-3189

??

PCLP-2891

??

PCLP-2589

??

PCLP-3197

??

PCLP-3190

??

23.8 Version 1.3.5

23.8.1 Summary

Improvements

PCLP-964

??

PCLP-1757

??

PCLP-1820

??

PCLP-2298

??

PCLP-2973

??

PCLP-2975

??

PCLP-2996

??

PCLP-3085

??

PCLP-3101

??

PCLP-3117

??

PCLP-3119

??

PCLP-3146

??

PCLP-3170

??

PCLP-3171

??

PCLP-3172

??

PCLP-3184

??

PCLP-3185

??

PCLP-3188

??

PCLP-3193

??

PCLP-3194

??

PCLP-3199

??

PCLP-3202

??

PCLP-3203

??

PCLP-3206

??

PCLP-3207

??

PCLP-3212

??

PCLP-3214

??

PCLP-3218

??

PCLP-3241

??

PCLP-3258

??

PCLP-3269

??

PCLP-3289

??

PCLP-3303

??

PCLP-3311

??

PCLP-3320

??

PCLP-3341

??

PCLP-3359

??

PCLP-3368

??

PCLP-3374

??

PCLP-3381

??

PCLP-3382

??

PCLP-3384

??

PCLP-3386

??

PCLP-3389

??

PCLP-3394

??

PCLP-3396

??

PCLP-3397

??

PCLP-3400

??

PCLP-3406

??

PCLP-3407

??

PCLP-3411

??

PCLP-3423

??

PCLP-3433

??

PCLP-3450

??

PCLP-3467

??

PCLP-3468

??

PCLP-3471

??

PCLP-3480

??

PCLP-3481

??

PCLP-3483

??

PCLP-3495

??

PCLP-3502

??

PCLP-3506

??

PCLP-3509

??

PCLP-3513

??

PCLP-3552

??

PCLP-3555

??

PCLP-3565

??

Bugs Fixed

PCLP-2812

??

PCLP-2885

??

PCLP-3093

??

PCLP-3145

??

PCLP-3176

??

PCLP-3179

??

PCLP-3180

??

PCLP-3181

??

PCLP-3183

??

PCLP-3187

??

PCLP-3215

??

PCLP-3224

??

PCLP-3229

??

PCLP-3234

??

PCLP-3294

??

PCLP-3310

??

PCLP-3324

??

PCLP-3358

??

PCLP-3364

??

PCLP-3376

??

PCLP-3378

??

PCLP-3380

??

PCLP-3388

??

PCLP-3392

??

PCLP-3434

??

PCLP-3442

??

PCLP-3465

??

PCLP-3466

??

PCLP-3469

??

PCLP-3470

??

PCLP-3472

??

PCLP-3507

??

PCLP-3543

??

PCLP-3547

??

PCLP-3561

??

PCLP-3570

??

Known Issues

PCLP-2135

??

PCLP-3196

??

PCLP-3213

??

PCLP-3221

??

PCLP-3223

??

PCLP-3242

??

PCLP-3260

??

PCLP-3519

??

AUTOSAR

PCLP-3483

??

PCLP-3481

??

PCLP-3480

??

PCLP-3206

??

PCLP-3194

??

PCLP-2975

??

PCLP-2973

??

PCLP-2298

??

MISRA C 2012

PCLP-3450

??

PCLP-3269

??

MISRA C 2004

PCLP-3214

??

MISRA C++

PCLP-3359

??

PCLP-3206

??

PCLP-3170

??

PCLP-2298

??

23.9 Version 1.3

23.9.1 Summary

Bugs Fixed

PCLP-1806

??

PCLP-1835

??

PCLP-1972

??

PCLP-2036

??

PCLP-2227

??

PCLP-2459

??

PCLP-2521

??

PCLP-2560

??

PCLP-2598

??

PCLP-2621

??

PCLP-2624

??

PCLP-2626

??

PCLP-2649

??

PCLP-2663

??

PCLP-2668

??

PCLP-2669

??

PCLP-2670

??

PCLP-2703

??

PCLP-2704

??

PCLP-2726

??

PCLP-2742

??

PCLP-2772

??

PCLP-2778

??

PCLP-2786

??

PCLP-2793

??

PCLP-2795

??

PCLP-2806

??

PCLP-2818

??

PCLP-2844

??

PCLP-2869

??

PCLP-2894

??

PCLP-2897

??

PCLP-2900

??

PCLP-2921

??

PCLP-2925

??

PCLP-2959

??

PCLP-2986

??

PCLP-2998

??

PCLP-3016

??

PCLP-3021

??

Documentation Improvements

PCLP-2559

??

PCLP-2561

??

PCLP-2583

??

PCLP-2634

??

PCLP-2641

??

PCLP-2804

??

PCLP-2811

??

PCLP-2822

??

PCLP-2825

??

PCLP-2860

??

PCLP-2864

??

PCLP-2883

??

PCLP-2898

??

PCLP-2899

??

PCLP-2905

??

PCLP-2907

??

PCLP-2911

??

PCLP-2916

??

PCLP-3003

??

PCLP-3010

??

General Improvements

PCLP-744

??

PCLP-1344

??

PCLP-1351

??

PCLP-1944

??

PCLP-1973

??

PCLP-2005

??

PCLP-2107

??

PCLP-2215

??

PCLP-2250

??

PCLP-2270

??

PCLP-2415

??

PCLP-2418

??

PCLP-2461

??

PCLP-2462

??

PCLP-2470

??

PCLP-2485

??

PCLP-2511

??

PCLP-2536

??

PCLP-2568

??

PCLP-2586

??

PCLP-2587

??

PCLP-2597

??

PCLP-2607

??

PCLP-2610

??

PCLP-2622

??

PCLP-2627

??

PCLP-2628

??

PCLP-2631

??

PCLP-2632

??

PCLP-2635

??

PCLP-2638

??

PCLP-2639

??

PCLP-2658

??

PCLP-2659

??

PCLP-2664

??

PCLP-2672

??

PCLP-2697

??

PCLP-2698

??

PCLP-2729

??

PCLP-2773

??

PCLP-2784

??

PCLP-2803

??

PCLP-2805

??

PCLP-2809

??

PCLP-2813

??

PCLP-2821

??

PCLP-2823

??

PCLP-2833

??

PCLP-2835

??

PCLP-2839

??

PCLP-2846

??

PCLP-2848

??

PCLP-2868

??

PCLP-2875

??

PCLP-2886

??

PCLP-2889

??

PCLP-2896

??

PCLP-2906

??

PCLP-2927

??

PCLP-2928

??

PCLP-2937

??

PCLP-2940

??

PCLP-2942

??

PCLP-2960

??

PCLP-2962

??

PCLP-2977

??

PCLP-2984

??

PCLP-2989

??

PCLP-3002

??

PCLP-3014

??

PCLP-3042

??

MISRA C 2012 Improvements

PCLP-2060

??

PCLP-2537

??

PCLP-2777

??

PCLP-2791

??

PCLP-2797

??

PCLP-2807

??

PCLP-2914

??

PCLP-2915

??

PCLP-2918

??

PCLP-2919

??

PCLP-2920

??

PCLP-2926

??

MISRA C++ Improvements

PCLP-2700

??

PCLP-2705

??

PCLP-2741

??

PCLP-2774

??

PCLP-2798

??

PCLP-2832

??

PCLP-2877

??

PCLP-2880

??

PCLP-2881

??

PCLP-2892

??

PCLP-2908

??

PCLP-2939

??

PCLP-2943

??

New Features

PCLP-2022

??

PCLP-2173

??

PCLP-2193

??

PCLP-2247

??

PCLP-2333

??

PCLP-2477

??

PCLP-2483

??

PCLP-2484

??

PCLP-2488

??

PCLP-2503

??

PCLP-2562

??

PCLP-2571

??

PCLP-2577

??

PCLP-2625

??

PCLP-2699

??

PCLP-2713

??

PCLP-2739

??

PCLP-2789

??

PCLP-2830

??

PCLP-2836

??

PCLP-2888

??

PCLP-2910

??

PCLP-2929

??

PCLP-2948

??

PCLP-2949

??

PCLP-2950

??

PCLP-2951

??

PCLP-2952

??

PCLP-2954

??

PCLP-2955

??

PCLP-2956

??

PCLP-2957

??

PCLP-2958

??

PCLP-2963

??

PCLP-2966

??

PCLP-2967

??

PCLP-2968

??

PCLP-2970

??

PCLP-2971

??

PCLP-2974

??

PCLP-2976

??

PCLP-2983

??

PCLP-3015

??

PCLP-3017

??

PCLP-3018

??

PCLP-3019

??

PCLP-3044

??

23.10 Version 1.2

23.10.1 Summary

Bugs Fixed

PCLP-1904

??

PCLP-1957

??

PCLP-1997

??

PCLP-2026

??

PCLP-2099

??

PCLP-2120

??

PCLP-2158

??

PCLP-2183

??

PCLP-2190

??

PCLP-2192

??

PCLP-2196

??

PCLP-2219

??

PCLP-2226

??

PCLP-2229

??

PCLP-2238

??

PCLP-2241

??

PCLP-2246

??

PCLP-2249

??

PCLP-2258

??

PCLP-2261

??

PCLP-2262

??

PCLP-2268

??

PCLP-2271

??

PCLP-2278

??

PCLP-2279

??

PCLP-2289

??

PCLP-2315

??

PCLP-2366

??

PCLP-2400

??

PCLP-2417

??

PCLP-2431

??

PCLP-2445

??

PCLP-2447

??

MISRA C 2012 Improvements

PCLP-1059

??

PCLP-1061

??

PCLP-1066

??

PCLP-2176

??

PCLP-2443

??

PCLP-2455

??

PCLP-2456

??

PCLP-2457

??

MISRA C++ Improvements

PCLP-545

??

PCLP-1953

??

PCLP-2263

??

PCLP-2266

??

PCLP-2454

??

General Improvements

PCLP-41

??

PCLP-1659

??

PCLP-1761

??

PCLP-1875

??

PCLP-1885

??

PCLP-1887

??

PCLP-1895

??

PCLP-1948

??

PCLP-2119

??

PCLP-2133

??

PCLP-2147

??

PCLP-2160

??

PCLP-2180

??

PCLP-2181

??

PCLP-2182

??

PCLP-2189

??

PCLP-2218

??

PCLP-2233

??

PCLP-2237

??

PCLP-2252

??

PCLP-2253

??

PCLP-2254

??

PCLP-2260

??

PCLP-2265

??

PCLP-2273

??

PCLP-2302

??

PCLP-2304

??

PCLP-2307

??

PCLP-2311

??

PCLP-2312

??

PCLP-2328

??

PCLP-2339

??

PCLP-2346

??

PCLP-2388

??

PCLP-2398

??

PCLP-2401

??

PCLP-2412

??

PCLP-2413

??

PCLP-2416

??

PCLP-2420

??

PCLP-2438

??

PCLP-2446

??

PCLP-2469

??

PCLP-2478

??

New Features

PCLP-1052

??

PCLP-1128

??

PCLP-1853

??

PCLP-1994

??

PCLP-2177

??

PCLP-2239

??

PCLP-2267

??

PCLP-2275

??

PCLP-2280

??

PCLP-2283

??

PCLP-2284

??

PCLP-2357

??

PCLP-2387

??

PCLP-2428

??

PCLP-2508

??

Documentation Enhancements

PCLP-2272

??

PCLP-2282

??

PCLP-2301

??

PCLP-2396

??

PCLP-2429

??

PCLP-2430

??

PCLP-2439

??

PCLP-2444

??

23.11 Version 1.1

23.11.1 Summary

Bugs Fixed

PCLP-1454

??

PCLP-1483

??

PCLP-1512

??

PCLP-1711

??

PCLP-1826

??

PCLP-1841

??

PCLP-1894

??

PCLP-1908

??

PCLP-1919

??

PCLP-1909

??

PCLP-1910

??

PCLP-1914

??

PCLP-1920

??

PCLP-1921

??

PCLP-1942

??

PCLP-1943

??

PCLP-1945

??

PCLP-1955

??

PCLP-1960

??

PCLP-1974

??

PCLP-1993

??

PCLP-1995

??

PCLP-2001

??

PCLP-2013

??

PCLP-2014

??

PCLP-2015

??

PCLP-2029

??

PCLP-2068

??

PCLP-2069

??

PCLP-2073

??

PCLP-2077

??

PCLP-2078

??

PCLP-2101

??

PCLP-2102

??

PCLP-2105

??

PCLP-2106

??

PCLP-2108

??

PCLP-2125

??

PCLP-2127

??

PCLP-2128

??

PCLP-2140

??

PCLP-2151

??

PCLP-2153

??

PCLP-2155

??

PCLP-2156

??

PCLP-2157

??

PCLP-2159

??

PCLP-2163

??

PCLP-2169

??

PCLP-2179

??

PCLP-2191

??

PCLP-2203

??

PCLP-2208

??

MISRA C 2004 Improvements

PCLP-1874

??

PCLP-1882

??

PCLP-1929

??

PCLP-2009

??

PCLP-2018

??

PCLP-2037

??

MISRA C 2012 Improvements

PCLP-1037

??

PCLP-1528

??

PCLP-1776

??

PCLP-1778

??

PCLP-1779

??

PCLP-1780

??

PCLP-1781

??

PCLP-1879

??

PCLP-1880

??

PCLP-1881

??

PCLP-1898

??

PCLP-2017

??

PCLP-2030

??

PCLP-2198

??

PCLP-2220

??

MISRA C++ Improvements

PCLP-1952

??

PCLP-1989

??

PCLP-2031

??

PCLP-2117

??

PCLP-2150

??

PCLP-2170

??

General Improvements

PCLP-1768

??

PCLP-1790

??

PCLP-1795

??

PCLP-1799

??

PCLP-1800

??

PCLP-1813

??

PCLP-1899

??

PCLP-1911

??

PCLP-1932

??

PCLP-1934

??

PCLP-1951

??

PCLP-1956

??

PCLP-1965

??

PCLP-1967

??

PCLP-1969

??

PCLP-1970

??

PCLP-1971

??

PCLP-1976

??

PCLP-1980

??

PCLP-1985

??

PCLP-1987

??

PCLP-1992

??

PCLP-2002

??

PCLP-2006

??

PCLP-2024

??

PCLP-2039

??

PCLP-2050

??

PCLP-2074

??

PCLP-2075

??

PCLP-2081

??

PCLP-2088

??

PCLP-2098

??

PCLP-2152

??

PCLP-2161

??

PCLP-2164

??

PCLP-2166

??

PCLP-2178

??

PCLP-2185

??

PCLP-2195

??

PCLP-2200

??

PCLP-2205

??

PCLP-2214

??

New Features

PCLP-1531

??

PCLP-1889

??

PCLP-2051

??

PCLP-2054

??

PCLP-2055

??

PCLP-2057

??

PCLP-2058

??

PCLP-2059

??

PCLP-2083

??

PCLP-2132

??

PCLP-2201

??

Documentation Enhancements

PCLP-1926

??

PCLP-1949

??

PCLP-1966

??

PCLP-2008

??

PCLP-2012

??

PCLP-2016

??

PCLP-2049

??

PCLP-2172

??

PCLP-2210

??