Release notes
v2.20.0 - October 2025
-
Supports MATLAB R2025b.
-
Added ApplyTo option to checkClassCasing.
-
Fixed
updateConfigurationFileforgets referenced configuration files. -
Added OperatorsNotSurrounded option to checkSurrBySpaces
-
Deprecated
getConfigurationFolder,setConfigurationFolder,getActiveConfigurationFile,activateConfigurationFile,getReportsFolder,setReportsFolder. -
Changed behavior
getConfigurationFiles,createConfigurationFile,updateConfigurationFile. -
Removed
monkeyproof.cc4m.getPreferenceandmonkeyproof.cc4m.setPreference.
v2.19.0 - August 2025
-
Supports MATLAB R2025a.
- Note: due to a bug in MATLAB R2025a, MATLAB cannot close when any app figure is open (also when it is hidden). As a workaround, the CC4M toolbox comes with a
finishscript to force any figures related to CC4M to close. However, when you have another script or functionfinishhigher on the search path it is not executed. If you experience issues closing MATLAB, please runclose force allbefore exiting.
- Note: due to a bug in MATLAB R2025a, MATLAB cannot close when any app figure is open (also when it is hidden). As a workaround, the CC4M toolbox comes with a
-
Added checkTrailingNewline to verify whether or not the last line in the file is terminated with a newline.
-
Added CheckUnaryOperators option to checkSurrBySpaces.
-
Added a cancel button to the waitbar to stop running checks.
v2.18.2 - June 2025
- Fix JSON summary error when no violations are found.
v2.18.1 - June 2025
- Fix license dialog showing without license.
v2.18.0 - May 2025
-
Update forum links to refer to the CC4M subreddit r/cc4m.
-
Documented how to add custom checks (documentation available upon request).
Fixes
-
checkConstantDefinitionAtTopnow also detectsargumentsblocks for output variables. -
checkFunctionCallExcessInputsnow also recognizes named arguments inherited from class properties. -
Unlicensed MATLAB Toolbox installations no longer issue warnings at CC4M startup.
v2.17.0 - January 2025
-
CC4M toolstrip in Simulink enhanced, all predefined and custom configurations are available.
-
Added
checkExemptionsRationale. -
Added parameters
LocalFunctionPrefixandNestedFunctionPrefixtocheckUserDefinedFunctionCasing, such that it is independent ofcheckFunctionPrefix. -
Improved
checkComplexitysuch that only violations are reported. To report complexity for all functions, usereportComplexity. -
Fixed local and nested function detection in MATLAB Function blocks.
-
Fixed reporting of superclasses as dependencies for classes without methods.
-
checkNegatedBooleanno longer depends on parameters from other checks. Negated booleans names are reported regardless of the required casing. -
Improved
checkNameIsShadowingfor 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
- Added
checkComplexity; correspondingreportComplexitydoes not produce violations. - Added
checkDependencies; correspondingreportDependenciesdoes not produce violations. - Added
checkMexFiles; correspondingreportMexFilesdoes not produce violations.
- Added
-
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 CheckcheckNamedConstantCasingno longer checks class properties. -
Fixed
checkTryExceptionHandlingwhen noExceptionHandlingFunctionsare 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
startfor 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
reportComparisonstocheckComparisonsand 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.activateConfigurationFileadapts 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
-
Rename from Code Checker for MATLAB towards CC4M.
-
Supports MATLAB R2023a.
-
New checks:
v2.11.0 - October 2022
-
Updated the GUI layout.
-
Added the option to reference configuration files, see section Reference configurations.
-
Added predefined configuration MonkeyProof MATLAB Coding Standard that reflects release 1.2.0 of the MonkeyProof MATLAB Coding Standard.
-
The displayed name of the MonkeyProofSolutions predefined configuration is now MonkeyProof MATLAB Coding Standard++.
-
Added a parameter to that lets you choose whether or not to allow
varargin/varargout. -
Improved the usability of the results of reportVariables.
-
Supports MATLAB R2022b.
-
New checks:
- checkAbstractClassInstantiation
- checkCodeInterpretable
- checkCommandSyntax (including an auto-fixer)
- checkFunctionCallExcessInputs
- checkJavaUsed
- checkMethodAccessPermissions
- checkSecurityWebOptions
- checkSecurityXml
- checkSuperclassPropertyImplementation
- checkUseIteratorVariableNameOutsideLoop
- checkZeroBeforeDecimalPoint (including an auto-fixer)
v2.10.0 - April 2022
-
Added the option to generate a JSON summary.
-
In the HTML report at most one violation of the same type per line of code will be shown for the following checks:
-
Added severity levels to the check configurations. Existing configuration files without severity levels configured take over the default values. If the user wants to change the severity level of a check, this can be done in the Configuration Editor.
-
Supports MATLAB R2022a.
-
New checks:
- checkMethodsInClassdef
- checkPropertiesBeforeMethods
- checkTabCharacterUsed (including an auto-fixer)
- checkTestSuffix
-
Added an auto-fixer for checkCopyrightNotice.
-
Added an auto-fixer for checkMissingSemicolon.
-
Added an auto-fixer for checkOperatorsLineContinuation.
-
Added a parameter to
checkOperatorsLineContinuationthat lets you choose whether or not to check equals signs used in assignments as well. -
Bugfix
checkNoInputArg: Scripts called from functions are now correctly considered scripts and can no longer violate this check.
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
checkCoderCompatibilityFunctionCallsthat lets you choose whether or not to filter for unique violations. -
Added a parameter to
checkBuiltinFunctionCompatibilitythat lets you choose whether or not to filter for unique violations. -
Added a parameter to
checkMagicNumberthat lets you choose whether or not to allow whole decimal numbers. -
checkFunctionIndentedno longer errors when a function is completely indented and it should be. -
When configured,
checkSurrBySpacesnow reports equals signs infor-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:
- checkArgumentsBlockUsed
- checkAvoidNames
- checkNameValuePairCasing (see Casing checks)
- checkWhiteSpaceEndOfLine (including an auto-fixer)
- checkAvoidNames
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
IgnoreUnknownTypeVariablesparameter ofreportBinaryExpressionsand theIgnoreUnknownTypeCellsparameter ofreportCellArrays.
- 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
-
The
Anyoption was added to parameterLocationofcheckCopyrightNoticethat allows the copyright notice to be placed at the top, before the main code, or at the bottom. -
Added a parameter to
checkLoopIteratorNamingthat lets you choose whether or not to use subsequent alphabetical starting letters for iterator names in nested for-loops. -
Added a parameter to
checkSurrBySpacesthat checks whether equals signs inName=valuesyntax 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.
-
checkNestingDepthno 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
checkFunctionIndentedthat lets you ignore violations related to tab characters. -
Added two parameters to
checkOneStatementPerLinethat lets you choose whether or not multiple global or persistent variables are allowed to be declared on a single line. -
Added two parameters to
checkLoopIteratorNamingthat 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
lowercasingoption was added for all casing checks (see section Casing checks). -
New checks and reports:
- checkOperatorsLineContinuation
checkPackageCasing(see section Casing checks)
-
Added an auto-fixer for checkMissingComma.
-
checkMagicNumberno longer reports lines of code where a number is compared to the output ofnargin,nargoutorexist.
v2.6.0 - December 2020
-
Added MATLAB project integration (available from R2019a) with Git support. See section Project.
-
Added predefined configurations. See section Predefined Configurations.
-
Added a parameter to
checkAvoidFunctionsthat lets you select MATLAB folders whose functions to avoid using. -
Added a parameter to
checkEditorWarningsthat lets you select which warning message to report. -
New checks and reports:
-
Classes, functions and packages imported using the
importfunction are no longer reported as missing dependencies and are reported as expected. -
Bugfix: : Constructors are no longer checked against the parameter MaxComplexityMehod.
v2.5.1 - November 2020
- Bug fix for running Code Checker for MATLAB in the Model Advisor.
v2.5.0 - October 2020
-
Added rerun functionality. See section Rerun functionality.
-
Exemptions can now be added to your code by the click of a button. See section Add exemptions automatically.
-
Checks can now be configured multiple times, allowing for a more precise mapping of your rules onto your configuration file. See section Multiple configurations per check.
-
All functions accessible through the command window interface now support inputs of type string.
-
Fixed a bug where reports could not be exported to PDF/Word format form Simulink ModelAdvisor.
-
Added the option to run checks based on priority (Mandatory, Strongly recommended, Recommended).
-
Before checking the code, the containing folders are now temporarily added to the MATLAB path. See section General.
-
checkEditorWarningsis now configurable. See section checkEditorWarnings. -
Completed
checkOneStatementPerLine: it now checks whether only one statement per line is used. Previously only lines of code containing multiple keywords were reported by this check. -
checkSurrBySpacesis now configurable and can check for more operators. See section checkSurrBySpaces. -
The oldest supported MATLAB release is now R2017b instead of R2016a.
-
Compatible with MATLAB R2020b.
-
New checks:
-
Numerous minor improvements to checks and usability.
v2.4.0 - May 2020
-
Added the Configuration Editor for interactively editing your rule configurations.
-
Compatible with MATLAB R2020a.
-
New checks:
v2.3.0 - August 2019
-
Add new checks and configurable parameters to your configuration file (.xml) by calling
monkeyproof.cc4m.updateConfigurationFile()or using the Update button in the Configuration tab in the GUI. -
Auto-fixers added for
checkFollowedBySpace,checkNoInputArgandcheckSurrBySpaces. -
Improved scalability and readability of the reports when checking many files.
-
Added Report and About tab to the GUI.
-
New checks and reports:
-
Fixes:
-
Integration with Simulink Model Advisor.
-
Clear descriptions for all check parameters.
-
-
Renamed the method to run Code Checker for MATLAB: It was
monkeyproof.cc4m.processChecksand it is nowmonkeyproof.cc4m.start.
v2.2.4 - April 2019
-
Expanded object detection (see section Considerations and Known Limitations).
-
Added exemptions (see section Exemptions).
-
Added support for checking a single or multiple files in a folder.
-
Added support for Live Editor files (
*``.mlx), with some limitations (see section Live Editor files). -
Implemented detection of class inheritance.
-
Rule configurations file can be imported.
-
Added basic configuration-related tab to the GUI (see Configuration)
-
New checks and reports:
v2.1.2 - September 2018
-
Updated the GUI (see section The CC4M user interface).
-
Implemented limited object detection (see section Considerations and Known Limitations). This means that assigning property values is no longer in all cases reported as a struct field declaration/assignment.