JavaScript is not currently enabled, but is required for full CodeSonar manual search and browse functionality.
If you are viewing this file in your hub's Web GUI, enable JavaScript in your browser: you will also need it for GUI functionality.
If you opened this file directly from disk, your browser may be directly suppressing JavaScript functionality: certain browsers perform this suppression on local files (but not files delivered by web servers) for security reasons.
| CodeSonar® 9.0p0 Hot Tips | CONFIDENTIAL | CodeSecure Inc |
Official release date: November 17, 2017.
Note: Version 4.5p0 was an internal version and was not made available for general release.
When you upgrade your hub, you will be prompted to set the password for the special Administrator hub user account when the hub restarts. This will replace the previous Administrator password. You can reuse your previous Administrator password if it meets the hub password requirements specified in the Settings: Password Policy tab.
| IPv6 Support | CodeSonar now supports IPv6. | ||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| GUI | There is one new page type: Python Console. A number of existing page types have been modified to add functionality. | ||||||||||||||||||||
| Deleting Logs | Analysis logs can now be deleted on a per-analysis basis from the Analysis page. You may wish to do this if you are trying to reduce the size of the hub database and do not anticipate any future need for any information in the logs from this analysis. If an analysis is still running when you remove its logs, any further log information that is submitted to the hub by that analysis will be ignored. | ||||||||||||||||||||
| Floating Point Handling | Improved handling for floating point arithmetic, including two new warning classes. | ||||||||||||||||||||
| Distributed Analysis | Control over aspects of the distributed analysis is now finer-grained: behavior in analysis mode and daemon mode are controlled separately. | ||||||||||||||||||||
| Compiler Models | There are three new compiler models, and new functionality for implementing custom compiler models in Python. | ||||||||||||||||||||
| Warning Classes | There are several new warning classes. In addition, category mappings for DISA and CWE have been updated to new versions. (DISA v4r3, CWE v2.11), and mappings have been added for new category TS17961, corresponding to identifiers from ISO/IEC TS 17961 "C Secure Coding Rules Technical Specification". | ||||||||||||||||||||
| C/C++ Parser Upgrade | CodeSonar now uses EDG version 4.12. | ||||||||||||||||||||
| Presets |
Presets that enable
sets of warning classes associated with one or more warning
class categories no
longer enable warning classes whose purpose is diagnostic (that
is, those whose mnemonics begin with DIAG.*) even if they
otherwise meet the criteria for inclusion. The affected presets
are listed below: those marked with an asterisk (*) enabled the
Unexercised {Call, Computation, Conditional, Control Flow, Data
Flow} classes (DIAG.UNEX.*)
in previous versions of CodeSonar but no longer do so.
bsi, cert*, certc*, certcpp*, certjava, disa*, disa_latest, disa_4r3, disa_3r10, misra*, misra_inc*, misra2004*, misra2004_inc*, misra2012*, misra2012_inc*, misrac++2008*, misrac++2008_inc*, pow10 New presets insider, insider_more, insider_only, java_style, disa_latest, disa_4r3, disa_3r10, ts17961, |
||||||||||||||||||||
| Hub settings | Max Processes: default was previously 10 on Windows systems and 40 otherwise. It's now 40 on all systems. | ||||||||||||||||||||
| Configuration parameters | There are several new configuration parameters, and several configuration parameters have been deleted. The factory setting for parameter REFINEMENT_BARRIER_PERIOD is now 10000 (previously 1000). | ||||||||||||||||||||
| Search |
Several changes:
|
||||||||||||||||||||
| API | The Python and C++ versions of the CodeSonar API are now out of beta and have full documentation. The sets of available functions and types have changed for all API implementations. | ||||||||||||||||||||
| Compatibility Improvements | CodeSonar is now compatible with 64-bit Windows 10 1607 or later with UEFI firmware with SecureBoot enabled. | ||||||||||||||||||||
| No Longer Supported |
The following are no longer supported as of this release.
|
||||||||||||||||||||
| Windows Requirements |
In order for CodeSonar to install correctly on Windows systems,
the requirements are as follows.
|
||||||||||||||||||||
| Now supported |
The following are newly supported as of this release.
|
||||||||||||||||||||
| Known Issues | CodeSonar is not currently compatible with Cygwin gcc v4.6 or later. Building/analyzing a CodeSonar project based on a compilation with one of these versions will result in one or more parse errors citing identifier __float128. This may be fixed in an upcoming release: please contact CodeSecure if the incompatibility causes problems for you. | ||||||||||||||||||||
| CodeSonar for Binaries |
|
||||||||||||||||||||
| IDA Pro Note | This version of CodeSonar works with IDA Pro versions 6.0-6.9. It does not work with versions later than 6.9. |
CodeSonar now supports IPv6. If you are running CodeSonar on a system that supports IPv6 addressing, the following changes apply.
Examples in this manual have been updated to include IPv6 addresses.
There is one new page type, and a number of existing page types have been modified.
There is one new page type: Python Console. In consequence:
There are several GUI changes for additional functionality.
| Affected GUI pages/functionality | Changes |
|---|---|
| Analysis Search
Results File Search Results Home, Project Tree Analysis: Files Procedure Search Results Analysis: Procedures Project Project Search Results |
Tables of files, procedures, and analyses now offer columns for all available metrics of suitable granularity on the hub independent of whether or not they were computed for any of the table contents. A metric class is 'available' if is it present in at least one analysis that has taken place on the hub (subject to ANALYSIS_READ permission). |
| Chart wizard | Now considers a metric class 'available' if is it present in at least one analysis that has taken place on the hub (subject to ANALYSIS_READ permission). |
| Global
Role-Permissions Resource Role-Permissions Roles Role Users Role Ancestors User Roles Users |
Two additional options - Root Project Tree Permissions and Root Launch Daemon Group Permissions - added to their menus of links. |
| Settings, Admin Settings | Other Links tab now now includes a link to the hub processes log. |
| Analysis Comparison (from Analysis page) |
Results now show warnings in the symmetric difference over
all selected analyses (previously in the union over all
selected). For example: (aid:A1 UNION aid:A2 UNION ... UNION aid:An) DIFFERENCE (aid:A1 INTERSECT aid:A2 INTERSECT ... INTERSECT aid:An) |
| Alerts | New analysis alert type Analysis Stuck (No Slaves) |
| Analysis |
New remove logs option. |
| Hub notifications (displayed above footer in GUI pages) |
New notification types: |
There are significant improvements in CodeSonar's handling of floating point arithmetic and a number of new library models for floating point operations. In consequence:
Control over aspects of a distributed analysis is now finer-grained: the analysis process is controlled by separate sets of configuration parameters in analysis mode vs daemon mode; similarly analysis-mode slaves are controlled by a different set of configuration parameters to daemon-mode slaves.
The analysis may be remote-requesting in analysis mode, daemon mode, both, or neither.
Relevant configuration parameter changes are as follows.
| Old parameter (now deleted) | New Parameters | |
|---|---|---|
| Analysis Mode | Daemon Mode | |
| REQUEST_REMOTE_SLAVES | REQUEST_REMOTE_ANALYSIS_SLAVES | REQUEST_REMOTE_DAEMON_SLAVES |
| MASTER_LISTEN_INTERFACE | ANALYSIS_MASTER_LISTEN_INTERFACE | DAEMON_MASTER_LISTEN_INTERFACE |
| REMOTE_SLAVES_LAUNCHDS | REMOTE_ANALYSIS_SLAVES_LAUNCHDS | REMOTE_DAEMON_SLAVES_LAUNCHDS |
| MASTER_USE_TLS | ANALYSIS_MASTER_USE_TLS | DAEMON_MASTER_USE_TLS |
| SLAVE_TIMEOUT | ANALYSIS_SLAVE_TIMEOUT | DAEMON_SLAVE_TIMEOUT |
| MASTER_KEEPALIVE_PERIOD | ANALYSIS_MASTER_KEEPALIVE_PERIOD | DAEMON_MASTER_KEEPALIVE_PERIOD |
There are several changes to CodeSonar compiler models.
There are a number of changes to CodeSonar warning classes.
Many of these have a focus on security holes that can be introduced - maliciously or mistakenly - by an insider. These 'insider threat checks' can be enabled with the new insider and insider_more presets.
Others arise out of improved handling for floating point arithmetic and modeling for floating point library functions.
| Name | Mnemonic | Notes |
|---|---|---|
| Possible Anti-Debugging | BADFUNC.ANTIDEBUG | insider |
| Weak Cryptography | BADFUNC.WEAKCRYPTO | insider |
| Float Division by Zero | LANG.ARITH.FDIVZERO | floating point |
| Inline Assembly Code | LANG.ASM | insider |
| Library Function Override | LANG.ID.NU.LIBFN | insider |
| sqrt on Negative Value | MATH.SQRT.NEG | floating point |
| chroot without chdir | MISC.CHROOT.NOCHDIR | insider |
| Potential Timebomb | MISC.TIMEBOMB | insider |
| Untrusted Network Host | IO.UT.HOST | insider |
| Untrusted Library Load | IO.UT.LIB | insider |
| Untrusted Network Port | IO.UT.PORT | insider |
| Untrusted Process Creation | IO.UT.PROC | insider |
CodeSonar now contains mappings for ISO/IEC TS 17961 "C Secure Coding Rules Technical Specification".
Previously, all Java warning classes associated with a particular third party Java tool were enabled once that tool was enabled (JAVA_ENABLE_FINDBUGS=Yes, JAVA_ENABLE_PMD=Yes, JAVA_ENABLE_THREADSAFE=Yes).
From this version of CodeSonar, Java warning classes with "Style" significance are disabled by default. They can be enabled by applying the java_style preset to the CodeSonar build/analysis, or selectively enabled with WARNING_FILTER allow rules. As always, classes that are enabled by default can be disabled with WARNING_FILTER discard rules
See Java Warning Classes for full lists of default-enabled and default-disabled warning classes for each tool.
"Finding ID" identifiers do not persist across versions of the Defense Information Systems Agency (DISA) Application Security and Development Security Technical Implementation Guide (STIG), so we have adjusted the DISA STIG category types to specify version and release.
There is a now a separate category type for each DISA STIG version/release for which CodeSonar has mappings (previously there was only one category type: DISA) . DISA STIG categories have the form DISA-ver:id, where id is a Finding ID from the STIG and ver indicates the STIG version. As of this release there are two possible values for ver, giving two category types:
| Category Type | DISA STIG version/release |
|---|---|
| DISA-4r3 | Version 4, release 3 (STIG release date April 28, 2017) |
| DISA-3r10 | Version 3, release 10 (STIG release date January 23, 2015) |
There are new, modified, and deleted configuration parameters.
| New Parameter | Purpose |
|---|---|
| ANALYSIS_MASTER_KEEPALIVE_PERIOD | Specifies how often the master will broadcast keepalive requests to all slaves. |
| ANALYSIS_MASTER_LISTEN_INTERFACE | Specifies the address on which the analysis master process will listen while it is in analysis mode (to analyze the project). |
| ANALYSIS_MASTER_USE_TLS | Specifies whether daemon master↔slave sockets should use TLS. |
| ANALYSIS_SLAVE_TIMEOUT | The number of seconds a slave will wait for network operations with the master to time out. |
| DAEMON_MASTER_KEEPALIVE_PERIOD | Specifies how often the master will broadcast keepalive requests to all slaves. |
| DAEMON_MASTER_LISTEN_INTERFACE | Specifies the address on which the daemon master process will listen. |
| DAEMON_MASTER_USE_TLS | Specifies whether daemon master↔slave sockets should use TLS. |
| DAEMON_SLAVE_TIMEOUT | The number of seconds a slave will wait for network operations with the master to time out. |
| HOOK_BLACKLIST | [non-Windows systems only] Advises CodeSonar to not monitor certain executables or their subprocesses. |
| MAX_CHROOT_CHDIR_DIST | Specifies the number of lines of code after a call to chroot() within which a subsequent call to chdir() must occur to avoid issuing a chroot without chdir warning. |
| MIN_B64_SCORE | Specifies a threshold beyond which constant strings are identified as Base64-encoded for warning classes Untrusted Network_Host, Untrusted Library Load, and Untrusted Process Creation. |
| MIN_ENC_SCORE | Specifies a threshold beyond which constant strings are identified as encrypted for warning classes Untrusted Network_Host, Untrusted Library Load, and Untrusted Process Creation. |
| NETWORK_HOST_BLACKLIST | Specifies process names that will trigger Untrusted Network_Host warnings. |
| NETWORK_HOST_WHITELIST | Specifies process names that will not trigger Untrusted Network Host warnings. |
| NETWORK_PORT_BLACKLIST | Specifies process names that will trigger Untrusted Network_Port warnings. |
| NETWORK_PORT_WHITELIST | Specifies process names that will not trigger Untrusted Network Port warnings. |
| POINTED_TO_CAPACITY_DEFAULTS_TO_TYPE_BOUNDARY | When the address of a portion of an aggregate is taken, and CodeSonar is not intraprocedurally aware of the size of the underlying allocation, should the "2$Buffer Overrun" warning class checker treat the pointer's capacity as the capacity of the portion (as opposed to the capacity of the underlying allocation)? |
| RELAXED_TOPDOWN_FUNCPTR_RESOLUTION | Specifies whether or not CodeSonar can immediately exploit knowledge of function pointer resolvents that might not be known when using other possible parallel analysis schedules. |
| REMOTE_ANALYSIS_SLAVES_LAUNCHDS | Specifies the launch daemon or daemons from which analysis slaves may be requested. |
| REMOTE_DAEMON_SLAVES_LAUNCHDS | Specifies the launch daemon or daemons from which analysis slaves may be requested while the analysis is running in daemon mode. |
| REQUEST_REMOTE_ANALYSIS_SLAVES | Specifies whether or not automatically-started analysis slaves can be distributed through the hub's analysis cloud. |
| REQUEST_REMOTE_DAEMON_SLAVES | Specifies whether or not automatically-started analysis slaves can be distributed through the hub's analysis cloud while the analysis is running in daemon mode. |
| TIMEBOMB_IGNORE_ZERO | Specifies whether or not the Potential Timebomb check should ignore comparisons against zero. |
| UNTRUSTED_LIB_BLACKLIST | Specifies process names that will trigger Untrusted Library Load warnings. |
| UNTRUSTED_LIB_WHITELIST | Specifies process names that will not trigger Untrusted Library Load warnings. |
| UNTRUSTED_PROC_BLACKLIST | Specifies process names that will trigger Untrusted Process Creation warnings. |
| UNTRUSTED_PROC_WHITELIST | Specifies process names that will not trigger Untrusted Process Creation warnings. |
| WEB_CONSOLE | Specifies whether the Python Console and Scheme Console will be made available for the analysis (provided the hub is running with debug features enabled). |
| Modified Parameter | Change |
|---|---|
| REFINEMENT_BARRIER_PERIOD | Factory setting is now 10000 (previously 1000). |
| Deleted Parameter | Notes |
|---|---|
| MASTER_KEEPALIVE_PERIOD | Replaced by ANALYSIS_MASTER_KEEPALIVE_PERIOD and DAEMON_MASTER_KEEPALIVE_PERIOD. |
| MASTER_LISTEN_INTERFACE | Replaced by ANALYSIS_MASTER_LISTEN_INTERFACE and DAEMON_MASTER_LISTEN_INTERFACE. |
| MASTER_USE_TLS | Replaced by ANALYSIS_MASTER_USE_TLS and DAEMON_MASTER_USE_TLS. |
| PRETEND_FLOAT_IS_INT | CodeSonar no longer ignores floating point numbers, so this parameter is no longer necessary. |
| REMOTE_SLAVES_LAUNCHDS | Replaced by REMOTE_ANALYSIS_SLAVES_LAUNCHDS and REMOTE_DAEMON_SLAVES_LAUNCHDS. |
| REQUEST_REMOTE_SLAVES | Replaced by REQUEST_REMOTE_ANALYSIS_SLAVES and REQUEST_REMOTE_DAEMON_SLAVES. |
| SCHEME_WEB_CONSOLE | Replaced by WEB_CONSOLE . |
| SLAVE_TIMEOUT | Replaced by ANALYSIS_SLAVE_TIMEOUT and DAEMON_SLAVE_TIMEOUT. |
| VISUALIZATION | Visualization is now always enabled. |
There are substantial changes to the CodeSonar API.
The C++ and Python implementations of the CodeSonar API are now out of beta.
There are several new API functions and types.
There are many modified API functions and types.
| C++ | Python | C | Scheme | Change |
|---|---|---|---|---|
Functions |
||||
| ast_field::ast_field() | ast_field() | (type updates) | ast-set-field! | Additionally overloaded to allow creating an AST field whose value is a source file instance |
| ast::operator[] | ast.get(), ast_field.__getitem__() | cs_ast_get_field() | ast-field | Set of possible return types extended to include source file instance values. |
| - | ast.to_dict(), ast_pattern.match() | - | - | Set of possible key-value pair types in returned dict extended to include source file instance values. |
| ast_field::operator[] | ast_field.get(), ast_field.__getitem__() | - | - | Set of possible return types extended to include source file instance values. |
| - | ast_field.value() | - | - | Set of possible return types extended to include source file instance values. |
| int_pair_set::to_point_set() | int_pair_set.to_point_set() | cs_int_pair_set_to_pdg_vertex_set | int-pair-set-to-pdg-vertex-set | Signature and semantics: now take a source file instance argument instead of a compilation unit argument. |
| point::charpos() | point.charpos() | cs_pdg_vertex_charpos() | pdg-vertex-charpos |
Signature and semantics: now describes character positions as a
set of character positions in a specified source file instance.
|
| sfileinst::line_offset() | sfileinst.line_offset() | cs_file_get_line_offset() | file-get-line-offset |
Signature and semantics: now provides offset within a source
file instance (previously was within a compilation unit).
|
| sfileinst::line_range() | sfileinst.line_range() | cs_file_get_line_range() | file-get-line-range |
Signature and semantics: now describes a line range as a pair
of source file instance offsets (previously was a pair of
compilation unit offsets).
|
| (new) | (new) | cs_file_get_line_num() | file-get-line-num | Semantics and signature: now takes a source file instance argument instead of a compilation unit argument. |
| (new) | (new) | cs_file_get_linecol() | file-get-linecol | Semantics and signature: now takes a source file instance argument instead of a compilation unit argument. |
| (replaced) | (replaced) | cs_file_asts_at() | file-asts-at |
Semantics and signature: now takes
|
| (replaced) | (replaced) | ( replaced) | pdg-vertex-set-to-int-pair-set | Semantics and signature: now takes a source file instance argument instead of a compilation unit argument. |
Types |
||||
| ast_field_type static members | ast_field_type attributes | cs_ast_field_type, cs_ast_field_variant | AST_FIELD | Extended to account for AST fields that contain source file instances. |
| ast_class static members | ast_class attributes | enum symbol sets for AST classes | AST_CLASS | Many changes to set of AST classes, see ASTs below. |
| ast_ordinal static members | ast_ordinal attributes | enum symbol sets for AST ordinals | AST_ORDINAL | Many changes to set of AST ordinals, see ASTs below. |
Cross-referencing "kind", "role", and "kind-role" types have been expanded to allow finer discrimination.
| Description | New | Modified | Deleted |
|---|---|---|---|
| Kind "variable" split into set of more specific kinds. | Kinds local
static variable, local
variable, global
variable, parameter,
file
static variable. Kind-roles for these new kinds: see Kind-Usage Pairs |
- | Kind "variable" and its associated kind-roles. |
| Kind function split into set of more specific kinds. | Kinds static
function, static
method, method. Kind-roles for these new kinds: see Kind-Usage Pairs |
Kind function now only used for non-static functions. | - |
| Kind type split into set of more specific kinds. | Kind tag. Kind-roles for tag kind: see Kind-Usage Pairs Role "tag"; kind-role (type, tag). |
Kind type no longer includes enum, struct, or union type tags. | - |
| Other | New kind-role (template type, constructor initialization). | - | - |
Notes:
| API Implementation | Representation | Kind | Role | Kind-Role |
|---|---|---|---|---|
| C++ | static member of class... | xr_kind | xr_role | xr_kind_role |
| Python | attribute of class... | xr_kind | xr_role | xr_kind_role |
| C | enum symbol in... | __cs_xr_kind | __cs_xr_role | __cs_xr_kind_role |
| Scheme | symbol in set returned by... | xref-kinds | xref-roles | xref-kind-roles |
There are several new C API headers, as shown in the following table.
| New C Headers | Contents |
|---|---|
| cs_edge_label.h (including cs_edge_label_inl.h) |
cs_edge_label operations previously in cs_utility.h, cs_utility_inl.h. |
| cs_hash.h | New seeded hash functions cs_uint64_hash_seed(), cs_uint64_hash64_seed() |
| cs_language.h | cs_language operations previously in cs_source_files.h |
| cs_pdg_vertex_syntax.h | cs_pdg_vertex_syntax_kind and cs_pdg_vertex_syntax_element operations previously in cs_pdg_vertex.h. |
| cs_string64.h | cs_string and cs_string64 operations previously in
cs_utility.h. New hash functions cs_string_hash_seed() and cs_string_hash64() |
| cs_string64_type.h | cs_string64 and related type declarations previously in cs_types.h. |
| cs_sysutil.h | System utility operations and macros previously in cs_utility.h. |
| cs_types_common.h |
A number of definitions (typedef, #define) that were previously elsewhere.
|
| cs_val64.h | CS_VAL64_* macros. |
| cs_xref_common.h | Some operations on cs_xr_kind, cs_xr_kind_role, cs_xr_role previously in cs_xref.h. |
Several C API headers have been split with some of their previous content going to new headers
| Header in CodeSonar 4.4 | Changes for CodeSonar 4.5 |
|---|---|
| cs_source_files.h | cs_language operations moved to language.h, cs_language typedef moved to cs_types_common.h. |
| cs_pdg_vertex.h | cs_vertex_syntax_kind and cs_vertex_syntax_element typedefs moved to cs_types_common.h. |
| cs_types.h | cs_string64 and related typedefs moved to cs_string64_type.h. |
| cs_utility.h (including cs_utility_inl.h) |
cs_string and cs_string64 operations moved to cs_string64.h, cs_edge_label functionality moved to
cs_edge_label.h, system utility operations and macros moved to cs_sysutil.h. |
| cs_xref.h | Type declarations moved to cs_types_common.h, some operations moved to cs_xref_common.h |
The following API elements have been deleted. These deletions fall into two categories.
| Element | C++ | Python | C | Scheme |
|---|---|---|---|---|
| Deleted Functions using Compilation Unit Offset/Line (replacement source file instance function noted in parentheses) | ||||
| compunit::asts_at (use sfileinst::asts_at()) |
compunit.asts_at (use sfileinst.asts_at()) |
(argument change) | (argument change) | |
| compunit::read (use sfileinst::read()) |
compunit.read() (use sfileinst.read()) |
cs_file_get_characters_in_uid() (use cs_file_get_characters()) |
file-get-characters-in-uid (use file-get-characters) |
|
| - | - | csonar_add_sfi_finish_visitor() (use csonar_add_sfi_visitor()) |
codesonar:add-sfi-finish-visitor (use codesonar:add-sfi-visitor) |
|
| point::compunit_line (use point::file_line()) |
point.compunit_line |
cs_pdg_vertex_uid_line() (use cs_pdg_vertex_file_line()) |
pdg-vertex-uid-line (use pdg-vertex-file-line) |
|
| point_set::to_int_pair_set_in_compunit (use point_set::to_int_pair_set_in_sfileinst()) |
point_set.to_int_pair_set_in_compunit (use point_set.to_int_pair_set_in_sfileinst()) |
cs_pdg_vertex_set_to_int_pair_set_in_uid cs_pdg_vertex_set_to_int_pair_set_in_source_file (use cs_pdg_vertex_set_to_int_pair_set_in_sfid) |
(argument change) | |
| procedure::compunit_line() (use procedure::file_line()) |
procedure.compunit_line() (use procedure.file_line()) |
cs_pdg_uid_line() (use cs_pdg_file_line()) |
pdg-uid-line (use pdg-file-line) |
|
| symbol::compunit_line (use symbol::file_line()) |
symbol.compunit_line (use symbol.file_line()) |
cs_abs_loc_uid_line() (use cs_abs_loc_file_line()) |
abs-loc-uid-line (use abs-loc-file-line) |
|
| Deleted Conversion Functions for Compilation Unit Offset/Line (removed as redundant) | ||||
| compunit::line_to_sfile_line |
compunit.line_to_sfile_line |
cs_uid_unitline_to_sf_line() |
uid-unitline->sf-line | |
| compunit::line_to_sfileinst_line | compunit.line_to_sfileinst_line | cs_uid_unitline_to_sfid_line() | uid-unitline->sfid-line |
|
| compunit::offset_range_to_sfileinst_range | compunit.offset_range_to_sfileinst_range | cs_file_get_range | file-get-range |
|
| compunit::offset_to_line() | compunit.offset_to_line() | cs_uid_off_to_uid_line() | file-uid-off->uid-line |
|
| compunit::offset_to_sfileinst_line() | compunit.offset_to_sfileinst_line() | (argument change) | (argument change) | |
| compunit::offset_to_sfileinst_line_column() | compunit.offset_to_sfileinst_line_column() |
(argument change) | (argument change) | |
| sfileinst::line_to_compunit_line() | sfileinst.line_to_compunit_line() | cs_file_sfid_line_to_uid_line() | file-sfid-line->uid-line |
|
| sfileinst::line_to_compunit_offset() | sfileinst.line_to_compunit_offset() | cs_file_sfid_line_to_uid_off() | file-sfid-line->uid-off |
|
| Deleted Types for Compilation Unit Offset/Line | ||||
| compunit_line compunit_line_pair |
(used raw int) | cs_unitline cs_offset |
ULINE | |
| Deleted Types for Crossreferencing (see Crossreferencing Type Changes for full details and replacements) | ||||
| static members xr_kind::VAR, xr_kind_role::VAR_* | static members xr_kind.VAR, xr_kind_role.VAR_* | enum symbols csxrk_var, csxrkr_var_* | equivalent symbols in the Scheme space | |
There are many changes related to C/C++ ASTs.
There is one new unnormalized C/C++ AST class and one new normalized C/C++ AST class.
| Modified Unnormalized C/C++ AST Classes | ||
|---|---|---|
| cc:asm-entry | csao_uc_position attribute replaced by csao_uc_sfid and csao_uc_line attributes. | |
| cc:asm-operand | csao_uc_position attribute replaced by csao_uc_sfid and csao_uc_line attributes. | |
| cc:base-class | csao_uc_position attribute replaced by csao_uc_sfid and csao_uc_line attributes. | |
| cc:class-struct-union | csao_uc_position attribute replaced by csao_uc_sfid and csao_uc_line attributes. | |
| cc:constant | csao_uc_position attribute replaced by csao_uc_sfid and csao_uc_line attributes. | |
| cc:constructor-init | csao_uc_position attribute replaced by csao_uc_sfid and csao_uc_line attributes. | |
| cc:enum | csao_uc_position attribute replaced by csao_uc_sfid and csao_uc_line attributes. | |
| cc:exception-specification | csao_uc_position attribute replaced by csao_uc_sfid and csao_uc_line attributes. | |
| cc:expr | csao_uc_position attribute replaced by csao_uc_sfid and csao_uc_line attributes. | |
| cc:field | csao_uc_position attribute replaced by csao_uc_sfid and csao_uc_line attributes. | |
| cc:handler | csao_uc_position attribute replaced by csao_uc_sfid and csao_uc_line attributes. | |
| cc:label | csao_uc_gnu_unused attribute
replaced by csao_uc_maybe_unused
attribute. csao_uc_position attribute replaced by csao_uc_sfid and csao_uc_line attributes. |
|
| cc:lambda-capture | csao_uc_position attribute replaced by csao_uc_sfid and csao_uc_line attributes. | |
| cc:macro | csao_uc_position attribute replaced by csao_uc_sfid and csao_uc_line attributes. | |
| cc:namespace | csao_uc_position attribute replaced by csao_uc_sfid and csao_uc_line attributes. | |
| cc:param-type | csao_uc_position attribute replaced by csao_uc_sfid and csao_uc_line attributes. | |
| cc:pragma | csao_uc_position attribute replaced by csao_uc_sfid and csao_uc_line attributes. | |
| cc:routine | csao_uc_operator_name_kind
attribute type changed to opname_kind_cpp (previously opname_kind_builtin). csao_uc_gnu_unused attribute replaced by csao_uc_maybe_unused attribute. csao_uc_position attribute replaced by csao_uc_sfid and csao_uc_line attributes. |
|
| cc:statement | csao_uc_position attribute replaced by csao_uc_sfid and csao_uc_line attributes. | |
| cc:switch-case-entry | csao_uc_position attribute replaced by csao_uc_sfid and csao_uc_line attributes. | |
| cc:template | csao_uc_position attribute replaced by csao_uc_sfid and csao_uc_line attributes. | |
| cc:template-parameter | csao_uc_position attribute replaced by csao_uc_sfid and csao_uc_line attributes. | |
| cc:typeref | csao_uc_position attribute replaced by csao_uc_sfid and csao_uc_line attributes. | |
| cc:using-decl | csao_uc_position attribute replaced by csao_uc_sfid and csao_uc_line attributes. | |
| cc:vla-dimension | csao_uc_position attribute replaced by csao_uc_sfid and csao_uc_line attributes. | |
| cc:variable | csao_uc_specifier_position
attribute replaced by csao_uc_specifier_line attribute. csao_uc_gnu_unused attribute replaced by csao_uc_maybe_unused attribute. csao_uc_position attribute replaced by csao_uc_sfid and csao_uc_line attributes. |
|
| Modified Normalized C/C++ AST Classes | ||
| c:array | New attribute csao_nc_is_c11_atomic. | |
| c:builtin-type | New attribute csao_nc_is_c11_atomic. | |
| c:class | New attribute csao_nc_is_c11_atomic. | |
| c:complex | New attribute csao_nc_is_c11_atomic. | |
| c:csm-type-qualifiers | New attribute csao_nc_is_c11_atomic. | |
| c:fixed-point | New attribute csao_nc_is_c11_atomic. | |
| c:float | New attribute csao_nc_is_c11_atomic. | |
| c:imaginary | New attribute csao_nc_is_c11_atomic. | |
| c:integer | New attribute csao_nc_is_c11_atomic. | |
| c:noexcept-expr | C name now csac_nc_noexceptexpr, C++/Python name now NC_NOEXCEPTEXPR. | |
| c:pointer | New attributes csao_nc_is_nullable, csao_nc_is_nonnull, csao_nc_is_null_unspecified, csao_nc_is_c11_atomic. | |
| c:ptr-to-member | New attributes csao_nc_class_type and csao_nc_pointed_to. | |
| c:routine | csao_nc_operator_name_kind attribute now has type opname_kind_cpp. | |
| c:routine-type | New attributes csao_nc_return_type_defaulted, csao_nc_prototyped. | |
| c:struct | New attribute csao_nc_is_c11_atomic. | |
| c:union | New attribute csao_nc_is_c11_atomic. | |
| c:vector-type | New attribute csao_nc_is_c11_atomic. | |
| c:void | New attribute csao_nc_is_c11_atomic. | |
| New Ordinals | Deleted Ordinals | |
|---|---|---|
| For normalized C/C++ ASTs |
|
|
| For unnormalized C/C++ ASTs | n/a |
|
| New Helper Enumerations | - | |
|---|---|---|
| Deleted Helper Enumerations | opname_kind_builtin | (symbols csae_c_bfk_*) |
| Modified Helper Enumerations | type_qualifier |
New symbols:
|
| attribute_kind |
New symbols:
|
|
| opname_kind_cpp | New symbol csae_c_onk_await |
| NUMBER | NAME | NOTES |
|---|---|---|
| 4981 | False Positive: Treatment of large constant addresses yields False-Positive Null Pointer Dereference warnings | fixed |
| 6745 | [EDGcpfe/12504] Parse Error: incomplete type not allowed with FieldT (qualifiers on constructor) | fixed |
| 8034 | Parse error: inline namespace | fixed |
| 8947 | Unreachable path with call to function that never returns | fixed |
| 12003 | Symmetric difference via analysis comparison UI | Analysis comparison now shows warnings in the symmetric difference over all selected analyses (previously in the union over all selected). |
| 14904 | False Negative: Buffer Overrun not detected after procedure call | fixed |
| 15255 | Show alert if frontendrun has status crashed | "Parse Error" alerts are now also issued if the CodeSonar front end has crashed. |
| 16242 | False Negative: Can't resolve leak with loop in path | fixed |
| 16751 | --display_error_number flag erroneously consumes other arguments | fixed |
| 16317 | Update Green Hills model to handle cases with no source file specified on command line | fixed |
| 16610 | RBAC Bug: Strange behavior when Anyone is given Sign-In | fixed |
| 16297 | Custom metric plugin not displaying correctly on metrics page | fixed |
| 16440 | MISRA: Unused Macro warning is by translation unit, and not by program | fixed |
| 16300 | Data race search very slow on linux-2.6.37 | fixed |
| 16632 | [EDGcpfe/17640] case sensitivity in find_assembly_by_path | fixed |
| 16673 | [EDGcpfe/17720] Front End crash: assertion failed | fixed |
| 16767 | Exception: AttributeError with search sequence | fixed |
| 16830 | QNX -lang-c++/-lang-c flag results in parse errors | fixed |
| 16872 | Catastrophic Error: CodeSonar front end fails when hand written assembly files used in GHC | fixed |
| 16878 | Exception: Launchd authentication failure leaks password on exception | fixed |
| 16902 | Bug when sorting results with Indigo | fixed |
| 16913 | One of the cert-cpp-mapping.csv links is mispointed | fixed |
| 16949 | Include Analysis page URL in analysis log |
The Analysis Log now
includes lines
codesonar: Analysis initialized. codesonar: Live progress and results are visible at: codesonar: apage_urlwhere apage_url is the URL of the corresponding Analysis page. |
| 16998 | [EDGcpfe/17933] vacuous destructor calls under C++/CLI | fixed |
| 16999 | False Negative: lost Missing Return Value in Win32CoupledProjects.build | fixed |
| 17001 | Change to endian flags for armcl 5.2.6 | TI CodeComposer Compiler Models updated |
| 17002 | [EDGcpfe/17935] MS compat: 0xE+.. | fixed |
| 17019 | False Positive: Conversion to Function Pointer Rule 11.1 | fixed |
| 17029 | wrong scope for destructor call | fixed |
| 17044 | Report Generation: Nonsense numbers in reports | fixed |
| 17040 | [EDGcpfe/17960] EDG only supports __has_include() macro for clang | fixed |
| 17082 | Null FSIFLIST_T dereference (under fe_file_info_stable_compare) | fixed |
| 17096 | Compiler model for arm-none-eabi-gcc | Default settings now map the arm-none-eabi-gcc and arm-none-eabi-g++ compilers to the gcc compiler model (previously they were mapped to the armcc model). |
| 17103 | Internal error: assertion failed: pop_object_lifetime_full | fixed |
| 17139 | Include note that Eclipse plugin can only do anonymous analysis submission | Information added to additional documentation locations. |
| 17152 | MISRA C++ False Positive: "Multiple External Definitions" (MISRA C++:2008 Rule 6.3.2) | fixed |
| 17172 | [EDGcpfe/18045] expression must have a constant value, make_tuple c++11 | fixed |
| 17203 | Feature Request: Make the Hub IPv6 friendly | See IPv6 Support, above. |
| 17371 | Hookcs code signing on Win 10 | fixed |
| 17373 | Exception: Report generation replaces the session with a chart style | fixed |
| 17566 | False Positive: Uninitialized Variable | fixed |
| 17595 | Very slow query | fixed |
| 17906 | Library Models: CodeSonar not recognizing delete and delete[] | fixed |
| 17925 | pnode_tags_retrieve( &ctx->tags, lop.pn, &sub_tag ) exited with CS_ELEMENT_NOT_PRESENT | fixed |
| 17930 | Document the --pending_instantiations flag for EDG frontend | See --pending_instantiations |
| 18087 | Order of configuration file processing needs adjustment in the documentation | Additional configuration files specified with -conf-file are loaded at the same time as configuration presets specified with -preset, with order determined by their order in the command line. (Documentation previously stated that additional configuration files were loaded last). See Configuration Files: Configuration File Loading for details. |