M-XRAY Release Notes ------------------------ 3.7.0 / June 2018 - Define system files to be analyzed by wildcard pattern in mxray_createReport: The user can now define the system files (slx and mdl-files) to be analyzed in the batch analysis (mxray_createReport) by using search patterns with * and ** wildcards. For example, the following command will analyze all slx and mdl files in C:\MyModels or in any subfolder: >> mxray_createReport('C:\MyModels\**\*') As another example, the following command will analyze all files ending with _lib.mdl or _lib.slx in the C:\MyModels folder. >> mxray_createReport('C:\MyModels\*_lib.*') - BugFix: Fixed bug in HTML-report generation which caused the numbering of headings to stop counting on 5th level. 3.6.0 / March 2018 - Improvement of loop detection and loop complexity: The 'Loop Complexity' is a term that is added to the 'Local Complexity' metric when the 'Loops' checkbox is selected (or 'Loops' option of mxray_createReport used) to consider that the subsystem is more complex to understand when a feedback loop is part of the subsystem. The following changes have been made to this feature: - The incorporation of feedback loops in complexity calculation was improved to give feedback loops the appropriate weight in: 1. Big subsystems in general. 2. Subsystems where blocks are part of feedback loops that are interconnected via lots of signals. Previously, feedback loops were given too little weight in big subsystems, because feedback loops were added as a separate term 'loop complexity' when computing the local complexity. As the local complexity itself grows superlinearly with the number of elements in the subsystem, but the 'loop complexity' only linearly with the blocks, the influence of feedback loops on complexity decreased rapidly with increasing size of the subsystem. Previously, the 'loop complexity' calculation was based on the number of all signal circuits (elementary circuits) that the block is part of. This number could become extensively high for subsystems where blocks in the feedback loop are connected with lots of signals, as each possible signal path is considered. This has been fixed to only consider if a block is part of a feedback loop at all. Roughly, the formula changed from (N1 + N2) * log2(N3 + N4 + 1) + N1_Loops to (N1 + N2 + log2(N1_Loops + N2_Loops + 1)) * log2(N3 + N4 + 1). Please read the manual for details and rationale. - The 'Loops' column that was added to the report tables when the 'Loops' checkbox was selected has been removed, because the underlying concept of 'number of elementary circuits' has no intuitive counterpart in the subsystem and lacks practical relevance. - The 'Blocks In Loops' metric has been changed so that a single block is counted only once, even if the block is part of multiple elementary circuits. As the elementary circuits have no intuitive counterpart in the subsystem this results in a more intuitive metric. - To emphasize the influence of 'Loop Complexity' on the complexity, an additional table column 'Loop Complexity' has been added to the 'Loops' category, containing the additional term that was added to the base complexity. This column was previously only visible when selecting 'AlgoSL' from mxray_createReport. - GUI: Added possibility to remove multiple items from model list: The model list from the GUI is now multi-selectable so that you can select multiple items (or Ctrl-A for all) and remove them in one go via 'Remove model' - HTML report improvements: - Added subsystem name to the table tooltip so that it is obvious to which subsystem a specific table cell belongs. - Report now opens in a new tab so that previous reports are still accessible from the older tabs. - Faster analysis: Reduced the runtime of the loop detection and incoherence metric. For big models, and both metrics selected, this could speed up the analysis by up to 50%, depending on the size of the model's subsystems and the degree of interconnection. - XML report: Added a time stamp for report creation to the XML report. Added this change to the XML schema and increased the minor report version to 2.1. - BugFix: The GUI was minimized when a key was pressed after start-up. This has been fixed. 3.5.0 / January 2018 - BugFix: The Excel report generation failed with an error about an invalid Excel sheet name under the following conditions: a) A model is analyzed with analysis options that cause an error sheet to be generated for this model. b) The model has a long name so that the Excel sheet name has to be truncated to fit within Excel's 31 char limit. c) The clone groups detection is deselected. This bug is fixed now. - Bugfix: The 'Interface Count' metric could cause MATLAB R2011b to crash during analysis. This is fixed now. - Bugfix: The 'IneffectiveInterface' metric caused the analysis to abort with an error or retrieve incorrect results if duplicated inports are used in the model (inport shadows). This is fixed now. 3.4.0 / October 2017 - Elementary inputs unused listed in HTML report: To supplement the ineffective interface analysis introduced in M-XRAY 3.3, a new 'Ineffective Interface' section was introduced in the HTML report that lists the signal names of the elementary inputs unused. The names can be used to directly start refactoring the subsystem's interface. The new section is linked from the main part so that you can still work in the main table and jump into the details by clicking on and following the linked metric value. - Faster analysis: Reduced the runtime of the general model analysis and HTML report generation. For a reference model with global complexity of approx. 20000 and all details selected for analysis, the runtime of analysis and HTML report generation has been reduced by approx. 50%. - Rework of detailed subsystem quality distributions in HTML report: - Changed plots so that distribution bars are centered on the distribution bin. As a result, distributions for small discrete value ranges become clearer (e.g. bars for 'Level' or 'Inport' are now centered on 0, 1, 2 (...) and not on 0.5, 1.5, 2.5 (...)). - Changed font size to improve appearance on different browsers and to avoid truncated titles when title gets too long (e.g. 'Detailed distribution of %Elementary Inputs Unused (globally)' was previously truncated). - Improved HTML report readability for big models: - The library and model references were excluded from the table of contents to keep it readable for models with many references. - The maximum column width of the 'Path' and 'Name' columns were limited (with word wrap enforced) to keep the first metric values in the visible range without having to scroll horizontally. 3.3.2 / November 2017 - Bugfix: The 'IneffectiveInterface' metric caused the analysis to abort with an error or retrieve incorrect results if duplicated inports are used in the model (inport shadows). This is fixed now. 3.3.1 / July 2017 - Bugfix: The 'Ineffective Interface' metric raised an error when a Stateflow chart from a library was referenced. This is fixed now. 3.3.0 / July 2017 - New metric category for 'Ineffective Interface': New metrics address aspects of the architectural design principles 'Low Coupling' and 'Restricted Size of Interfaces' by measuring the amount and percentage of a subsystem's elementary input signals which are effectively unused inside the subsystem. Elementary input signals are all scalar or vector signals coming into the subsystem's inports either directly or (especially) as part of a bus. The metrics support the quality metrics introduced in 3.2 (inports+outports) and are intended to ensure the clarity, maintainability and testability of a subsystem's interface. The metrics can be selected via the 'Ineffective Interface' checkbox from the GUI or via the 'IneffectiveInterface' parameter of mxray_createReport. - New metrics 'Elementary Inputs' and 'Elementary Outputs': In line with the new 'Ineffective Interface' category and metrics, two informational metrics were added which measure the number of scalar or vector signals coming into the subsystem's inports or leaving through the subsystem's outports either directly or as part of a bus. The metrics can be added to the report via the existing 'Interface Count' checkbox ('Interface' parameter of mxray_createReport) together with the number of inport and outports. - Changed MATLAB downward compatibility: M-XRAY 3.3 is now compatible down to MATLAB R2009b (M-XRAY 3.2 was compatible down to R2007b). - New GUI and report arrangement: - The 'Report details' part of the GUI now has two new main subsections called 'Metrics' and 'General' (instead of 'Major' and 'Minor'). The 'Metrics' section includes all metrics available in M-XRAY. The 'General' subsection includes all general settings like 'Quality Metrics' or 'Global Values' plus additional features like 'Clone Groups' and 'Structural Overview'. - The report column categories introduced in 3.2 were refined, in accordance with the GUI changes, so that each metric selected has it's own column category. Previously, all columns of all selected metrics were combined into one 'Statistics and metrics' category. - New error handling: - The new 'Ineffective Interface' metrics analyze the signal flow and content of busses without compiling the model by accessing the 'SignalHierarchy' and 'BusStruct' properties. This may lead to errors when, for example, bus objects are not available or the model is not properly configured. To give the user as much information as possible in the report, a new error handling was introduced. Therefore new 'Errors' tables in the report list all errors occurred during the analysis. If any metric value could not be generated properly, the corresponding metric entry in the report tables will contain the error ID and a link to the 'Errors' table which includes the detailed error message. - In the HTML report, the 'Errors' section of the 'Cross-System Results' now just contains the 'Errors' table which subsumes the previous 'System Loading Errors' and 'Reference Loading Errors' subsections and the 'Warnings' section. For the 'Single System Results' each system will contain one 'Errors' subsection with an 'Errors' table which lists all errors related to that system only. If no error is related to that system, no 'Errors' subsection will be created. The 'Errors' table of the system subsumes the previous 'Reference Loading Errors' and 'Warnings' subsections. - In the Excel report, corresponding error sheets are generated for cross-system and single system results if any errors occur. - For the XML report, currently all erroneous values are set to -1 which is impossible for all M-XRAY metrics so far. The XML report will be enriched with more error information in future releases. - Additional option(s) to specify report name: - A new GUI checkbox 'Prefix' in the 'Report Output File' section can be used to in/exclude the 'mxray_Report_' prefix from the report file name, which was mandatory so far. - The new 'NoPrefix' parameter of mxray_createReport can be used to exclude the prefix in the command line analysis. - The 'Timestamp' checkbox in the GUI can be used to in/exclude the timestamp postfix from the report file name (according to the 'NoTimeStamp' parameter of mxray_createReport). - New 'User Guide' button in GUI: To give the user fast access to the user guide, a new 'Help' area with a button was added to the GUI which opens the user guide pdf. - Minor change in computation of 'Global Complexity' metrics: The global complexity metrics are now computed from the rounded local complexity values which results in a more consistent report, as the local complexity values are also rounded for the report. This may cause minor deviations of the global complexity values from previous versions as the global values where previously computed from the unrounded local complexities and then rounded for the report. - Changed column names: - The prefix 'Block Count: #' of the report column names of the 'Block Type Count' category (e.g. 'Block Count: #BusSelector) is renamed to 'Block Type Count: ' (e.g. 'Block Type Count: BusSelector'). - The prefix 'Stateflow Elements Complexity #' of the report column names of the 'Stateflow Complexity Factors' category is renamed to 'Stateflow Elements Complexity Count: ' (e.g. 'Stateflow Elements Complexity Count: State'). 3.2.0 / April 2017 - Quality metrics for 'Restricted size of interfaces': - As a first supplement to the incoherence metric introduced in release 3.1, quality metrics for the most direct and obvious form of subsystem coupling were added: Count of subsystem inports and subsystem outports ('Inports' and 'Outports' columns). These simple but important quality metrics help to assure quality standards like ISO 26262 and their demand for a 'Restricted size of interfaces'. - Technically the 'Inports' and 'Outports' metrics are identical to the 'Interface In' and 'Interface Out' values of the previous releases, but are renamed to clarify the meaning. - The 'Interface Count' option of the M-XRAY GUI is set to default. - As a first step, the quality boundaries for 'Inports' and 'Outports' are set very defensive and tolerant. As part of the customization these quality metrics (like all) could be adapted to the company's quality standard. - Emphasis of quality metrics in report: To emphasize the quality metrics in the report and to improve clarity, the following changes were made to the reports (HTML+Excel): - There is a new category (for categories see next point) called 'Quality Metrics' in the tables of the report. This category follows immediately after general Subsystem info like path and name. - All columns of metrics selected as quality metrics (defined in mxray_qualityMetrics.m) are grouped in this category to have all quality metrics of the subsystems at a glance. - Improved readability/clarity of report (HTML+Excel) by adding categories to tables: The columns of the report tables are grouped into categories to improve readability. The first category is 'General Info' which contains the 'Path', 'Name' and 'Info' columns (and 'Level' column if level is no quality metric). All following categories are optional and are only part of the report, if the containing columns are selected for analysis. 1. 'Quality Metrics': Quality metrics defined in mxray_qualityMetrics.m like 'Local Complexity', 'Level', ... 2. 'Statistics And Metrics': All standard statistics and metrics not in 'Quality Metrics' like 'Global Complexity', 'Incoherence', 'Blocks' ... 3. 'Simulink Complexity Factors': Simulink complexity factors like 'N1 (org)' 4. 'Stateflow Complexity Factors': Stateflow complexity factors like 'Stateflow Complexity Unscaled' 5. 'Block Count': All block type specific counts like 'BlockCount: #Integrator' 6. 'Review': All review columns like 'Review Status' - New column 'Quality Failures' in Excel report: This value counts the number of failed quality metrics for each subsystem, which means quality metrics in the red (or 'bad') range. This value is added to the Excel report only, as this number is visually obvious from the 'Quality Metrics' category, but could be helpful to sort for in Excel to extract the worst subsystems in terms of quality failures. - Removed global values of 'Interface In' (now 'Inports') and 'Interface Out' (now 'Outports'): As this metric should only assess the number of local ports, the global columns were removed from the report. If someone is really interested in the global number of inports or outports, this is still possible by selecting the blocktype count and reading the values from the 'BlockCount (global refX): #Inport' and 'BlockCount (global refX): #Outport' columns. - Changed behavior of mxray_localMetricsIgnoreList: Previously, only 'Local Complexity' and 'Cyclomatic Complexity' was set to 'Ignored' for subsystems in this list. Now all local metrics and statistics are set to ignored to have a consistent behavior. - New mxray_createReport option 'NoTimeStamp': With this option you can exclude the time stamp from the report file name. - New installation instructions in HTML format: Previously, there were two places for the 'installation instructions'. One in the 'mxray' folder of the distribution zip and one in the user guide. Now there is only one installation instructions file in HTML format called 'Readme_MXRAY_Installation_EN.html' in the root folder of the distribution zip. 3.1.1 / March 2017 - Restored hook functionality of M-XRAY versions smaller than 2.0: mxray_hookGetModelInfo.m from new hooks directory can be used to enrich the HTML report with artifact specific information. Function can be moved, but must be on MATLAB search path when using M-XRAY. 3.1.0 / October 2016 - New incoherence metric (inverse of cohesion): A new metric computes the incoherence of individual subsystems. The incoherence can be seen as the inverse of a cohesion metric. The incoherence gives you a rough estimate of the parallel divisibility of your subsystem. For instance, an incoherence of 3 tells you that there are roughly 3 separated components in the subsystem which may be separated by refactoring. In combination with the local complexity, the metric gives you a powerful measure to identify refactoring candidates. Subsystems with high local complexity and high incoherence indicate subsystems where it should be easy and effective to restructure the content to reduce complexity and improve readability. - Analysis of Stateflow TruthTables: M-XRAY now also analyses Stateflow TruthTables which can be found either in Stateflow charts or are directly embedded in Simulink via the TruthTable block. As TruthTables are part of Stateflow, their complexity is computed via the new Stateflow metric introduced in M-XRAY 3.0. Corresponding weights for TruthTable elements were added to the mxay_complexityParametersStateflow.m configuration file. - Level-Column in Structural Overview: To improve readability of structural overview, a new column 'L' was added which is identical to the 'Level' column of the main tables (which gives you the depth of the subsystem in the model hierarchy). - Loop Detection: Algorithm of loop detection caused some runtime problems in older release or did not finish at all for some models. Therefore switched to new algorithm and removed 'Warning' from GUI and user guide. - License module update: The integrated FlexNet Publisher libraries have been updated to version 11.14.0.0. This update enables the license module to read dongle ids on systems running the WibuKey driver in version 6.32 or above. Older WibuKey driver versions are still supported. 3.0.3 / March 2017 - Restored hook functionality of M-XRAY versions smaller than 2.0: mxray_hookGetModelInfo.m from new hooks directory can be used to enrich the HTML report with artifact specific information. Function can be moved, but must be on MATLAB search path when using M-XRAY. 3.0.2 / September 2016 - Bugfix: The 'Block Count' checkbox in the M-XRAY GUI was ignored in analysis. This is fixed now. 3.0.1 / July 2016 - Bugfix: If model contains subsystems with a line break in subsystem path, the content of this subsystem (and all subsystems below) was discarded in the analysis. This is fixed now. 3.0.0 / June 2016 - New Stateflow complexity metric: The complexity metric for Stateflow was completely redesigned with the following three core features: 1. Halstead volume: The complexity metric is now computed consistently between Simulink and Stateflow using a Halstead volume N*log2(n) where N is the number of elements and n the number of distinct elements. Therefore the number of distinct elements is now also considered in Stateflow and both metrics (Simulink+Stateflow) show the same super-linear scaling with size. 2. Stateflow Action and Condition code: The Stateflow Action and Condition code is now analyzed precisely and included in the overall Stateflow complexity via its own Halstead volume (code complexity). Every operator and operand is part of the computation and even individual weights can be given for special operators and operands. 3. New definition of complexity decomposition: A key aspect of M-XRAY and the handling of complexity is the concept of complexity decomposition. In Simulink parts of any system can be put into subsystems to structure the system and reduce complexity on a local scale. Anything that is inside a subsystem is regarded as encapsulated and hidden and is not included in the computation of the local complexity of the subsystem above. Following the definition of 'The MathWorks' for Stateflow this decomposition should be done using Subcharts. Therefore since M-XRAY version 3.0 only Subcharts are regarded as own hierarchical elements and the local complexity (and all local values) is computed on this level (definition of decomposition / behavior can be changed in configuration file). All parameters of the new Stateflow metric can be inspected or changed in configuration/mxray_complexityParametersStateflow.m . All parameters were carefully pre-configured by MES using a large number of industry Stateflow systems and discussions with Stateflow engineers. Due to the complete redesign of the metric and the new definition of decomposition, the metric results can differ significantly from results with previous versions of M-XRAY. This is a desired behavior as the new metric should give you a far better indicator of the true complexity. - Additional enhancements of Stateflow analysis: 1. If library references are selected for analysis, the analysis now also follows linked atomic subcharts giving you the same behavior in Stateflow as for linked subsystems in Simulink. 2. The content of Simulink functions in Stateflow is now also analyzed. - GUI+HTML+XML Report: New way to define quality classes for specific analysis values (classification into 'good', 'acceptable' and 'bad' with colors green, yellow and red): 1. The mapping of a given analysis value onto quality classes 'good', 'acceptable' and 'bad' is now called 'quality metric'. 2. The configuration file for the quality metrics is now called 'configuration/mxray_qualityMetrics.m' (formerly mxray_getFilterDefinition.m). Now there are three fixed classes 'good', 'acceptable' and 'bad' with fixed colors green, yellow and red for a consistent behavior over multiple quality metrics. 3. The quality metrics defined in qualityMetrics.m form the basis for all color shadings in the report, as before. The difference is: Previously the complete row of a subsystem was colored and the color was based only on the 'Local Complexity'. Now each cell is colored individually depending on its current column. If the column's analysis value belongs to a quality metric, the cell is colored depending on the quality metric and the analysis value in the cell. Therefore there could be multiple cells with different colors for each row/subsystem. As a side effect the report becomes more readable if there are many subsystems in the red range. 4. There is a new GUI option 'Quality Metrics' ('NoQualityMetrics' for mxray_createReport). With this option you can en-/disable the quality metrics. This means that all color shadings corresponding to the quality metrics are en-/disabled in the report. In addition the creation of the 'Subsystem Quality Overview' (formerly called 'Local Metric Overview') in the HTML-Report and the node (formerly known as ) in the XML-report is en-/disabled by this option. 5. The 'Local Metric Overview' ( XML) is renamed to 'Subsystem Quality Overview' ( XML) as this overview is primarily focused on the quality metrics and is directly coupled the new report options described above. 6. The 'Metric Summary' ( XML) section is removed. The 'Global Metric Values' ( XML) subsection below is moved up one level and called 'Global Value Summary' ( XML) as this subsection should not be restricted to metrics only. The 'Subsystem Quality Overview' (formerly 'Local Metric Overview') is also moved one level up. 7. As there are several changes to the XML report the schema is updated and the 'schemaVersion' attribute of the node is set to 2.0. - Changes in configuration files (mxray/configuration): - mxray_blockweights and mxray_SFweights are now called mxray_complexityParametersSimulink and mxray_complexityParametersStateflow to give them a speaking and consistent name. - Due to the new Stateflow metric, the content of mxray_complexityParametersStateflow differs significantly from mxray_SFweights. - mxray_blockweights() returned two parameters: ri_blocktypeValues and tlFactor. The new function mxray_complexityParametersSimulink also returns this two parameters, but with slightly different names and encapsulated in a struct. Please see the file for details. - New configuration file mxray_cloneGroupsDetectionParameters.m to customize the Clone Groups Detection. - mxray_getFilterDefinitions is now called mxray_qualityMetrics with slight changes in the returned struct. Please see the file for details. - New Section 'Warnings' in HTML-Report: Due to the new analysis of Stateflow Action and Transition code there may occur warnings during the analysis of Stateflow code. If there are such warnings they will be displayed in a new section 'Warnings' in the HTML-Report. - HTML Report: Added tooltips to the tables of the HTML report which display the column name. This is especially useful when scrolling through huge tables where the table column line is not visible anymore. - Clone Groups Detection now default in mxray_createReport: The Clone Groups Detection is now enabled per default in mxray_createReport. The old 'CloneGroupsDetection' parameter is now deprecated and replaced by 'NoCloneGroups' which disables the clone groups detection. - 'Add open models' from the GUI now also recognizes unsaved models. - Cyclomatic Complexity: Fixed bug in Cyclomatic Complexity which caused values to be one above the true value. The Cyclomatic Complexity now also recognizes 'Enable ports'. Cyclomatic Complexity for Stateflow is undefined so far and returns 0 for all elements. - BugFix 'AllColumns' mxray_createReport: The 'AllColumns' parameter of mxray_createReport did not include the 'CC' (Cyclomatic Complexity) option. This is fixed now. 2.3.4 / March 2017 - Restored hook functionality of M-XRAY versions smaller than 2.0: mxray_hookGetModelInfo.m from new hooks directory can be used to enrich the HTML report with artifact specific information. Function can be moved, but must be on MATLAB search path when using M-XRAY. 2.3.3 / June 2016 - Bugfix: If mxray_localMetricsIgnoreList was used together with the Clone Groups Detection and at least one subsystem was ignored, the Clone Groups Detection raised an error. This is fixed now. 2.3.2 / June 2016 - Bugfix: Integration one of the BugFixes from 2.2.3 which is also relevant for 2.3: Excel report creation failed with an error if a Sheet had to be generated that contains a slash (E.g. if a subsystem is directly selected for report creation from command line). Now slashes are replaced by underscores. 2.3.1 / April 2016 - Bugfix: If model contains a model reference with a library reference (or a library reference with a model reference) the Excel report creation failed with error. This is fixed by this patch. 2.3.0 / December 2015 - New GUI/mxray_createReport option 'Cross-System Results'/'NoCrossSystem' If multiple systems (models/libraries) are analyzed in a single run the 'Cross-System Results' gives you results that are generated using all subsystems from all analyzed systems. E.g. the 'Most Complex Subsystems' section from the 'Cross-System Results' presents the most complex subsystems across all systems (models/libraries) that are selected for analysis. The separated, isolated system analysis results are moved to a new 'Single System Results' section. Currently the 'Cross-System Results' contain the 'Metric Summary' (HTML/XML), 'Most Complex Subsystems' (HTML), 'Clone Groups' (HTML/Excel/XML) and the 'Main Part' (Excel/XML). The 'Cross-System Results' can be selected via the Checkbox in the GUI or deselected in mxray_createReport via the 'NoCrossSystem' option. - XML export format A third report format XML was added for automated processing of the M-XRAY analysis results. The XML report is structured nearly identical to the HTML report. The XML schema of the report is given in functions\report\xml\schema\mxrayXMLSchema.xsd. The XML export can be selected via the 'XML' Checkbox in the GUI or via the 'XML' parameter in mxray_createReport. - New error handling - If none of the given systems (models/libraries) could be loaded, no report will be created. In the GUI an error window will be displayed and mxray_createReport will raise an MXRAY:LoadingErrorForAllSystems exception. - If some of the given systems could not be loaded, a warning will be displayed on the command line and the report will contain 'System Loading Errors'. In the HTML report a new section 'System Loading Errors' in the 'Cross- System Results' will present all systems that could not be loaded. Additionally, red strings in the table of contents will mark system loading errors. In the Excel report, red strings in the corresponding root cells will mark system loading errors. In the XML report the errors are presented in the part from the and each system with a loading error is marked with 'true' in the . - If 'Library & Model References' is selected and some of the references could not be loaded, a warning will be displayed for each library/model that could not be loaded (just one warning, regardless of the number of references to this library/model). In the HTML/XML report a new 'Reference Loading Errors' part in the 'Cross-System Results' and 'Single System Results' will display all unresolved references. In the Excel report all roots with reference loading errors are marked with a red string 'Reference Loading Error'. - Excel report improvements - Clone Groups are now also part of Excel report as separate sheet for each analyzed system and as single sheet for cross-system clone groups. - The main sheets for each model and the main sheet for the cross-system results are now prepared for sorting. For instance, sorting all subsystems by Local Complexity would resemble the 'Most Complex Subsystems' part of the HTML-report. Technically this means that: 1) the Excel-Autofilter is preselected giving you the small sort arrows in all cells of first row; 2) the alternating grey shading of each row was removed because this yields unpleasant results after sorting; 3) the '-' entries for numerical cells with value 0 were replaced by empty entries, which are better suited for numerical sorting. - Excel report is now opened in asynchronous mode, so that the MATLAB command prompt is not blocked until the report is closed (so HTML and Excel report now show the same behavior in this respect). - Excel report now shows the first sheet if report is opened and not the last. - GUI simplification - The 'Create Standard Report' and 'Create Review Report' buttons were replaced by a single 'Create Report' button and a 'Review Support' Checkbox. - Checkboxes were re-arranged so that most important features are on top and related features are next to each other. - Report file prefix changed As the 'Review Support' is now just an additional checkbox and no separate report anymore the report file prefix was changed from 'mxray_(Analysis/Review)Report' to just 'mxray_Report'. - Better TargetLink support: - The two intermediate helper subsystems below a TargetLink subsystem are now excluded from the analysis and not visible anymore in the final report. - The TargetLink version is now correctly read in and displayed in the 'Tool Version Infos' in the HTML report. - Clean-up of HTML-Report - Additional information given in the entries of the table of contents (like system file path, system global complexity or numbers of subsystems in the most complex part) was removed to improve the readability of the table of contents. The information is not lost but shifted into the reports body. - For subsystems with a library reference, the HTML-links in the 'Name' cell now open the subsystem in the model and not in the library. - In the 'Metric Summary' section the order of 'Global Metric Values' and 'Local Metric Overview' was switched so that the report details increase if you scroll from top to down. - Additional global values If the 'Global Values' checkbox is selected, the global values are now also calculated for 'Cyclomatic Complexity' and 'Interface_In/Out'. 2.2.3 / June 2016 - Bugfix: Fixed three bugs in Excel report creation: 1. If two or more systems were analyzed at once and one of the first systems contained references, then a single sheet was created for this reference instead of a sheet for the next system from the start system list. This is fixed by this patch. 2. Excel report creation failed with an error if a Sheet had to be generated that contains a slash (E.g. if a subsystem is directly selected for report creation from command line). Now slashes are replaced by underscores. 3. If a system selected for analysis (start system) contains references, then the subsystems from the references could be displayed before the subsystems from the start system. This is fixed by this patch. 2.2.2 / December 2015 - Bugfix: If clone groups with similar (not identical) clones were detected with copy/paste values, the HTML report generation raised an error. This is fixed by this patch. 2.2.1 / November 2015 - Bugfix: If a model or library has references of 2nd order or higher (e.g. model uses a library that uses other libraries) then these high order references were not listed in the HTML report. This is fixed by this patch. 2.2.0 / October 2015 - Rework incorporation of library/model references into global values - All global metric and statistic values are now separated into three different values depending on how library/model references are incorporated: 'Global Ref0', 'Global Ref1' and 'Global RefN'. The primary reason for splitting up the values is to distinguish the values for the different use cases. In case you want to estimate the review or development complexity of your model(part) including the references, you should choose 'Global Ref1'. In case you want to estimate the test or runtime complexity including the references, you should choose 'Global RefN'. In case you want to explicitly exclude all references from your estimation, you should choose 'Global Ref0'. For computational details, see the new 'Global Metric Values' subsection of the HTML-report or the User Guide. - The referencing subsystems still have their own rows in the report tables (with '(Library)' or '(Model)' entries in the info field), but all local values are set to zero, because effectively all content is part of the library. A side effect is that very complex first level subsystems from libraries are no longer listed once for each reference in the 'Most complex subsystems' part. - New section 'Metric Summary' in the HTML-report The new section 'Metric Summary' contains the previous section 'Metric Overview', renamed to 'Local Metric Overview', and a new subsection 'Global Metric Values'. The latter contains the global complexity values (Ref0, Ref1 and RefN) of the analyzed system and their descriptions (how to use and computational details). - New GUI/mxray_createReport options: - With the new GUI option 'Library/Model References' or 'NoRefs' option of mxray_createReport you can enable/disable the incorporation of library/model references into the report. As a side effect, if you choose to exclude references, the 'Global Ref0' values are the only global values left in the report. - With the new GUI option 'Global Values' or 'NoGlobal' option of mxray_createReport you can include/exclude all global values from the report. - Visual separation of major and minor report options in the GUI. - Execution time optimization - The general execution time of the analysis is sped up by approx. 30%. - The analysis is significantly faster for models with many references to the same library. - Excel standard and review report improvements - Excel standard and review report now are created without using Macros. This prevents potential problems with the Macro certificates. - The standard and review report now share the same layout. - The review report now also supports the same report options as the standard report. - Improvements in batch analysis (mxray_createReport) - The mxray_createReport now adds the relevant subdirectories to the path itself. So mxray_createReport can now directly be launched from M-XRAY root directory without launching path_mxray before. - It is now possible to start the analysis from a given subsystem of the complete model. Just give the subsystem path as system name to mxray_createReport: e.g. mxray_createReport('fuelsys/fuel rate controller') - The user options of mxray_createReport are checked for wrong (unknown) options. - Simplified license installation (see also readme_installation.txt) - The new function mxray_printLicenseInfos can now be used to check the installed license prior to launching M-XRAY and print general license infos (like mxray('getlismolicenseinfo') before). - The new function mxray_installFloatingLicense(...) can be used to install a floating license. - The new mxray_uninstallToolAppData can be used to uninstall the tool installation from the app data folder. - Minor report improvements - In the HTML 'main part' and 'structural overview' and in the EXCEL report, all subsystems (stateflow elements) are now really sorted by full path. Previously, the order was disturbed by uppercase letters. - The HTML tables for library/model references in the 'main part' now use only those columns where at least one non-zero entry is present. - The HTML tables from the 'structural overview' use only as much columns as really needed for specific model or reference. - Simplified changing of Simulink blockweights Changes of Simulink blockweights now have an immediate effect on analysis results. Previously, the changes were only considered after a MATLAB reboot. - The GUI configuration (mxray_config.m) is now also stored in a version specific folder in AppData to prevent errors from incompatible mxray_config versions. - Git Hash of release now part of mxray_about which can be used for support. 2.1.1 / November 2015 - Patch #2962: The creation of excel reports failed in case of read-only Excel template files. This is fixed now. 2.1.0 / July 2015 - Redesign and Restructuring of HTML report - The report was redesigned to give all MES tools a uniform, clear and legible appearance. - The structure of the report was changed a little bit: - Every entry like "metric overview" or "clone groups" now has a number in table of contents. - The "metric overview" now belongs to the chapter of the corresponding model which makes it easier to navigate through the models. - The "main part" section and "structural overview" section now have subsections for the model itself and the library references, which helps to separate model results from library references results. - The "version info" is now called "tool version info", because that's what it is and is placed directly below the contents and above all model results. - New configuration file mxray_metricsIgnoreList.m In the rare case you want to exclude some subsystems from the computation of local metrics, this can be done in the new file configuration/mxray_metricsIgnoreList.m. You can use wildcards to ignore path or name patterns. Local metrics are printed as '(ignored)' in the report. Please use this feature with great care as it is generally not recommended to ignore local metrics! - Attention: Renamed mxray_blacklist.m and mxray_whitelist.m The configuration files mxray_blacklist.m and mxray_whitelist.m are now renamed to mxray_backlistForMasktypes.m and mxray_whitelistForMasktypes.m to better separate them from mxray_metricsIgnoreList.m. In case you have your own existing black- and whitelists please rename the corresponding files or copy into the new files. 2.00 / March 2015 - Redesign of GUI Different report options are now selectable by checkboxes instead of a list providing a more precise and apparent selection. - New report option: Clone Groups Detection A new feature called Clone Groups Detection was added to M-XRAY which detects identical subsystems as potential clones generated by copy and paste. The detection is based on the values extracted by the M-XRAY analysis. Detected clones have the potential to be put to a library to reduce the model complexity. - A lot of improvements concerning the analysis of Stateflow elements - Graphical Functions and their content are now included in the analysis. - Boxes and their content are now included in the analysis. - MATLAB Functions used in Charts are listed in analysis results (Contents are currently ignored) - Links in HTML report now open the corresponding Stateflow element directly and the links are also available in the structural overview. This feature is only available when using MATLAB’s integrated browser. - Complexity calculation of Stateflow’s structural elements (Charts, States, Boxes, Graphical Functions) is now consistent for each such element. Previously charts were treated differently as the Halstead factors N1-N4 were included. - States included in Stateflow elements are now included in computation of element's complexity. - Since Matlab R2013b all Stateflow elements were missing caused by a change in the Simulink API. This is fixed now. - Charts that are direct links to a library Chart were listed twice in model analysis and the linked library item was not analyzed. This is fixed now. - Execution time optimization The handling of black- and whitelist was changed and therefore execution time on large models is significantly improved. - Library links now show the name of the library item itself and not of the parent any more. This prevents ambiguities in the link names. - Clicking HTML report links to subsystems of a non-loaded (non-opened) model now loads the corresponding root model and opens the corresponding subsystem if the model is on the path or MATLAB is in the corresponding directory. - When multiple models/libraries were analyzed the metric plots all showed the results of the last analzed model/library. This is fixed now. - Internal report links did not work in MATLAB's web browser, because of different handling of HTML anchors. This is fixed now. 1.61 / August 2014 - Extended independence of MES tools for license mechanism and utils Stronger division and independence of M-XRAY when running together with MXAM or MTest. This removes rare backlashes from other tools. (No mes* functions anymore.) The lismo license mechanism is now thread-safe as well. - Update of readme_installation.txt Extended description of installation of license mechanism for the different options (dongle, floating). 1.60 / June 2014 - Added flex license mechanism for dongle and floating licenses Dongle and floating licenses by the flex mechanism are supported by M-XRAY. Installation and use is identical to MXAM and MTest. - Preconfigured black list for Simulink and TargetLink Now the black list contains by default all mask types of simulink, simulink_extras and tllib. Using the included mxray_getAllMasktypesOfModel function you can easily add your own libraries to the black list as well. If you don't like these additions to the black list, please comment the respective lines in configuration/mxray_blacklist.m. 1.55 / August 2013 - Added information on tool versions in HTML report The version of Matlab, Simulink, Stateflow, TargetLink and Windows currently in use is reported in the HTML report. If available, the return of version info hook functions is reported as well. - Added hook for version info mxray_hookGetVersionInfos - Removed problem during bus interface analysis Because of this problem Matlab occasionally produced nasty segmentation faults. 1.52 / 26.02.2013 - Better calculation of bin number for metric distribution graphics The number of bins for the different distribution graphics is calculated depending on the number of different metric values and for better visibility. - CSD modules update 1.51 / 26.01.2013 - Removed problem with complex actions in Stateflow Analysis of complex actions in Stateflow could produce an error in loc_getActions. - Added distribution graphics for M-XRAY metrics Directly below the metric table at the beginning of the report graphics showing the distribution of the values of the metrics were added. These graphics (histograms) provide a deeper view into the distribution of the source values of the metrics. 1.50 / 03.09.2012 - removed old calls to fileparts No fourth output parameter in calls to filepart supported in current Matlab releases. 1.49 / 24.04.2012 - remove problems during the dual use of mxray and mxam 1.48 / 25.03.2012 - remove problems during the dual use of mxray and mxam 1.47 / 03.2012 - reduce the black and the whitelist to the default SL/SF/TL blocks - add odometer example 1.46 / 04.11.2011 - Considering blocks without in- and outputs, to ignore InfoBlocks like DocBlock these blocks should be added to the blacklist 1.45 / 27.10.2011 - lh_allStates error The error lh_allStates during the model analysis is fixed. 1.45 / 22.09.2011 - Different computation of cyclomatic complexity in TL 2.x/3.x The different behavior of the computation of the cyclomatic complexity is fixed. The complexity of Targetlink relevant blocks is version independent the same. 1.45 / 14.09.2011 - Progress bar only for gui mode The Progressbar is switchable for the mxray_createReport function now. By adding the option 'GUI' during the create report operation a progressbar is shown. 1.45 / 22.08.2011 - the border of the metric range are now considered right 1.45 / 20.07.2011 - create new release 1.40 / 08.07.2011 - bug fix. The crash during call mxray_getModelMetrics computing state complexity is fixed. 1.40 / 11.03.2011 - Remove the persiting black and white lists - adding reference names in the content menu - Adding the mxray_metricsExportMQAC function. >> mxray_metricsExport({'fuelsys'},metrics,'mqc,'AllColumns'); - bug fix. The crash if a loop analysis faild was removed. 1.3.8 / 23.09.2010 - Extends the handbook with description of loop complexity calculation. - Improve the stabilty and execution speed of the implementation. - bug fix. The crash if the analysis results where empty is removed. - bug fix. The missing library information on structure selected by option 'tree' is fixed 1.3.7 / 07.09.2010 - Extend the function mxray_about.m by adding the version number return parameter. - Add the new version of mes_setmode for compilation mode. - bug fix. The missing coloring in report is fixed by using default values if the metrik filter definition isn't available. - bug fix. The top list limit of max 25 subsystems will now be schon correct. Use only 10% of the analyzed subsystem, but maximal 25 subsystems for the most complex subsystem list - Adding different structure modes of method mxray_getModelStructure.m and improving the documentation. >> doc mxray_getModelStructure 1.3.6 / 18.08.2010 - add mes_unresolved Models to get the link status of model libraries and model referencies. >> missingLinks = mes_unresolvedMdlLinks('fuelsys') - adding the calculation of cyclomatic complexety and Halstead Volumen for Stateflow - extend the unit tests 1.3.5 / 05.08.2010 - bug fix. All previous open simulink models kept opend after the analysis. - bug fix. The crash caused by Stateflow truth tables is fixed. Truth tables will be correct recognized. - bug fix. The crash caused by old TL Subsystems during the structure analysis is fixed. - Add the command mxray_getModelInfo. This command returns information about the model, linked libraries and referenced models. >> mxray_getModelInfo('fuelsys') 1.3.4 / 27.07.2010 - The analysis of local loops are computed and shown in the report. - Improve the metricsExport function now it is possile to export a set of all calculated metrics. The following script exports all Stateflow Metrics in a csv file. metrics = {'Chart (local)','State (local)','Transition (local)', ... 'CondTran','Events','And','Or','JunctionIn','JunctionOut', ... 'StartTransition'}; mxray_metricsExport({'fuelsys'},metrics,'csv','AllColumns'); 1.3.3 / 26.07.2010 - Referenced models are now considered during the analysis. All models must be in the search path, otherwise the analysis going to fail. By using the 'visible' option all referenced models will be opend during th analysis. 1.3.2 / 22.07.2010 - Faster computation of model structure. - Changed blocktype weight for S-Functions and charts (results in slightly higher complexity value). - Change the name of State to StateSelf in SFWeights for a better under- standig of the weight usage. 1.3.1 / 06.07.2010 - Integration of the function mxray_metricsExport. The export of metrics as comma seperated or xml file is now possible. To get detailed information use: >> help mxray_metricsExport