About M-code in a Simulink model
Your MATLAB algorithm passes all tests, but when you drop it into a Simulink model, suddenly it breaks — or worse, silently produces different results.
Read articleExplore your MATLAB code quality. Find what matters. Act on it.
Published: 2026-09-25
A serious MATLAB codebase can produce a lot of code-quality information: hundreds or thousands of files, dozens of checks, and potentially a long list of findings. The challenge is not simply finding violations — it is understanding where to focus first.
The new CC4M Dashboard (beta) turns those results into an interactive view of your codebase. See the big picture at a glance, identify hotspots, slice the results by severity, priority, rule, folder, or file, and drill down to the exact line of code when you are ready to act. You can even apply fixes and exemptions directly from the report.
Instead of working through a static report from top to bottom, you can move from overview to focus to action — using the same results to answer different questions about your codebase.
Available with CC4M 2.22 via the -generateDashboard option. Like with the classic HTML report, CC4M writes a dashboard_<timestamp>.html file to your reports folder and opens it in the MATLAB web browser.
The Dashboard tab gives you an immediate overview of the analysis. Summary cards show the total number of violations, the rate per thousand lines of code, the breakdown into critical findings, warnings, and notes, and the number of files with errors.

Below the cards, six charts show how the findings are distributed and where they are concentrated:

Before opening a single finding, you can already see the shape of the result set: how much was found, how serious it is, and where it is concentrated.
The charts are not just visual summaries. Select a highlighted folder or file in Top Folders or Top Files and the dashboard immediately focuses on that part of the codebase.
The active scope is shown clearly in the filter bar, while the cards and charts update to show the selected files. That makes it easy to move from the complete codebase to one subsystem or component and immediately see how the picture changes.

You can use this to answer questions such as: Where are the Critical findings concentrated? Which rule dominates in this component? Does this folder have a very different quality profile from the codebase as a whole?
The Violations tab brings every finding together in a sortable, searchable table with pagination.
Use the filter bar to narrow the result set by severity, priority, or rule. Combine those filters with a file or folder selection and you can move quickly from thousands of findings to exactly the subset you want to investigate.

For example, select Critical severity and a specific rule to see only those violations across the selected scope:

Once you find a violation, CC4M helps you move directly to the next step:

Violations that have already been exempted remain visible and are clearly marked. After a rerun, exemptions can be reported together with their rationale — see.
This tab offers a short path from finding a problem to understanding it to doing something about it.
The Rules tab gives you a codebase-level view of the active rule configuration.
It lists every configured rule, including rules with zero violations, together with its description, severity, priority, and violation count. From here, you can jump directly to the corresponding findings.

This makes the coding standard itself easier to evaluate. Which rules consistently pass? Which rules trigger throughout the codebase? Which ones dominate in a particular component?
Your coding standard can evolve based on what the codebase actually shows.
The Files tab presents the checked files as a folder tree with Critical, Warning, Note, and total violation counts per file and folder.
Select files or folders directly in the tree to focus the dashboard on the part of the codebase you want to investigate. The selected scope carries through to the Dashboard, Violations, Run Info, and Reports tabs.

For larger repositories, this provides a natural way to explore code quality by product, subsystem, component, package, class, or any other structure already reflected in the codebase.
Useful code-quality results also need context. The Run Info tab records the run itself in collapsible sections, so you can see what was analysed, how CC4M was configured, and which environment produced the results.
It includes:

This makes a result set easier to understand, reproduce, and discuss with other engineers.
CC4M can report much more than coding-rule violations. If your configuration includes standard reports — functions, variables, dependencies, complexity, cell arrays, binary expressions, MEX files, MATLAB exemptions, or CC4M exemptions — their results are included in the dashboard as well.

These reports use the same interactive, filterable approach, so you can explore them in the context of the file and folder scope you are already investigating rather than treating them as separate outputs.
The dashboard remains connected to the CC4M analysis that created it.
Two buttons in the header take you directly back into the workflow:
That supports a natural iterative workflow:
analyse → explore → focus → fix → rerun
The dashboard is a self-contained HTML file: all results are embedded in it, and it renders in any modern browser. To share it with a colleague, send the .html file together with the cc4m-report-2.22 folder that sits next to it.
The "open in MATLAB" links and the Fix/Rerun buttons require MATLAB. Everything else — browsing, filtering, and sharing — works anywhere.
The new dashboard is available in beta with CC4M 2.22. It has been verified on MATLAB R2021a and later.
You can generate it from the GUI or from the command line.
From the GUI, enable the dashboard once on the MATLAB command line:
monkeyproof.cc4m.GuiSettings.set('DashboardReport', true);
After that, a dashboard is generated for every CC4M run.
From the command line, add the -generateDashboard flag to a regular monkeyproof.cc4m.start call:
% Folder analysis: CC4M detects that the input is a folder
monkeyproof.cc4m.start( ...
'file', 'C:\projects\myProject', ...
'configFile', 'MonkeyProofMATLABCodingStandard', ...
'-generateDashboard');
% File analysis
files = {'C:\projects\myProject\src\ballThrow.m', 'C:\projects\myProject\src\windModel.m'};
monkeyproof.cc4m.start( ...
'file', files, ...
'configFile', 'MonkeyProofMATLABCodingStandard', ...
'-generateDashboard');
All the usual selection options work as before — pass a file or folder to 'file' (CC4M detects by itself whether the input is a single file or an entire folder), or select a project, plus include/exclude patterns and changed-only scope.
After the run completes, CC4M writes the dashboard_<timestamp>.html file to your reports folder and opens it in the MATLAB web browser.
By default, the dashboard opens on the Violations tab. All tabs remain accessible, and the dashboard remembers the last viewed tab per browser.
Because the dashboard is still in beta, two issues are worth knowing:
The new dashboard makes CC4M results easier to explore, easier to discuss, and easier to act on — whether you are investigating one finding, reviewing a subsystem, or trying to understand the quality profile of a large MATLAB codebase.
If you already use CC4M, generate a dashboard for your own codebase with -generateDashboard and let us know what you think. Note down anything that is unclear, difficult to use, or not working as expected — including errors you encounter. And tell us what you find useful and what could be improved. We are continuing to refine the beta based on user feedback.
If you are new to CC4M, this is a good way to see what code-quality analysis can reveal beyond a list of violations. Talk to us about CC4M and what it can show in your MATLAB codebase.
Your MATLAB algorithm passes all tests, but when you drop it into a Simulink model, suddenly it breaks — or worse, silently produces different results.
Read article →Cleaning Up Large MATLAB Codebases Step by Step.
Read article →Automated Code Checks with Git Hooks
Read article →