Как документировать объектно-ориентированный код MATLAB?

31

Я пишу значительное приложение с использованием объектно-ориентированного MATLAB, и это заставило меня задуматься о том, как документировать код. Если бы это был C, я бы использовал Doxygen. Для Java я бы использовал JavaDoc. Оба имеют в основном согласованные стандарты того, как должна выглядеть документация классов и методов и что оно должно содержать.

Но как насчет кода MATLAB? Самое большее, что я видел в собственных классах TMW, - это короткое предложение или два в верхней части класса, и я не могу найти темы, посвященные документированию значимых приложений MATLAB.

Итак, как вы документируете свои классы MATLAB? Какие-либо особые проблемы стиля или дополнительные инструменты?

Теги:
documentation

4 ответа

26
Лучший ответ

Я понимаю, что вопрос устарел, но в интересах Google: у Matlab есть встроенная функция для этого. Вы пишете свои комментарии в определенном стиле (a la JavaDoc), и их подхватывают функции справки и doc. Его можно использовать для документирования классов, свойств и методов. Это удивительно полно, но немного утонченно. Документ находится здесь:

http://www.mathworks.com/help/matlab/creating-help.html

  • 0
    Это именно то, что я искал, спасибо.
10

Я документирую код своего кода следующим образом:

  • В начале файла, содержащего "classdef", я пишу сводку того, что делает класс, и типичное использование. Я также подробно объясняю свойства и добавляю описание каждого предложения из 1 предложения.
  • После каждого определения свойства я добавляю к нему одно объяснительное предложение (в той же строке)
  • Каждый метод документируется как функция, то есть имеет H1-строку, синопсис и объяснение входных и выходных параметров.

Когда вы вызываете "doc myClass", вы увидите (1) в начале, а затем список свойств, объясняемых предложениями, добавленными в (2), и списком методов, которые показывают строку H1 и остальную часть справки (3), если вы нажмете на ссылку.

Кроме того, все мои классы подкласса имеют общий суперкласс, который реализует (среди прочего) метод "help", который вызывает doc (class (obj)), что позволяет мне вызывать помощь из каждого экземпляра класса.

Пример

%# 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, или который вы получаете со встроенным браузером документации.

  • 0
    Может ли m2html сгенерировать документацию для нового синтаксиса classdef в Matlab? Я не могу найти подсказки в документации.
  • 0
    @Jonas: Да, m2html - это круто, но не самое лучшее для классов Matlab. Кроме того, вы не можете исключить определенные каталоги, которые вы не хотите индексировать и документировать! Есть ли лучший способ сделать это, кроме doxygen? Спасибо
3

Попробуйте Sphinx с matlabdomain расширение. Sphinx - это Python пакет, который автоматически записывает код с помощью ReStructuredText (первый ) разметки. Расширение 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, латекс и многие другие), как то, что показано на этом сообщении в блоге.

2

В FileExchange существует Doxygen-адаптер для M файлов, см. http://www.mathworks.com/matlabcentral/fileexchange/25925-using-doxygen-with-matlab.

  • 0
    в некоторых случаях адаптер Matlab не очень хорошо работает с Windows; см. stackoverflow.com/questions/2701671/…

Ещё вопросы

Сообщество Overcoder
Наверх
Меню