运行 Matlab 代码覆盖率报告时如何防止无效文件警告?

问题描述 投票:0回答:1

概述

我从 Matlab 的代码覆盖率中收到一个文件“无效”的警告,我想消除该警告。 我可以想到两种方法,但我不知道如何实现其中一种。 我的想法是:

  1. 修复该文件,以便插件不会将其标记为无效。 (首选)
  2. 告诉 Matlab 代码覆盖率插件忽略该文件。 (可以接受)

详情

我有一个文件 runTests.m,它导入用于单元测试的 Matlab 代码覆盖率插件:

import matlab.unittest.TestRunner
import matlab.unittest.plugins.CodeCoveragePlugin
import matlab.unittest.plugins.codecoverage.CoverageReport

当我运行测试时,它们都通过了,并且覆盖率报告似乎具有正确的信息,除了一个 App Designer 文件之外。 对于该文件,我收到此警告:

Warning: Coverage result is empty for /MyPath/myApp.mlapp because the file is invalid.

如何告诉代码覆盖率插件忽略App Designer .mlapp 文件? 该应用程序可以运行,所以我不知道为什么它无效。 如果我在新的空白应用程序上运行相同的测试套件,则不会出现警告。

其余警告输出为:

In matlab.coverage.internal.ResultBuilder.createFromCodeCoverageCollectorData (line 20)
In matlab.coverage.internal/ResultBuilder/create (line 73)
In matlab.coverage.internal.getResults (line 11)
In matlab.unittest.internal.coverage.CodeCoverageCollector.get.Results (line 65)
In matlab.unittest.internal.plugins.CodeCoverageCollectionPlugin.runTestSuite/assignResultsAndResetProfilerCollector (line 25)
In matlab.unittest.internal.plugins.CodeCoverageCollectionPlugin>@()assignResultsAndResetProfilerCollector(plugin,pluginData.CommunicationBuffer) (line 22)
In onCleanup/delete (line 25)
In matlab.unittest.internal.plugins/CodeCoverageCollectionPlugin/runTestSuite (line 20)
In matlab.unittest.plugins/CodeCoveragePlugin/runTestSuite (line 350)
In matlab.unittest.plugins/TestRunnerPlugin/runTestSuite (line 265)
In matlab.unittest.plugins.xml/JUnitXMLOutputPlugin/runTestSuite (line 66)
In matlab.unittest/TestRunner/evaluateMethodOnPlugins (line 425)
In matlab.unittest.internal/SerialTestRunStrategy/runTestSuite (line 36)
In matlab.unittest.internal/SerialTestRunStrategy/runSession (line 16)
In matlab.unittest/TestRunner/runSession (line 1260)
In matlab.unittest.plugins/TestRunnerPlugin/runSession (line 228)
In matlab.unittest.plugins/CodeCoveragePlugin/runSession (line 345)
In matlab.unittest.plugins/TestRunnerPlugin/runSession (line 228)
In matlab.unittest.plugins.xml/JUnitXMLOutputPlugin/runSession (line 58)
In matlab.unittest/TestRunner/evaluateMethodOnPlugins (line 425)
In matlab.unittest/TestRunner/doRunWithFcn (line 413)
In matlab.unittest/TestRunner/run (line 297)
In runTests (line 55)
matlab code-coverage
1个回答
0
投票

看起来

ResultBuilder
对语法错误甚至 mlint 警告非常敏感,再加上
createFromCodeCoverageCollectorData
中报告错误文件名的错误。

就我而言,使用 R2023b update 7 时遇到了问题。如果您可以编辑您的安装,下面的链接建议将

createFromCodeCoverageCollectorData.m
编辑为:

if files(1).status == "FAILED"
    warning(message('MATLAB:coverage:result:InvalidFileForCoverage', ...
        files(1).path));
end

在工作中,我无法编辑我的安装,因此必须在警告上放置一个断点以检查真实的文件名。

一旦您报告了正确的有问题的文件,那么希望您可以修复您的文件。

就我而言,m 文件中的函数名称错误,这只是 mlint 警告而不是语法错误,但足以触发警告。

参见: https://uk.mathworks.com/matlabcentral/answers/2048192-why-do-i-get-a-warning-that-the-code-coverage-result-is-empty-because-the-file-is -无效

© www.soinside.com 2019 - 2024. All rights reserved.