Release notes

v2.17.0 - January 2025

  • CC4M toolstrip in Simulink enhanced, all predefined and custom configurations are available.

  • Added checkExemptionsRationale.

  • Added parameters LocalFunctionPrefix and NestedFunctionPrefix to checkUserDefinedFunctionCasing, such that it is independent of checkFunctionPrefix.

  • Improved checkComplexity such that only violations are reported. To report complexity for all functions, use reportComplexity.

  • Fixed local and nested function detection in MATLAB Function blocks.

  • Fixed reporting of superclasses as dependencies for classes without methods.

  • checkNegatedBoolean no longer depends on parameters from other checks. Negated booleans names are reported regardless of the required casing.

  • Improved checkNameIsShadowing for overloaded methods.

  • Fixed analysis of abstract classes.

v2.16.0 - October 2024

  • Supports MATLAB R2024b.

  • Improved "Go to list" buttons behavior in reports opened in MATLAB web browser.

  • Improved validation when switching between File, Folder and Project in the GUI.

  • Improved detection of superclass method calls in releases prior to R2022a.

  • Bugfix for saving corrupt configuration file.

  • Clearer distinction between checks and reports

  • Removed Include metrics option. Metrics are included when they are enabled in the configuration file.

  • Improved detection of properties that specify dimensions, type and/or validators.

  • Improved dependency report in recursive calls.

  • Add ConstCasing, ConstMaxConsecUpper and ConstMaxConsecLower parameters to checkPropertyCasing. All checks on class property casing are configured and executed from this check. The Check checkNamedConstantCasing no longer checks class properties.

  • Fixed checkTryExceptionHandling when no ExceptionHandlingFunctions are configured.

v2.15.1 - September 2024

  • Bugfix for error in report message when all checks pass.

  • Allow opening and editing configuration files that refer to non-existing checks.

  • Bugfix start for MATLAB install without Simulink.

v2.15.0 - September 2024

  • Update of the reference configurations system, fixing numerous issues.

    • Configuration Editor changes with respect to adding and removing checks and reference configurations.
    • Configuration files do not require to have all checks defined.
    • All checks from reference configurations are included.
    • All checks can be added multiple times to a configuration.
  • Added CC4M toolstrip to Simulink, so CC4M can be used on models.

  • Limitation removed: Exemptions and fixes can be applied to MATLAB code in a Simulink model.

  • Limitation removed: Report now stores configuration and files involved, so Rerun performs exact same analysis.

  • Removed integration with Simulink Check - still available upon request.

  • Renamed reportComparisons to checkComparisons and changed from metric to check.

  • Add RequireSize, RequireClass and RequireValidators parameters to checkArgumentsBlockUsed.

  • Add AllowEmptyLinesAndComments parameter to checkContiguousStructFieldDefinitions.

  • Added new predefined configurations:

    • MISRA Configuration detect potential MISRA violations for code generation.
    • TargetLink Compatibility: TargetLink 2023-B compatibility configuration (Separate license required).
  • Removed the "MonkeyProof MATLAB Coding Standard++" from the predefined configurations.

  • Behaviour change: monkeyproof.cc4m.activateConfigurationFile adapts the selection in the User Interface, but no longer has impact on scripted use of CC4M.

v2.14.2 - August 2024

  • Applying more fixes from the same report no longer interferes.

  • Added new predefined configurations with a specific focus:

    • Layout: Configuration with focus on layout of the code.
    • Naming: Configuration to use as a starting point for applying naming conventions.
    • Testability: Configuration with focus on design, testability and completeness of the code.

v2.14.0 - April 2024

  • Supports MATLAB R2024a.

v2.13.2 - March 2024

  • Added examples to Example section of MATLAB.

v2.13.1 - March 2024

  • Enhanced domain check for license mechanism.

  • Added three demos, accessible from the documentation.

v2.13.0 - November 2023

  • Supports MATLAB R2023b.

  • Added support for checking App Designer files.

  • Added preference to exclude Live Editor files and App Designer files from being checked (default false).

  • Added preference to exclude Simulink files from being checked (default false).

  • Added Compiler Compatibility configuration.

  • Deselected mexw32 as being required in default configuration.

  • Fixed report link to code for MATLAB Function blocks in a Simulink model.

  • Fixed missing default reports folder.

  • Fixed false positives on number of input arguments check.

  • Fixed false positives for use of Java check.

  • Fixed false positivies where file shadowed itself.

  • Fixed callback error when deselecting check in configuration editor.

  • Fixed files with only comments breaking cyclomatic complexity check.

  • Fixed copyright notice detection.

v2.12.2 - August 2023

  • Improved error handling for files that could not be analyzed.

  • Fix for false positive on try-catch without error handling.

v2.12.1 - July 2023

  • Improved change detection for Git repositories.

v2.12.0 - June 2023

v2.11.0 - October 2022

v2.10.0 - April 2022

v2.9.0 - November 2021

  • Added a Fix all button to the report. By clicking this button, all violations for a specific check in all checked files are fixed. Applicable to checks for which fixes are currently available. See section Automatic fixes.

  • Added a new Preference to the Preferences tab, with Smart indent files before checking enabled CC4M smart indents the selected files before checking them. See section Preferences.

  • When large files are selected for checking, you are now prompted to skip or check them. You can set a default response and the threshold for what is considered a 'large' file in the Preferences tab. See section Preferences.

  • Links to violations in Live Editor files no longer refer to incorrect line numbers for MATLAB R2020a and newer.

  • Added a parameter to checkCoderCompatibilityFunctionCalls that lets you choose whether or not to filter for unique violations.

  • Added a parameter to checkBuiltinFunctionCompatibility that lets you choose whether or not to filter for unique violations.

  • Added a parameter to checkMagicNumber that lets you choose whether or not to allow whole decimal numbers.

  • checkFunctionIndented no longer errors when a function is completely indented and it should be.

  • When configured, checkSurrBySpaces now reports equals signs in for-loop definitions if they are not surrounded by spaces.

  • Added a New button to the Configuration tab of the GUI.

  • Improved support for the Simulink Model Advisor. All configurations are available as "CC4M Task" and every individual check can be configured from the Model Advisor, when using them from the "By Product" section, see .

  • Supports MATLAB R2021b.

  • New checks:

v2.8.0 - March 2021

  • Added the Preferences tab with several new preferences. See section Preferences.

    • Use the Report violations when not entirely sure preference to possibly reduce the number of reported violations that are not actually violations of your coding standards. This replaces the IgnoreUnknownTypeVariables parameter of reportBinaryExpressions and the IgnoreUnknownTypeCells parameter of reportCellArrays.
  • The Any option was added to parameter Location of checkCopyrightNotice that allows the copyright notice to be placed at the top, before the main code, or at the bottom.

  • Added a parameter to checkLoopIteratorNaming that lets you choose whether or not to use subsequent alphabetical starting letters for iterator names in nested for-loops.

  • Added a parameter to checkSurrBySpaces that checks whether equals signs in Name=value syntax introduced in MATLAB R2021a are surrounded by spaces or not.

  • Improved detection of data types of variables, most notably for inputs of local and nested functions. This reduces the number of incorrect results, especially for struct-related checks. See Appendix Datatype detection.

  • Added the MAB predefined configuration file. See section Predefined Configurations.

  • Compatible with MATLAB R2021a.

  • checkNestingDepth no longer considers main and sub-functions as nesting depth 1.

  • New checks:

v2.7.0 - February 2021

  • Added Git support for the File and Folder options of the General tab.

  • Added the option to search for check configurations in the Configuration Editor. See section Find checks efficiently.

  • Added a parameter to checkFunctionIndented that lets you ignore violations related to tab characters.

  • Added two parameters to checkOneStatementPerLine that lets you choose whether or not multiple global or persistent variables are allowed to be declared on a single line.

  • Added two parameters to checkLoopIteratorNaming that lets you define a minimum length for iterator variable names, and that lets you choose whether or not to use the casing parameters for variable casing.

  • The lowercasing option was added for all casing checks (see section Casing checks).

  • New checks and reports:

  • Added an auto-fixer for checkMissingComma.

  • checkMagicNumber no longer reports lines of code where a number is compared to the output of nargin, nargout or exist.

v2.6.0 - December 2020

v2.5.1 - November 2020

  • Bug fix for running Code Checker for MATLAB in the Model Advisor.

v2.5.0 - October 2020

v2.4.0 - May 2020

v2.3.0 - August 2019

v2.2.4 - April 2019

v2.1.2 - September 2018