Release notes
v2.17.0 - January 2025
-
CC4M toolstrip in Simulink enhanced, all predefined and custom configurations are available.
-
Added
checkExemptionsRationale
. -
Added parameters
LocalFunctionPrefix
andNestedFunctionPrefix
tocheckUserDefinedFunctionCasing
, such that it is independent ofcheckFunctionPrefix
. -
Improved
checkComplexity
such 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.
-
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
- Added
checkComplexity
; correspondingreportComplexity
does not produce violations. - Added
checkDependencies
; correspondingreportDependencies
does not produce violations. - Added
checkMexFiles
; correspondingreportMexFiles
does 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 CheckcheckNamedConstantCasing
no longer checks class properties. -
Fixed
checkTryExceptionHandling
when noExceptionHandlingFunctions
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
tocheckComparisons
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
-
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
checkOperatorsLineContinuation
that 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
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 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
IgnoreUnknownTypeVariables
parameter ofreportBinaryExpressions
and theIgnoreUnknownTypeCells
parameter 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
Any
option was added to parameterLocation
ofcheckCopyrightNotice
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 inName=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:
- checkOperatorsLineContinuation
checkPackageCasing
(see section Casing checks)
-
Added an auto-fixer for checkMissingComma.
-
checkMagicNumber
no longer reports lines of code where a number is compared to the output ofnargin
,nargout
orexist
.
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
checkAvoidFunctions
that lets you select MATLAB folders whose functions to avoid using. -
Added a parameter to
checkEditorWarnings
that lets you select which warning message to report. -
New checks and reports:
-
Classes, functions and packages imported using the
import
function 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.
-
checkEditorWarnings
is 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. -
checkSurrBySpaces
is 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
,checkNoInputArg
andcheckSurrBySpaces
. -
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.processChecks
and 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.