Release notes
v.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, this feature is only available with the Pro license.
-
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.