PC-lint Plus for PC-lint/FlexeLint users
What is PC-lint Plus?
PC-lint Plus is a rewrite of PC-lint from the ground up. It combines the clang framework with our 35+ years of static analysis experience to provide a product that supports the latest C and C++ standards while advancing leading edge analysis technology. While PC-lint Plus is a new offering, it is largely backward compatible with PC-lint /FlexeLint. In particular, most of the same options and messages are supported by PC-lint Plus, indirect files work the same way, and flagship features such as Value Tracking, User-defined Function Semantics, and Strong Types are all available and many features have been significantly enhanced.
What’s New in PC-lint Plus?
PC-lint Plus includes many new messages, features, and enhancements. The highlights include:
Modern C++ Support
PC-lint Plus supports the C++11, C++14, C++17, and C++20 Standards by leveraging clang to perform the lexing and parsing for C and C++ source code. Clang updates are regularly merged into PC-lint Plus ensuring prompt support for the newest language features. As a result, PC-lint Plus supports the latest compilers, including current versions of GCC and clang as well as Visual Studio 2015/2017/2019/2022.
Certification for ISO 26262 and IEC 61508
PC-lint Plus has been certified by exida® for ISO 26262:2018 (ASIL D qualified) and IEC 61508:2010 (SIL 4 qualified). Certification documents are available from exida.
Improved Value Tracking
Value tracking now stores ranges of values instead of just individual values which allows PC-lint Plus to gain further insight into your code when the exact values are unknown but they may be bounded by conditional logic. Structure members and floating point values are also now tracked. Data and function pointers can participate in value tracking which allows PC-lint Plus to provide more effective analysis and a better understanding of aliased values and functions.
Code Metrics
PC-lint Plus includes a comprehensive code metrics solution supporting reports, arbitrarily complex metric thresholds, and natural language diagnostics. Over 100 built-in metrics including Cyclomatic complexity, Halstead metrics, NPATH and HIS metrics are provided along with the ability to easily define new custom metrics at the project, translation unit, file, function, or class level.
Queries
The Queries feature supports creation of completely new first-class checks and messages using a convenient syntax. Inspect and navigate AST nodes to implement complex criteria and suppress messages based on AST characteristics of reported symbols or types.
Parallel Analysis
PC-lint Plus supports parallel analysis of projects by using separate threads to analyze each source code module, speeding up the analysis process by making full use of the available hardware.
Streamlined Configuration
A new configuration tool automates the configuration process by extracting information from your compiler and your build process to generate comprehensive and accurate configurations that match the way you build your projects.
Improved MISRA C 2012 Support
PC-lint Plus further extends existing MISRA C 2012 support with new messages, improved message verbiage that more clearly explains the violation being diagnosed, support for AMD-1, and the ability to tweak the behavior of certain MISRA rules to match common use cases and alternate rule interpretations. PC-lint Plus also supports essential type breakdowns that show exactly how the different parts of an expression contributed to the ultimate essential type of the expression to aid in the understanding of messages related to essential types.
AUTOSAR and CERT C Support
PC-lint Plus supports compliance checking of the AUTOSAR17 and AUTOSAR19 C++ coding guidelines as well as the CERT C coding guidelines.
Enhanced Diagnostics
Diagnostic facilities have been greatly improved in PC-lint Plus by providing the precise locations of issues encountered, highlighting the key constructs referenced in the message, and the introduction of supplemental messages to provide further insight into the conditions that led to the issuance of the diagnostic.
Messages can now be organized into user-defined named groups for easier manipulation, parameterized suppressions can be localized to a specific code region, messages can be suppressed using regular expressions, and -efile
can now be used to suppress messages within specified files.
Improved Function Semantics
PC-lint Plus provides built-in function semantics for over 200 standard library functions.
Custom return semantics defined with the -sem
option are now verified when the body of the function is available. For example, a semantic that specifies that a function never returns null will result in a diagnostic if the function actually does return null during a specific walk.
User-defined function semantics can now be specified for individual function overloads and for function templates.
Other features
In addition to the new features and enhancements described above, PC-lint Plus contains dozens of minor improvements including a built-in help system, the -deprecate
option now supports deprecating types and options, improved printf
and scanf
format string checking with positional parameter support, the ability to save and restore entire option contexts, improved message verbiage, and hundreds of new diagnostics (including many dedicated to the use of new C++ language features).
FAQ
What operating systems are supported by PC-lint Plus?
PC-lint Plus runs on Windows 7/8/10/11, Linux, and macOS. PC-lint Plus can analyze C/C++ source code that targets virtually any platform.
How is PC-lint Plus licensed? How much does it cost?
Pricing for PC-lint Plus is based on a Team license. To use PC-lint Plus, all Developers on your Team must be licensed. See our license agreement for the definition of Developer. To get pricing, please email sales@pclintplus.com with your company information and the number of Developers on your Team.
How long will PC-lint/FlexeLint Version 9 be supported?
PC-lint/FlexeLint Version 9 are no longer being maintained. The final update was Version 9.00L, released in 2014. Technical support for these products ended in 2019.