在Matlab的命令窗口中显示TODO / FIXME报告

时间:2016-10-12 08:48:52

标签: matlab command window report todo

使用命令

checkcode('function.m')

您可以在m文件上运行代码分析器,并在命令窗口中输出报告。 有没有办法为TODO / FIXME报告做到这一点? (无需cd到包含该功能的文件夹,并在整个目录中手动运行)

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

2 个答案:

答案 0 :(得分:0)

我最终编写了自己的代码检查程序,在指定文件夹中的每个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

答案 1 :(得分:0)

您可以使用内部功能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报告中,您可以通过指定自定义标记找到TODO和FIXME以外的标记(默认值为NOTE)。不幸的是,您只能指定一个。如果您要在dofixrpt内查看并稍微修改它,那么很容易让它看起来更多。

最后,您还可以向MathWorks提出增强请求,以提供类似于checkcode的命令,该命令将为您执行此操作并在命令行返回结果。看起来这对他们来说很容易做到,我很惊讶他们还没有完成它,因为他们为helprpt做了类似的事情,{{1 },coveragerpt等。

希望有所帮助!