使用命令
checkcode('function.m')
您可以在m文件上运行代码分析器,并在命令窗口中输出报告。 有没有办法为TODO / FIXME报告做到这一点? (无需cd到包含该功能的文件夹,并在整个目录中手动运行)
奖励:如果是这样,是否也可以创建自定义标签?在eclipse中,您可以为不同目的/不同的人创建自定义TODO标签,如“MTODO”和“JTODO”,并将它们分开显示。这可能在Matlab中吗? 在此先感谢您的帮助!我将继续我的谷歌搜索,如果我发现了什么,我会发布结果。
答案 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 dofixrpt
或edit dofixrpt
以查看有关其功能的详细信息(它基本上是对%.*TODO
和%.*FIXME
的正则表达式搜索。)
在HTML报告中,您可以通过指定自定义标记找到TODO和FIXME以外的标记(默认值为NOTE)。不幸的是,您只能指定一个。如果您要在dofixrpt
内查看并稍微修改它,那么很容易让它看起来更多。
最后,您还可以向MathWorks提出增强请求,以提供类似于checkcode
的命令,该命令将为您执行此操作并在命令行返回结果。看起来这对他们来说很容易做到,我很惊讶他们还没有完成它,因为他们为helprpt
做了类似的事情,{{1 },coveragerpt
等。
希望有所帮助!