【问题标题】:Display TODO/FIXME report in Matlab's command window在 Matlab 的命令窗口中显示 TODO/FIXME 报告
【发布时间】:2016-10-12 08:48:51
【问题描述】:

使用命令

checkcode('function.m')

您可以在 m 文件上运行代码分析器并在命令窗口中输出报告。 有什么方法可以对 TODO/FIXME 报告执行此操作吗? (无需 cd 到包含该函数的文件夹并在整个目录中手动运行它)

奖励:如果是这样,是否也可以创建自定义标签?在 Eclipse 中,您可以为不同的目的/不同的人创建自定义 TODO 标签,如“MTODO”和“JTODO”,并分别显示。这在 Matlab 中可能吗? 提前感谢您的帮助!我将继续我的谷歌搜索,如果我发现了什么,我会发布结果。

【问题讨论】:

    标签: matlab command window report todo


    【解决方案1】:

    您可以使用内部函数dofixrpt。但是,这将返回报告中显示的 HTML,而不是在命令行中显示信息。

    % Run the report and show it
    cd('myfolder')
    dofixrpt;
    
    % Alternatively, get the HTML of the report directly
    html = dofixrpt;
    
    % Write the HTML to a file
    filename = tempname;
    fid = fopen(filename, 'w');
    fprintf(fid, '%s', html);
    fclose(fid);
    
    % View the HTML file
    web(filename)
    

    键入which dofixrptedit dofixrpt 以查看有关其作用的更多详细信息(它基本上是对%.*TODO%.*FIXME 的正则表达式搜索)。

    在 HTML 报告中,您可以通过指定自定义标记(默认为 NOTE)来查找 TODO 和 FIXME 以外的标记。不幸的是,您只能指定一个。如果您打算在dofixrpt 中查找并稍微修改它,那么让它查找更多内容会很容易。

    最后,您还可以向 MathWorks 提出增强请求,以提供类似于 checkcode 的命令,该命令将为您执行此操作并在命令行中返回结果。他们似乎很容易做到这一点,我很惊讶他们还没有这样做,因为他们已经为helprptcoveragerptdeprpt 等做了类似的事情。

    希望有帮助!

    【讨论】:

    • 谢谢!我将不得不深入研究代码,但我认为 dofixrpt 有足够的材料来满足我的想法。
    【解决方案2】:

    我最终编写了自己的代码检查器,它在指定文件夹中的每个 m 文件上调用 checkcode

    fld_list = {pwd, 'folder', 'other_folder'};
    nProblems = 0;
    
    for iFld = 1:length(fld_list)
    %     fprintf('Checking %s...\n', fld_list{n});
        files = dir(fullfile(fld_list{iFld}, '*.m'));
        for f = 1:length(files)
            filename = fullfile(fld_list{iFld}, files(f).name);
            customCodeCheck(filename); %custom function
            % check code analyzer
            codeWarnings  = checkcode(filename);
            if not(isempty(codeWarnings))
                fprintf('Problem found in %s\n', files(f).name);
                for iData = 1:length(codeWarnings)
                nProblems = nProblems + 1;
                % print out link to problem
                fprintf('<a href="matlab:opentoline(''%s'',%d)">line %d:</a> %s\n', ...
                    filename, ...
                    codeWarnings(iData).line, codeWarnings(iData).line, ...
                    codeWarnings(iData).message);
                end
            end
        end
    end
    

    您可以为此添加一个 customCodeCheck 函数,用于搜索 TODO 和 FIXME 并提醒您它们的存在

    function customCodeCheck(filename)
        fileContents = fileread(filename);
        toDos = strfind(fileContents, 'TODO');
        fixMes = strfind(fileContents, 'FIXME');
        % do other stuff
    end
    

    【讨论】:

    • 谢谢。这肯定会帮助我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-05
    • 2015-07-02
    • 1970-01-01
    • 2011-08-18
    • 2021-08-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多