在 Matlab 的命令 window 中显示 TODO/FIXME 报告
Display TODO/FIXME report in Matlab's command window
使用命令
checkcode('function.m')
您可以运行 m 文件上的代码分析器并在命令window 中输出报告。
TODO/FIXME 报告有什么方法可以做到这一点吗? (无需 cd 到包含该函数的文件夹并在整个目录中手动 运行 它)
奖金:如果是这样,是否也可以创建自定义标签?在 Eclipse 中,您可以为不同的 purposes/different 人创建自定义 TODO 标签,如 "MTODO" 和 "JTODO",并分别显示。这在 Matlab 中可行吗?
在此先感谢您的帮助!我将继续我的 google 搜索,如果我找到了什么,我会 post 结果。
我最终编写了自己的代码检查器,它在指定文件夹中的每个 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
您可以使用内部函数dofixrpt
。但是,这 return 是报告中显示的 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报告中,您可以通过指定自定义标记(默认为NOTE)来查找TODO和FIXME以外的标记。不幸的是,您只能指定一个。如果您打算在 dofixrpt
中查找并稍作修改,则很容易让它查找更多内容。
最后,您还可以向 MathWorks 提出增强请求,以提供类似于 checkcode
的命令,它只会为您执行此操作,并 return 在命令行中显示结果。看起来这对他们来说很容易做到,我很惊讶他们还没有这样做,因为他们已经为 helprpt
、coveragerpt
、[=20 做了类似的事情=]等
希望对您有所帮助!
使用命令
checkcode('function.m')
您可以运行 m 文件上的代码分析器并在命令window 中输出报告。 TODO/FIXME 报告有什么方法可以做到这一点吗? (无需 cd 到包含该函数的文件夹并在整个目录中手动 运行 它)
奖金:如果是这样,是否也可以创建自定义标签?在 Eclipse 中,您可以为不同的 purposes/different 人创建自定义 TODO 标签,如 "MTODO" 和 "JTODO",并分别显示。这在 Matlab 中可行吗? 在此先感谢您的帮助!我将继续我的 google 搜索,如果我找到了什么,我会 post 结果。
我最终编写了自己的代码检查器,它在指定文件夹中的每个 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
您可以使用内部函数dofixrpt
。但是,这 return 是报告中显示的 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报告中,您可以通过指定自定义标记(默认为NOTE)来查找TODO和FIXME以外的标记。不幸的是,您只能指定一个。如果您打算在 dofixrpt
中查找并稍作修改,则很容易让它查找更多内容。
最后,您还可以向 MathWorks 提出增强请求,以提供类似于 checkcode
的命令,它只会为您执行此操作,并 return 在命令行中显示结果。看起来这对他们来说很容易做到,我很惊讶他们还没有这样做,因为他们已经为 helprpt
、coveragerpt
、[=20 做了类似的事情=]等
希望对您有所帮助!