文件交换

图像缩略图"itemprop=

使用Doxygen与Matlab

版本1.8.0.0(87.4 kB) 豆腐
提取从Matlab .m文件中自动注释使用doxygen来生成文档
4.5
30次评级

25下载

更新06年4月2011年

查看版本历史记录

查看许可协议

编者按:这个文件被选为MATLAB中心本周精选

此包允许您使用doxygen从MATLAB,MATLAB .M文件中提取自动注释以生成文档。

该软件包提供:
- 用于过滤.M文件的Perl脚本(M2cpp.pl),以便doxygen可以理解它们
- 必须根据代码的位置修改的doxyfile文件(doxygen配置文件)的模板
——documentationGuidelines。m,一个.m文件,它描述了您应该如何注释您的代码,以便Doxygen可以提取它并创建良好的文档
——classDocumentationExample。M:描述类可能注释的.m文件
- Doxygen从两个.m文件(参见Doc/html/index.html)自动生成的所有文档(html格式),它提供了关于安装和如何编写Doxygen注释的信息。

安装详细信息:
- 您需要安装Doxygen软件(所需版本1.5.9或更新(用版本1.7.1测试))
-你需要安装perl (perl是Matlab自带的,通常位于$matlabroot\sys\perl\win32\bin)
- 将doxygenmatlab.zip解压缩到c:\ doxygenmatlbab(例如)
—从C:\DoxygenMatlbab目录下获取Doxyfile文件,替换默认的Doxygen提供的Doxyfile文件
- 编辑doxyfile文件(或使用doxygen提供的doxywizard工具)来修改一些设置:
o EXTENSION_MAPPING = m = c++
o FILTER_PATTERN = * m = C: \ DoxygenMatlbab \ m2cpp.pl
o PERL_PATH=
o输入= <文档代码所在的目录>
o OUTPUT_DIRECTORY=<要生成文档的目录>
o strib_form_path = <文档代码所在的目录>

Windows用户注意事项:
在某些情况下,.pl文件和perl可执行文件之间的关联没有很好地配置,导致在运行doxygen时“参数必须包含文件名-1在C:\DoxygenMatlab\m2cpp.pl line 4”。要解决这个问题,您应该在Windows命令提示符("cmd")中执行以下行:

”assoc . pl = PerlScript
ftype perlscript = c:\ program files \ matlab \ r2010b \ sys \ perl \ win32 \ bin \ perl.exe%1%*
(不要忘记将perl.exe文件的路径替换为您在上面一行中的路径)

引用

Fabrice(2021)。使用Doxygen与Matlab(//www.tatmou.com/matlabcentral/fileexchange/25925-using-doxygen-with-matlab),matlab中央文件交换。检索到

意见及评分(82.

莱昂内尔三合赛

嗨,我试图得到你的doxymatlab与ubuntu的完整文档。
不幸的是,它不起作用的图形......也许我错过了一些东西。
1-我在我的电脑上复制了你的存储库
2-我运行convertTounix.sh
3-我打开了doxywizard并运行脚本
我得到了文档,但没有类层次结构和图。
在我的电脑上,我已经为Python程序和图表和依赖性使用了Doxygen。
你有推荐信给我吗?
致以最亲切的问候

Alfredo Bagala.

非常感谢。那是问题。现在它可以正确工作。

科兹洛夫萨夏

嗨阿尔弗雷多,
你有没有被任何Perl解释器?如果没有,这必须是您的警告的原因。
我正在使用ActivePerl,它很好地工作与这个程序。

Alfredo Bagala.

嗨,我正在尝试使用测试文件使用此包。但是,在编译阶段,我总是找到相同的警告:
生成文件源/ classdocumentationexample.m的代码...
“perl”不能被识别为内部或外部命令、可执行程序或批处理文件。

输出HTML只报告文件列表,但不报告任何其他数据(代码或注释)。

有人会知道如何帮助我吗?多谢

尼科斯成玻璃

你好,
我发现这贡献非常有趣。我试图使用它,但没有成功(W10 OS),甚至从Simone Gaiarin Git存储库开始。实际上我得到了一个文档,但函数描述完全是空的(即使有一个有效的函数标题在开始时与@File)。我也花了很多时间尝试重新参加doxyfile并弄清楚为什么并解决这个问题。有人在这里有一个线索,甚至是一个小的人可以做到这一点吗?谢谢。

Nicoleta coroiu.

你好
有人与这个脚本成功了吗?我在perl中运行m2cpp.pl,它什么都不执行!我用m2cpp.pl过滤器使用doxygen,但我没有文件!有人帮我吗?

迈克尔·多尔

你好,
我也有麻烦的解决方案的Windows用户(windows7)。有解决办法吗?
谢谢,
迈克尔

Jessica de Abreu.

运行“dos2unix m2cpp.pl”并将过滤器_patterns调整为filter_patterns = perl your_path / m2cpp.pl似乎为我做了诀窍。但是,生成的文档与用于示例文件的DoxygenMatlab提供的文档不匹配。例如,未列出事件,而不是列出所有属性。如果我找到一个,我会继续工作并发布解决方案。

J O.

嗨,大家好,

我遇到了一些麻烦,因为文档高亮显示或源文件的链接不能正常工作。
在我开始使用M2cpp.pl作为一个输入滤波器之后,并且不是过滤模式,但每个似乎都按预期工作:

# INPUT_FILTER标签可以用来指定一个程序,doxygen应该
#调用来过滤每个输入文件。Doxygen会调用过滤程序
#通过执行(通过popen())命令 ,其中
#是INPUT_FILTER标记的值,是一个
#输入文件。然后Doxygen将使用过滤器程序编写的输出
#到标准输出。如果指定了FILTER_PATTERNS,则该标记将为
#忽略。

INPUT_FILTER = "perl m2cpp.pl"

# FILTER_PATTERNS标签可以用于指定每个文件模式上的过滤器
# 基础。doxygen会将文件名与每个模式进行比较并应用
#过滤器如果有匹配项。过滤器是表单的列表:
# pattern=filter (like *.cpp=my_cpp_filter)。详见INPUT_FILTER
#关于过滤器的使用情况。如果filter_patterns为空,则输入_filter
#应用于所有文件。

FILTER_PATTERN =

亲切的问候
乔纳斯

彼得Nemeth

你好!
尝试了assoc解决方案,但是“参数必须包含文件名-1”消息仍然存在。如何进行呢?
提前致谢,
/彼得N.

西蒙Gaiarin

由于这段代码没有更新自2011年以来,我已经更新这段代码到一个github仓库。我希望人们能够在代码和文档方面为它做出贡献。

代码如下:
https://github.com/simgunz/doxymatlab.

我将尝试包括下面建议的一些补丁。

托姆成立的

在OS X上使用此功能需要进行一些修改。
1 -修改“/usr/bin/perl.exe”为“/usr/bin/perl”
2 - 在m2cpp.pl上运行dos2unix

同样,Guillaume JACQUENOT在2010年11月18日指出,带有连续行(“…\n”)的函数声明不能正常工作。

否则,此脚本一直很有帮助!

mmeyer89

这是很有用的工作,但是它不适用于名称空间。下面是我的解决方案。

1.在守则之后的M2CPP开头添加

#extract命名空间
$namespace = ";
Foreach (split /\//, $fname) {
if($ _ =〜/ ^ \ + /){
$ namespace = $ namespace.substr($ _,1)。'。';

2.设置$namespace为$className的前缀

例如:替换
$ classdef =“class”。$ classname。“:public $ classihherituce”;
通过
$ classdef =“class”。$命名空间。$ classname。“:public $ clussinherance”;

可以正确地检测到继承性,并且还可以按名称空间对类列表进行分组。我对结果很满意。

Felipe Viana

伟大的贡献。谢谢! !

Manpreet Dhimam.

你好,

我正在为.m文件生成一个doxygen文档.firstly我通过简单地编辑doxygen.conf文件来生成它,我添加file_patterns = .m和extension_mapping = .m = c ++。但它没有产生正确的.m文件的正确文档。现在我追随你的帖子“使用doxygen与matlab,下载”doxygenmatlab“包。我试图了解所有的东西,但无法理解。引导我要做什么?

iamnotshaw

可以在说明和doxyfile中拼写错误。应该是filter_patterns.

否则doxygen忽略了标签

Ingo

很好的文件,使用了很长时间。

但是,现在最终更改为Windows 7我收到错误/警告消息警告:“警告:找到';'在解析初始化程序列表时!(Doxygen可能会被没有分号的宏呼叫混淆)“而且我的.m文件未被解析。有人知道解决方法吗?!(Sonsoles早些时候有同样的问题,但没有发布解决方案;-()

西蒙Gaiarin

这个脚本很棒!

如果还有一个方法可以正确地生成去掉注释的源浏览器,那就太棒了。

我尝试用FILTER_SOURCE_FILES中使用的perl过滤器从源文件中删除注释。但是从文档到代码的超链接是错误的。

有什么建议吗?

史蒂文

我意识到该函数中的评论是不可能通过这个过滤器提取,即使是“%>”也无法提取。
并且函数输出参数在文档中也没有显示,如果在函数名中使用“…”作为换行符,过滤器就不能正确解析它。

史蒂文

酷,谢谢!我终于成功了。一直停留在错误“参数必须包含文件名”

我用这个解来修正它

http://stackoverflow.com/questions/4234581/argv-is-empty-using-activeperl-in-windows-7

Option1不能很好地修复它,但option2可以。

马克Mikofski

Adithya

谢谢你创造了这个法布里斯。
我会看看它并提供反馈。

-Adithya

埃卡德

你好法布里斯。

我叫埃卡德·克鲁兹。我是两个sourceforge项目背后的开发者:
莫里茨:http://sourceforge.net/projects/moritz/
Mulanpa:http://sourceforge.net/projects/mulanpa/

两者都是开源的免费软件项目,应该用作DOXYGEN的扩展,以创建算法,以创建描述DASSI Shneiderman或UML活动图所示的图表。

今天在两个项目中。
Project Moritz项目的快照
http://sourceforge.net/projects/moritz/files/snapshots/2013_05_27/
包含在windows发行版Moritz2_WIN32_2013_05_27.zip
在文件夹LangPack\pascxal你的过滤器。你会在文件中找到
Readme_2013_05_27.txt.

以下段落:

由于这种分布还包含脱氧构型
使用版本1.9.08语言Matlab和Pascal是
金宝app还支持在关联中添加两个第三方过滤器
Langpack文件夹:

Matlab:
过滤器:m2cpp.pl
作者:法布里斯
互联网:
//www.tatmou.com/matlabcentral/fileexchange/25925-using-doxygen-with-matlab

帕斯卡:
过滤器:pas2dox.exe
作者:达伦·鲍尔斯
互联网:http://sourceforge.net/projects/pas2dox

我希望这对你来说是OK的,但请不要犹豫,如果你
对此有一些疑问。你可以在两个项目中找到一个论坛部分。

最好的问候,
Eckard克洛茨。

Sonsoles

谢谢法布里斯给你的文件。
现在它在我的matlab工作,但我想知道是否使用此图形选项。我的意思是课堂图和呼叫者图表等。
再次感谢

杰森

我不得不更新m2cpp.pl以用于我的Mac上的线路结尾。在Vim中,我使用了“:设置ff = unix”,这是技巧。

Sonsoles

你好! !我在我的matlab代码运行Doxygen和问题是,它应该显示一些图形以及。
我得到以下错误:
C:/users/sonsoles/documents/fortran/kompressorkoden/get_o_over_c.m:23:警告:找到';'在解析初始化程序列表时!(doxygen可能会被没有分号的宏调用混淆)
C: /用户/ Sonsoles /文件/ Fortran / Kompressorkoden / get_omega_s。m:21: warning: Found ';' while parsing initializer list!(doxygen可能会被没有分号的宏调用混淆)
C: /用户/ Sonsoles /文件/ Fortran / Kompressorkoden / Xfunc。m:21: warning: class for member ' m::::::calculate:' cannot find。

谢谢您的帮助

Aurelien Queffurust.

我在Windows XP R2011b下。当我运行Doxygen时,对于正在处理的每个m -文件,perl文件m2cpp.pl都会显示在屏幕上。我必须手动关闭文件。
此外,您的Perl文件需要更改所有语法,因为过滤器仅从%>以%>开头的行。对于函数描述,相同的问题,我们必须使用特定的语法。

另一个提交的“mtoc++ - Doxygen filter for Matlab and tools”更好,它不需要在我们的代码中做任何改变。

我绝对更喜欢m2html,即插即用。

哈坎哈坎

你好法布里斯!

最后 - Poh - 我有M2CPP在Windows 8中运行Matlab 7.0.4!

首先,我遇到了有关程序访问权限的问题,必须以管理员身份运行,还必须在注册表中打补丁,使perl接受命令行参数。

然后m2cpp.pl在第43行崩溃。通过插入修改后
"use FileHandle;"第一行
替换第43行
“开放(我的美元,my_fic美元);“
通过

我的$in = new FileHandle;#修复旧版本的Perl
(- >打开美元my_fic);

东西跑好! !

感谢您的提交
哈坎Friden
hakan.friden@frideninfotech.eu

彼得

问题:这是应该为呼叫图工作,喜欢在m2html上吗?

将正确生成*继承*图形。但我没有看到任何函数或类方法的任何呼叫图。

谢谢

白雪王

好的,我刚刚发现,我必须使用\fn关键字与输入名写入完全相同的m2cpp生成。例如,我需要添加一行

%> \ fn my_func_name(在par1中,在par2中)

谢谢m2cpp,一个非常好的工作!

白雪王

我试图在windows 7下使用doxygenwizard 1.8.2。我相信我已经遵循了所有的指示,但我只得到一个空的index.html页面。有什么问题吗?下面是我的日志

添加自定义扩展映射:.m将被视为语言c++
搜索包含文件…
搜索示例文件…
搜索图片......
搜索DOT文件......
搜索msc文件…
搜索文件以排除
搜索文件处理…
查找C:/Project/xxx目录下的文件
读取和解析标记文件
预处理C: /项目/ xxx / xxx1.m……
解析文件C: /项目/ xxx / xxx1.m……
预处理C: /项目/ xxx / xxx2.m……
解析文件C:/project/xxx/xxx2.m ...
建筑组列表…
建立目录列表…
建筑名称空间列表…
构建文件列表…
建筑课程列表...
将文档与类关联…
计算类的嵌套关系…
构建示例列表…
搜索枚举......
搜索文档类型…
搜索通过using declarations导入的成员…
搜索包括使用指令…
搜索有文档记录的变量…
建筑成员列表......
寻找朋友……
搜索文件定义......
计算类继承关系…
计算类使用关系…
刷新缓存的模板关系已成为无效......
创建模板实例的成员......
计算类关系……
添加枚举值到枚举…
搜索成员函数文档…
建立页面列表...
搜索主页…
计算页面关系……
确定群体的范围......
排序列表…
释放入口树
确定记录了哪些枚举
计算成员关系……
递归构建全会员列表......
将成员添加到成员组。
计算成员参考资料......
继承文档…
生成磁盘名称......
添加源引用…
添加xrefitems……
分拣成员列表......
计算目录之间的依赖关系......
生成引文页面......
计数数据结构......
解析用户定义的引用…
在文档中找到锚和节…
结合使用关系……
向索引页添加成员…
生成样式表……
生成示例文档......
生成文件源......
生成文件文档…
生成页面文档…
生成组文档…
生成类文档…
生成名称空间索引…
生成图表信息页面......
生成目录文档…
生成索引页……
生成页面索引...
索引生成模块……
生成名称空间索引…
生成命名空间成员索引...
生成带注释的复合索引…
生成按字母顺序化合物指数......
生成分层类索引...
生成指数成员……
生成文件索引...
生成文件成员索引…
生成示例指数……
确定索引列表…
使用符号缓存使用16/65536 HITS = 192次misses = 16
查找缓存使用0/65536命中=0错过=0
完成了……
当启用GENERATE_HTMLHELP时,搜索引擎(SEARCHENGINE)应该被禁用。我来帮你。
*** doxygen已完成

塞巴斯蒂安广巧克

塞巴斯蒂安广巧克

你好,
我真的很喜欢doxygen集成,从现在开始我会使用它。
在我看来,只有一个次要的功能缺失了。

在定义后,我想在课堂变量上发表评论。在某种程度上可能是有可能还是有快速修复以启用该工具?

例如
classdef CameraModel
属性
ImageSize = [640480];%>摄像头图像大小(像素为x y)
结束
结束

抱歉,我不是很熟悉perl,所以我不能自己做它。

印度证券交易委员会

乔凡尼

实际上有人帮助了我已经解决了这个问题。文件m2cpp.pl是for for dos的。一个人必须重新格式化Linux,以便让一切正常工作(我用Tofrodos包做了它)。该计划很棒:-)

乔凡尼

它对我来说*几乎*有效,我怀疑它可能与Linux问题有关。我收到以下错误信息

/media/sda5/Giovanni/Utilities/Matlab_utilities/Matlab_exchange_downloads/DoxygenMatlab/m2cpp.pl: not found . sh /media/sda5/Giovanni/Utilities/Matlab_utilities/Matlab_exchange_downloads/DoxygenMatlab/m2cpp.pl: not found . sh

在此之后的HTML文件将包含任何文档(因为不会产生c++风格的注释)。但是m2cppp .pl在那里,我已经尝试移动它,但仍然收到相应的错误消息。谁能告诉我,我应该从哪里开始寻找解决这个问题的方法?提前谢谢。

arguilar.

伟大的贡献,非常感谢!

汤姆

亲爱的法布里斯,
您的包是否能够记录使用旧类规范的代码(在使用“classdef”之前)?

非常感谢,
汤姆

布莱恩

埃卡德

大家好

我得到了一个错误使用珍珠脚本如下:

读取和解析标记文件
预处理D: / Daten Projekt . . / src / fcn.m……
不能在D:\Daten\Projekt\..\Filter\m2cpp.pl第47行(正式的第53行)中使用未定义的值作为文件句柄引用。
解析文件D: / Daten / Projekt / . . / src / fcn.m……

我尝试执行Bastian(07.07.2011)的补丁,但唯一的行号从43变成了47。

我在Windows XP-SP3上使用Matlab 2009B的珍珠版本与Doxygen 1.7.4

谢谢你的帮助,
Eckard克洛茨。

巴斯蒂安

法布里斯,
再次感谢你的精彩剧本。

如果能够在文档中隐藏一些信息,这将是一个很好的改进:
->为公共api隐藏隐藏的方法/属性。
->隐藏set.my_property/get。类中的My_property方法在文档中是无用的

巴斯蒂安

法布里斯,
我已经解决了前面的包问题,修改PERL脚本m2cpp.pl:

在第42行(在foreach $ my_fic之后)
$包=“”;
If ($my_fic =~ /^[^\+]*\+(.*)[\/\\].*\.m/g]){/ * / * /
$包= 1美元。“。”;
$包=〜s / [\/\\] +/\./ g;

在第176和180行(当定义$classDef时:
替换:$classDef = "class ".$className
$classDef = "class ".$package.$className .

使用此修补程序,您的代码将与Matlab软件包兼容!

巴斯蒂安

法布里斯,谢谢你的好剧本。

但是,是否可以包括对包装的支持?金宝app
例如,如果你有:
./ +PackageName/classname.m.
。/ ChildClassName.m
其中ChildClassName < PackageName。ClassName,然后脚本结合Doxygen将为ClassName创建2个不同的页面:
-一个ClassName包含所有方法和属性的定义
-一个用于PackageName。ClassName根本不包含任何定义(只有继承关系图)

也许您可以使用c++名称空间来解决这个bug?
(或者也许Java软件包更适合实现嵌套包如./ adkage1/ adpackage2/myclass.m)

如果你能帮忙的话,提前感谢你!

PS:对于那些像Cedric谁有一些问题与"< handle"继承,你必须更新你的Doxygen安装:-)

伊恩

Doxygen的精彩接口,很容易实现。

一个非常小的niggle是Perl脚本顶部的shebang,在最新的更新点到perl.exe - 这需要在它将在工作之前编辑* nix / os x ...

LePhlaux

Fabrice,谢谢你的快速回复。该标志已经设置为是。但是,与此同时,我意识到Doxygen适用于位于标准文件夹中但不在类文件夹中的私有目录:

foo /私人的东西。m %作品
foo / @myclass /东西。m %作品
foo/@myclass/private/stuff.m%不会出现在doxygen中

问候

豆腐

LeFlaux,我猜你的问题是Doxygen问题(也许EXTRACT_PRIVATE在你的Doxyfile中设置为NO)。如果没有,你能给我一个测试用例吗?这样我可以重现你的问题。

LePhlaux

亲爱的法布里斯,

谢谢你的这个伟大和有用的软件!只有一个小问题:我在我的matlab项目中得到了名为“private”的目录。不显示包含在这些目录中的.m文件的文档。有什么建议吗?

文森特

当属性名以“end”(例如“endDate”)开头时,也会出现同样的问题(参见2011年3月11日的帖子)。

guillaume

非常感谢这个伟大的工具!

文森特

我在“@”文件夹类定义上使用它时遇到了一个小问题。看起来很奇怪,当我的函数(定义在@文件夹内的外部.m文件中)的名称以“m”字母开头时,这个函数不会出现在生成的类描述中。当我在另一个字母中更改它时,它就可以正常工作了。任何想法?
谢谢

Evgeny公关

嗨法布里斯,

我注意到了一个小问题。从来自Package-Directory的类中的多重继承,基类名称错误地定义。

例如:
+我-软件包目录
Baseclass.m - 基类IN +我的目录
SomeClass。m -一些类在+我的目录

“SomeClass”定义:
classdef someclass 结束

创建文档时,获取SomeClass从“My”,A不是来自“My.BaseClass”或“Baseclass”的文档。:)

豆腐

嗨,塞德里克,

- M2CPP.PL脚本完全支持继承语法(ClassDef MyClass <句柄):您能否向我发送一个测试文件,以便我可金宝app以看到您使用此语法经历此类错误的原因?
你的第二个问题是Doxyfile中的编码配置问题(你不应该使用UTF-8编码,但可能使用ISO8859-1编码)

问候,

豆腐

塞德里克Boudinet

看起来不错,但是我确实遇到了一些问题:我的一个脚本是派生自'handle'的类定义:
classdef MyClass <句柄
解析器给出一个错误,因为<没有被>关闭
有办法避免这种情况吗?
另一个问题是解析器会给出非ascii字母的错误(é, è,…)

杰克

我一直在使用和享受你的产品。我有一个简短的问题。
1)我使用Matlab 2007a,只有设防,即,不是课程。我无法获得doxygen要使用graphviz或附带的图形库创建任何图形。我熟悉Doxygen,并想知道您的产品与Doxygen一起支持通过功能呼叫的图形生成吗?金宝app我使用一个在线发布的类似MILIAR PERL脚本,将来自.c到.c转换为.c,它可能会在doxygen中生成图表。谢谢您的时间,在下面包含.m,其中没有生成图形(我在doxygen中启用了图形生成,并且我认为的所有设置都是正确的aslwell)。
%> @brief函数的简要说明
%>
%>更详细的描述。
%>
% > \ latexonly
%> $ \ bigl(\ begin {smallmatrix}
%> a&b \\ c&d
% > \ {smallmatrix} \ bigr)美元
% > \ endlatexonly
%>
%> @param arg1第一个参数
%> @param arg2第二个参数
%>
%> @retval out1第一个输出变量的返回值
% > @retval out2
% ======================================================================
函数[out1, out2] = hhh(arg1, arg2)
着干活=最长;
out2 = __arg1;
C = FB(OUT1);
结束



% ======================================================================
%> @brief函数的简要说明
%>
%>更详细的描述。
%>
% > \ latexonly
%> $ \ bigl(\ begin {smallmatrix}
%> a&b \\ c&d
% > \ {smallmatrix} \ bigr)美元
% > \ endlatexonly
%>
%> @param arg1第一个参数
%>
%> @retval out1第一个输出变量的返回值
% ======================================================================
函数[out1] = fb(arg1)
着干活=最长;
结束

2)当我使用
/ latexonly
/ Endlatex仅限
Doxygen命令在latex中放入一个矩阵,我的矩阵/方程有“///”注释表示c++,这不是问题,但如果有一个简单的修复,我想知道。

米哈伊尔·Konnik

谢谢你的更新,fabrice!工作完美。
Linux用户可能会发现我为m2cpp.pl工具调整的Doxyfile很有用:
http://mikhailkonnik.pbworks.com/w/file/matlab2doxygen.zip

顺便问一下,有人知道如何使用LaTeX在Doxygen的文档中添加引用吗?我的意思是,一个人在文档中引用命令,而那些引用的资源应该出现在doxygen生成的文档中。什么好主意吗?

LePhlaux

真棒!:)非常感谢这个工具!

注意m2cpp.pl: Linux用户应该将第一行更改为
#!/ / usr / bin / perl

Guillaume JACQUENOT

这似乎是一个很好的功能。

我注意到一个小虫

当我在多行声明函数时,无法识别不同的参数

例如,类似这样的内容将产生警告,并且不能正确显示

%> @param aaaaaa
% > @param BBBBBBBB
% > @param预备
% > @param DDDDDDDD
%> @Param EeeeEeeeeee
%>
%> @retval第一个输出变量的返回值
第二个输出变量的RTex返回值

function [Res,RTex] = Compute_residual(AAAAAA,BBBBBBBB,…
预备……
DDDDDDDD,......
EEEEEEEEEE)

豆腐

我刚刚更新了m2cpp.pl脚本以更好地支持:金宝app
- @ -Folder类定义
-多类继承(classdef a < b & c)
-类属性(密封的,隐藏的,…)
事件(在生成的文档中转换为枚举事件)
- 私人/保护/寄宿方法
-私人/受保护/公共财产
-常量属性(及其初始化)
-抽象类(在生成的文档中转换为虚函数)
- 现在读取函数声明中的忽略参数(〜)在生成的文档中读取并转换为argoRedarg

Evgeny公关

法布里斯,请在文件交换系统更新你的文件。上一个版本工作得很好!

西蒙王子

伟大的效用,谢谢。关于使用多文件类使用它的问题 - 我将它与一个文件中的类一起工作,但是当我在@folder中设置一个类时,我似乎没有基于函数的方法(在单独的文件中)位于我的doxygen派生类中。

green_fr

遗传的另一个奇怪之处。假设父类继承了两个类Son1和Son2。在父类中有一个由Son1::doIt()重载的方法Father::doIt(),但由Son2直接从父类继承。
奇怪的点是在Son2文档中,您将看到关于父亲:: doit()(即正常)的评论,然后是«在Son1»(这是奇怪的 - 或者可能这是一个标准的C ++文档协议?)

green_fr

我的意思是,简要的抽象方法。有以下示例:

方法(摘要)
函数calcPMInitiale (obj)
结束
投影(obj,迭代)
结束

第一个方法将被检测到,但不是第二个(MatLab的正确定义)。

green_fr

但我认为它不适用于抽象方法…

green_fr

Evgeny公关

定义类的小校正(ClassDef(隐藏,密封)的SomeClass)正确处理:
如果(/ (^ \ s * classdef) \ s * (\ s * \ (\ w, \ [s] + \ s * \)) ? \ s * ((\ w \ d_) +) \ s * < ? \ s * ((\ w \ d _]+)?(.*)/)

Evgeny公关

我认为文件“m2cpp pl”中的这一行有问题:
如果(/ (^ \ s * classdef) \ s * (\ s * \(枚举\ s * \)) ? \ s * ((\ w \ d_) +) \ s * < ? \ s * ((\ w \ d _]+)?(.*)/)

“枚举”是没有文档记录的属性吗?
我纠正如下:
如果(/ (^ \ s * classdef) \ s * (\ s * \ ((\ w) + \ s * \)) ? \ s * ((\ w \ d_) +) \ s * < ? \ s * ((\ w \ d _]+)?(.*)/)

并添加了其他条件:
...
别的

$ className = 3美元;
$ classdef =“class”。$ classname。“:公开4美元”;

这是有效的,但我认为这不太正确。

Evgeny公关

你好!

我发现了一个漏洞。
定义一个带有属性的类:
classdef(隐藏)SomeClass < handle
结束
...或者使用任何其他类属性。
这种定义被错误地解析。

Fabrice,你可以解决这个错误吗?
我不明白Perl中的任何东西。:)

Evgeny公关

你好!
不要使用matlab的perl!它无法正常工作。使用ActivePerl。

Erik Gudmundson

谢谢你,法布里斯,一个非常好的工具!正如Felix所指出的,似乎只支持包含在一个.m-file中的类,而不支持文件夹(@-)结构。金宝app此外,私有类属性显示为公共类属性。你能解决这个问题吗?我知道Matlab风格的访问,SetAccess,和GetAccess可能是棘手的,但它将真的是有帮助的。谢谢!

迈克

此工具是否遵守协作图?当使用另一个类组成类时,它不会在协作图中显示。协作图始终与类图相同。难道我做错了什么?

Felix.

非常感谢这个伟大的工具。

当类在包中时,类层次结构是否没有被正确地检测到?

Matt McDonnell.

法布里斯,
感谢您的关注,将扩展名从m改为。m修复了1.7.1中的问题。

豆腐

马特,
我试着使用Doxygen 1.7.1,我想我复制了你的问题。
我猜这是一个Doxygen bug,但作为解决方案,你可以尝试改变Doxyfile中的EXTENSION_MAPPING的值:
EXTENSION_MAPPING =。m= c++(不要忘记m前面的点)。
你能告诉我这是否解决了你的问题吗?

Matt McDonnell.

非常好的工具-非常感谢!
我发现我必须使用doxygen 1.6.1,而不是1.7.1(最新)。
我看到从http://stackoverflow.com/questions/2701671/problem-with-input-filter-using-doxygen-1-6-3-on-windows-xp
你以前也见过类似的情况。

豆腐

编辑,
我更改了m2cpp.pl文件,以便unix用户可以使用它。
感谢您的反馈。

艾德

我在UNIX(Linux)下使用脚本(Linux)的脚本出现了问题,因为Perl脚本的第一行定义了使用的解释器(/ usr / bin / perl),使用回车(\ r)而不是a线饲料(\ n)。由于此,无法找到Perl解释器。由于第一行仅在UNIX环境中进行了意义,因此我认为应该将第一行(至少)的线结束字符更改为行馈送。

豆腐

Mike,您只能评论功能块外的变量(这是一个doxygen限制),即:
- 例如,传递给函数的参数:
%> @brief函数的描述
%> @param a这是对var a的描述
%> @param b这是对var b的描述
函数foo (a, b)
...
结束

- classdef定义中的属性,例如:
classdef foo
属性
%>这是对var a的描述
一个
%>这是对变量b的描述
b
..
结束
...
结束

米哈伊尔·Konnik

法布里斯,谢谢你的节目!
我唯一的问题是:是否有可能通过这样的脚本来注释变量?我是说,如果我有

a = [1,2,3,4];%>这是var的描述

它可以在doxygen-maved的文档中显示吗?

豆腐

Lien-Chi,

也许你的perl exe没有正确安装(它似乎是由Matlab提供的perl的情况)。你可以尝试以下方法:

1.在Doxyfile中设置以下变量:
perl m2cpp.pl INPUT_FILTER =
FILE_PATTERNS = * 00

2.如果它不工作,你应该尝试安装ActivePerl:与这个版本的perl,一切工作良好。

拉恩

为什么我收到了下面的信息?参数必须包含文件名-1在c:\用户\用户\桌面\DoxygenMatlab\m2cpp.pl行4

Joydeep

好了!如果它也可以通过处理类似这样的东西来生成枚举类,将是有用的,

类定义(枚举)颜色< int32

枚举
红色(0)
绿色(1)
黄色(2)
结束

结束

Joydeep

雷蒙德

这正是我所寻找的,看到它能在子函数和面向对象代码上工作真是太棒了。这是mtoc的一个很好的替代,非常好用。感谢作者简化了我的生活,提高了我的生产力。辉煌!

MATLAB版本兼容性
创建R2008a
与任何版本兼容
平台兼容性
窗户 macOS Linux.

社区宝藏狩猎

找到Matlab Central中的宝藏,并发现社区如何帮助您!

开始狩猎!