面向MATLAB的代码?
我正在使用面向对象的MATLAB编写大规模的应用程序,这让我想到如何记录代码。 如果这是C,我会使用Doxygen。 对于Java,我会使用JavaDoc。 对于类和方法文档应该如何显示以及它应该包含什么,两者大都已经达成了一致的标准。
但是,关于MATLAB代码呢? 我在TMW自己的课程中看到的最多的是在课程顶部的一两个简短句子,我找不到任何专门用于记录大规模MATLAB应用程序的主题。
那么如何记录你的MATLAB类? 任何特定的风格问题或其他工具?
我意识到这个问题是陈旧的,但为了Google的好处:Matlab有一个内置的功能。 你以某种风格(JavaDoc)编写你的评论,他们会被帮助和文档功能拾取。 它可以用来记录类,属性和方法。 这是令人惊讶的完整,但有点挑剔。 文档在这里:
http://www.mathworks.com/help/matlab/creating-help.html
我用以下方式记录我的oo代码:
当你打电话给'doc myClass'时,你会看到(1)开头,后面是你在(2)中添加的句子解释的属性列表,以及显示H1行和其余部分的方法列表帮助(3)如果你点击链接。
另外,我所有的类都继承了一个通用的超类,它实现了调用doc(class(obj))的方法'help',这使得我可以从每个类的实例中获得帮助。
例
%# MYCLASS is a sample class
%# All this text will show up at the top of the help if you call 'doc myClassName'
%#
%# myClass is an example for documentation. It implements the following properties and methods:
%# PROPERTIES
%# myProp - empty sample property (some more explanation could follow here)
%#
%# METHODS
%# myMethod - sample method that calls doc
%#
classdef myClass
properties
myProp = []; %# empty sample property
end %# properties
methods
%%# MYMETHOD -- use %% so that you can easily navigate your class file
function myMethod(obj)
%#MYMETHOD calls up the help for the object
%#
%# SYNOPSIS myMethod(obj)
%# INPUT obj: the object
%# OUTPUT none
%#
try
doc(class(obj))
catch
help(class(obj))
end
end %#myMethod
end %#methods
end %#myClass
编辑1如果你想要一个漂亮的html文档,你可以另外使用m2html为你生成它。 M2html将收集帮助文本,甚至可以执行依赖关系图。
编辑2虽然m2html文档标准的Matlab代码很好,但它没有对类的特定支持。 这意味着您可以将类中的子函数的方法链接到该类中,但是您不会像使用Doxygen时获得的摘要那么好,或者使用内置文档浏览器获得的摘要。
用matlabdomain扩展名尝试Sphinx。 Sphinx是一个Python包,它使用ReStructuredText(rst)标记自动记录代码。 扩展名sphinxcontrib-matlabdomain允许MATLAB代码的自动文档,它使用Sphinx在其文档字符串中识别的第一个标记。 将错误和建议发送到BitBucket上的问题跟踪器。
例如, my_project/my_fun.m
的以下代码:
function [outputs] = my_fun(args)
% MY_FUN does really cool stuff
% [OUTPUTS] = MY_FUN(ARGS)
%
% :param args: Input arguments
% :type args: cell array
% :returns: outputs
% :raises: :exc:`my_project.InvalidInput`
code ...
end
将被记录在这样的第一个文件中:
.. _my-project
My Project
==========
.. automodule:: my_project
This folder contains all the functions and classes for my project.
My Function
-----------
.. autofunction:: my_fun
并会生成HTML(或PDF,乳胶和其他许多),如本博客文章所示。
链接地址: http://www.djcxy.com/p/85435.html