What's new in Klocwork 2023.2
Here are the highlights for Klocwork 2023.2. If you're upgrading, see the Limitations for items that affect how you use Klocwork.
Validate
We've made it easier for you to investigate issues in Validate. You can now view, modify, and navigate the issue search list without leaving the Issue Details page. Use the new File Navigation pane to search individual files and explore issues. These new UI panes are configurable and configurations persist between session when using the same browser.
You can now import and export QAC metrics in Validate. For a list of QAC metrics, see QAC metrics reference. We've improved the Metrics report designer: You can edit threshold and total-metric-value report definitions in Validate. We've also enhanced the report selection page.
We've updated the names of a few of the commands you can use with Validate. To learn more, see Validate command reference.
Visual Studio extension
We've improved the performance of build specification generation for the Visual Studio extension when you use the kwcheck command as your external analysis engine. This means you'll be able to start analysis much sooner.
Streams
We've dramatically reduced the time it takes to display and be able to use the project list for streams.
C/C++
In this release we
-
added support for several MISRA rules and increased coverage for MISRA C 2012 (up to AMD2).
-
increased coverage for DISA STIG high severity rules
-
improved coverage for CERT, OWASP, and CWE, including adding a taxonomy for the 2022 CWE Top 25 Most Dangerous Software Weaknesses
-
enhanced support for C++14 and C++17 analysis
*maximum coverage for MISRA C 2012 requires an additional package from Customer Support.
C#
We improved support for version 8.0 of the C# language specification by
-
adding support for static constructors
-
adding support for nested types and operator declarations in interfaces
-
improving support for verbatim interpolated strings
-
improving support for ranges and indices by supporting the .. and ^ operators
Java
We added
- support for Jakarta EE
- checkers that improve coverage of DISA STIG and CWE
- improved support for Java 14 switch expressions
JavaScript
We added a --project-dir option to the kwjsspec command so that you can specify the JavaScript project root directory. This option helps capture the .eslintignore file (if present at the project root directory) for analysis.
Coding standards
This release includes new and expanded standards coverage for the following coding standards:
- CERT
- CWE
- DISA STIG
- MISRA
- OWASP
Checker improvements
From release to release, we improve issue detection to bring state-of-the-art capabilities to our customers. As a result, expect your analysis results to change as accuracy and coverage improve.
New checkers
Checker | Description |
---|---|
CXX.SV.PRIVATE_KEY.EMPTY_PASSWD | This C/C++ checker detects when an empty password is used to store a private key in a public key infrastructure (PKI) based authentication. |
CXX.SV.PRIVATE_KEY.UNENCRYPTED | This C/C++ checker detects when an unencrypted cipher is used to store a private key in a public key infrastructure (PKI) based authentication, which can lead to unauthorized access. |
CXX.SV.PWD_INPUT.REVIEW | This C/C++ checker detects when password authentication is used in applications. Designers can review the defects to ensure that their company authentication policy is enforced. |
CXX.SV.PWD.PLAIN | This C/C++ checker detects when an application attempts to set a password or PIN by using a string written in plain text. |
CXX.SV.PWD.PLAIN.LENGTH | This C/C++ checker detects when an application attempts to set a plain text password that is fewer than 15 characters. |
CXX.SV.PWD.PLAIN.LENGTH.ZERO | This C/C++ checker detects when an application attempts to set a plain text password that is zero characters long. |
CXX.SIZEOF.CSTRING | This Community C/C++ checker detects the use of sizeof on a char*. |
JAVA.SV.EMAIL.HOST | This Java checker detects cases where mail server hostname verification functions haven't been configured properly to ensure that a server presents the correct certificate. |
JAVA.SV.XML.INVALID | This Java checker detects potential XML injection vulnerabilities by checking that XML data is XDS-validated before being processed. |
MISRA.MEMCMP.NTS.2012_AMD1 |
This MISRA checker provides support for MISRA 2012 AMD1: Rule 21.14 (Required): The Standard Library function memcmp shall not be used to compare null terminated strings. |
MISRA.MEMCMP.NTS.GLOBAL.2012_AMD1 |
This MISRA checker provides support for MISRA 2012 AMD1: Rule 21.14 (Required): The Standard Library function memcmp shall not be used to compare null terminated strings. |
MISRA.STDLIB.ABORT.2012_AMD2 | This MISRA checker provides support for MISRA C 2012 AMD2 Rule 21.8: The library termination functions of <stdlib.h> shall not be used |
MISRA.STDLIB.EOF.BAD_CMP.2012_AMD1 | This MISRA checker provides support for MISRA 2012 AMD1: Rule 22.7 (Required): The macro EOF shall only be compared with the unmodified return value from any Standard Library function capable of returning EOF. |
Modified checkers
Checker | Description |
---|---|
ABV.GENERAL |
New defects detected |
ABV.STACK | Overall improvements to the checker |
ANDROID.RLK.SQLOBJ | Reduced false positives |
CS.HIDDEN.MEMBER.LOCAL.CLASS | Reduced false positives |
CS.HIDDEN.MEMBER.PARAM.CLASS | Reduced false positives |
CS.NRE.FUNC.MIGHT | Reduced false positives |
DBZ.GENERAL | New defects detected |
FUNCRET.GEN |
Reduced false positives |
INVARIANT_CONDITION.UNREACH |
Reduced false positives |
LOCRET.ARG |
Reduced false positives |
LV_UNUSED.GEN | Reduced false positives |
MISRA.ASSIGN.OVERLAP |
New defects detected |
MISRA.CAST.PTR.UNRELATED |
Reduced false positives |
MISRA.INIT.BRACES | Reduced false positives |
MISRA.TYPEDEF.NOT_UNIQUE |
Reduced false positives |
RNPD. DEREF | New defects detected |
UNREACH.GEN |
Reduced false positives |
Enabled or disabled checkers
The following checkers were added to the default enabled
field of the checker configuration files for this release.
- JAVA.SV.EMAIL.HOST
-
JAVA.SV.XML.INVALID
-
PY3.E0001
-
PY3.E0011
-
PY3.E0013
-
PY3.E0014
-
PY3.E0015
-
PY3.F0001
-
PY3.F0002
-
PY3.F0010
-
PY3.F0011
-
PY3.R0022
-
PY3.W0012
Taxonomy improvements
As part of our installation, we offer several custom taxonomy files that map our checkers to standards such as MISRA, CWE, OWASP, and DISA STIG.
Taxonomy | New/updated |
---|---|
cert_c_all.tconf and cert_c_all_ja.tconf cert_c_rules.tconf and cert_c_rules_ja.tconf cert_cpp.tconf and cert_cpp_ja.tconf |
Added or modified checker mappings to the following rules:
|
cwe_2019_top_25_cxx.tconf and cwe_2019_top_25_cxx_ja.tconf cwe_2020_top_25_cxx.tconf and cwe_2020_top_25_cxx_ja.tconf |
Added or modified checker mappings to the following weaknesses:
|
cwe_2021_top_25_cxx.tconf and cwe_2021_top_25_cxx_ja.tconf |
Added or modified checker mappings to the following weaknesses:
|
cwe_2021_top_25_java.tconf and cwe_2021_top_25_java_ja.tconf |
Added or modified checker mappings to the following weaknesses:
|
cwe_2022_top_25_cxx.tconf and cwe_2022_top_25_cxx_ja.tconf | Added new taxonomies that map Klocwork checkers to the 2022 CWE Top 25 Most Dangerous Software Weaknesses. |
cwe_all_cs.tconf and cwe_all_cs_ja.tconf |
Added or modified checker mappings to the following weaknesses:
|
cwe_all_cxx.tconf and cwe_all_cxx_ja.tconf |
Added or modified checker mappings to the following weaknesses:
|
cwe_all_java.tconf and cwe_all_java_ja.tconf |
Added or modified checker mappings to the following weaknesses:
|
disa_stig_v4_cxx.tconf and disa_stig_v4_cxx_ja.tconf disa_stig_v5_cxx.tconf and disa_stig_v5_cxx_ja.tconf |
Added or modified checker mappings to the following rules:
|
disa_stig_v5_java.tconf and disa_stig_v5_java_ja.tconf |
Added or modified checker mappings to the following rules:
|
Helix QAC taxonomies | The Helix QAC taxonomies have been updated to Helix QAC version 2023.2. |
jsf_av_rev_c_cpp.tconf and jsf_av_rev_c_cpp_ja.tconf |
Added or modified checker mappings to the following rules:
|
misra_c_2012_c90_all_checkers.tconf and misra_c_2012_c90_all_checkers_ja.tconf misra_c_2012_c90_certified.tconf and misra_c_2012_c90_certified_ja.tconf misra_c_2012_c99_all_checkers.tconf and misra_c_2012_c99_all_checkers_ja.tconf misra_c_2012_c99_certified.tconf and misra_c_2012_c99_certified_ja.tconf |
Added or modified checker mappings to the following rules:
|
misra_c_2012_with_amd1_c90_all_checkers.tconf and misra_c_2012_with_amd1_c90_all_checkers_ja.tconf misra_c_2012_with_amd1_c90_certified and misra_c_2012_with_amd1_c90_certified_ja.tconf misra_c_2012_with_amd1_c99_all_checkers.tconf and misra_c_2012_with_amd1_c99_all_checkers_ja.tconf misra_c_2012_with_amd1_c99_certified.tconf and misra_c_2012_with_amd1_c99_certified_ja.tconf
|
Added or modified checker mappings to the following rules:
|
misra_c_2012_with_amd2_c11_all_checkers.tconf and misra_c_2012_with_amd2_c11_all_checkers_ja.tconf misra_c_2012_with_amd2_c11_certified.tconf and misra_c_2012_with_amd2_c11_certified_ja.tconf misra_c_2012_with_amd2_c90_all_checkers.tconf and misra_c_2012_with_amd2_c90_all_checkers_ja.tconf misra_c_2012_with_amd2_c90_certified and misra_c_2012_with_amd2_c90_certified_ja.tconf misra_c_2012_with_amd2_c99_all_checkers.tconf and misra_c_2012_with_amd2_c99_all_checkers_ja.tconf misra_c_2012_with_amd2_c99_certified.tconf and misra_c_2012_with_amd2_c99_certified_ja.tconf |
Added or modified checker mappings to the following rules:
|
py.base.tconf and py.base_ja.tconf |
Added or modified checker mappings to the following categories:
|
Improvements to supported compilers
We've added or improved support for the following compilers:
- Clang
For the full list of supported C/C++ compilers, see C/C++ compilers supported for build integration.
Licensing
Klocwork supports Reprise License Manager (RLM).
2022 licenses are not compatible with Klocwork 2023.2. You need a new license to use the latest version of the product. Contact license@perforce.com to obtain a new license.
End of Life notice for FLEXlm/FlexNet Publisher as of Klocwork 2023.1
Klocwork has changed its license management tool by moving from FLEXlm/FlexNet Publisher to Reprise License Manager (RLM) as of Klocwork 2023.1. FLEXlm/FlexNet Publisher is no longer supported.
New product license files will be generated for Reprise; if you require a FLEXlm license file for older Klocwork versions, we can provide this for you.
To learn more about transitioning, see Transition license from FlexLM to Reprise.
Changes to system requirements
In this release, we've added support for
- Debian 11.7
-
Red Hat Enterprise Linux 8.8
- Oracle Linux 8.7
-
Amazon Linux 2 (2.0.20230515.0 Update)
-
Ubuntu 22.04 to 22.04.2 LTS
-
Fedora 38
-
Eclipse 4.27 (2023-03)
-
Android Studio Flamingo 2022.2.1 Patch 2
-
Visual Studio 2017 version 15.9.54
-
Visual Studio 2019 version 16.11.26
-
Visual Studio 2022 version 17.6.1
-
Visual Studio Code 1.78.2
-
IntelliJ IDEA 2022.2.5, 2022.3.3
-
CLion 2022.2.5, 2022.3.3, 2023.1 (up to 2023.1.3)
-
Microsoft Edge 113.x
-
Firefox 113.x
-
Chrome 112.x
-
Jenkins 2.406
In this release, we've ended support for
-
Fedora 36
-
Visual Studio Code 1.65.2 to 1.69.1
-
Microsoft Edge 99.x to 102.x
-
Firefox 98.x to 102.x
-
Chrome 99.x to 102.x
-
Safari 13.x
For the complete list of supported versions, see System Requirements.
Maintenance for Klocwork 2021 ended
Maintenance for all versions of Klocwork 2021 ended March 31, 2023. The end of maintenance (EOM) date and end of sale (EOS) date was also March 31, 2023. For information about the availability of support for any release of Klocwork, see the Klocwork Product Lifecycle.
Path API version upgrade in Klocwork 2023.1
We upgraded the Path API version to accommodate multi-threaded execution within path analysis instances. The upgraded API is not backward compatible with previous versions. All custom checkers using the Path API need to be updated and recompiled by using the 2023 Klocwork Path API headers and library. To learn more, see the Path API documentation.
End of Life notice for macOS as of Klocwork 2023.1
Beginning with Klocwork 2023.1, the following operating systems and installers are not supported:
- macOS