Build Notes (1107) - 23 Jun 2022

Import

  • Import: Fix failure to recognize MSVC style language standard flag in compile_commands.json and build watcher import

Interactive Reports

  • Ireport: Fix sort order inconsistencies for Python IReports
  • Plugin: Fix crash on some Perl IReport plugins

Python API

  • Plugin: Add the script directory to the module search path when loading Python plugin scripts

C++ Strict

  • Add support for analyzing CUDA files (.cu and .cuh) with the C++ (Strict) analyzer

Language - C#

  • Added 'implicit', 'explicit', and 'operator' to the AdditionalKinds freetext for methods. Removed 'operator-' from the name of type cast operators.
  • Added 'partial' to the AdditionalKinds text for partial classes.

CodeCheck Checks

  • C and C++
    • Comments
      • CPP_CM003: Add new: Class headers shall include short description
    • Constructors
      • CPP_C054: Added new: when a deep copy constructor is not implemented, the class header shall describe this fact
    • Declarations and Definitions
      • CPP_DD006: Added new: initializer lists shall be written in order in which they are declared
      • CPP_DD007: Add check "Use private keyword in class definitions"
    • Destructors
      • CPP_D076: Added new: If a class requires a virtual destructor but has nothing to undo from a constructor, an empty implementation should be provided for the destructor as follows
    • Exception Handling
      • CPP_EH000: Added new: Library objects shall not generate error messages directly
    • Functions
      • CPP_F060: Added new: A method that does not change the visible properties of a class shall be declared const
      • CPP_F061: Added new: The type of the return and all method arguments (even type void) shall be specified when defining a method.
      • CPP_F062: Added new: When overloading standardized operators (e.g., a += b, a-=b etc.), the resulting behavior should remain consistent with the expected outcome of the operator.
    • Headers
      • CPP_H017: Add check "No member declarations on the same line"
      • CPP_H017: Add check "Use C++ version of standard headers"
      • CPP_H018: Added new: When including C Standard Library header files, C++ Standard Library header files without a ‘.h’ appended should be used.
    • Identifiers
      • CPP_I025: Added new: The using namespace directive should be used only at the method/function scope.
    • Memory Allocation
      • CPP_M010: Added new: The new[] and delete[] operators shall be used for the allocation and deallocation of memory resources
      • CPP_M011: Added new: The delete[] operator shall be used to deallocate arrays that have been allocated with the new[] operator
      • CPP_M012: Added new: The delete[] operator shall be called in the destructor for all member pointers in an object that are pointing to memory that was dynamically allocated by that object
      • CPP_M013: Added new: user shall provide copy constructor, desctructor, and assignment operator for class using dynamic memory alloc
    • Styling
      • CPP_ST030: Added new: Class design should include the following format
      • CPP_ST031: Add check "No member declarations on the same line"
    • Variables
      • CPP_V029: Added new: The const_cast operator should be used exclusively for altering the constness attribute of a variable.
      • CPP_V030: Added new: The dynamic_cast operator should be used exclusively for casting within an inheritance hierarchy.
      • CPP_V031: Added new: The static_cast operator should be used for routine cast operations not provided by const_cast and dynamic_cast.
      • CPP_V032: Added new: Use of the reinterpret_cast operator should be avoided.
      • CPP_V033: Added new: Typedef'd variables in a class shall be placed in an include file
      • CPP_V034: Added new: STL containers (vector, list, map, etc.) should be used instead of C-style arrays whenever possible.
    • Virtual Functions
      • CPP_VF000: Added new: When implementing virtual functions, every class that contains virtual functions shall provide a virtual destructor.
      • CPP_VF001: Added new: Access levels should not be mixed (public, protected, private) when overriding virtual functions.
    • Warning 
      • Add new: Division of array size of operators