我想使用doxygen在Emacs中生成代码文档(函数).c或.cc文件.我发现doxymacs,但似乎不再维护(最新版本2007),如果我更改函数的一个参数的名称,我也没有找到更新函数文档的方法("不幸的是",我已经习惯了极大Roxygen的.R脚本,它可以做所有的好东西,一个函数之前的权利,即使插入文档时的点在什么地方功能).
我发现了这个,但似乎不是很有用.然而,有一个例子在这里如何使用yasnippets.有人写过doxygen标题的yasnippet吗?但是,如果函数名称更改,它将不会更新参数.在Emacs中使用doxygen有什么"更好"的方法吗?我认为有很多C/C++程序员可以使用Emacs,我猜想应该有一个很好的代码文档工具/方法.
更新
我也找到了这个.它完全基于yasnippet(尽管还没有尝试过).
我想询问Doxygen是否有任何功能(或附加组件)来通过命令行测量文档覆盖率.我已经知道我可以设置Doxygen将未记录的元素作为警告写入日志文件,但是为了完全评估文档的覆盖范围,我需要编写自己的警告日志解析器.这样的事情已经完成了还是有一种我找不到的更简单的方法?有没有我可以检查的附加组件?谢谢.
Doxygen有点慢 - 处理整个项目大约需要几分钟,因此对于小的增量更改,这比实际构建其余代码要长.有成千上万的文件没有任何文档,所以我猜它花了大部分时间来处理它们.有没有办法让它在没有任何文档的情况下跳过文件?
如何让它只处理更改的文件?
我正在构建一个基于Qt的项目,并且在目标文档中找到了许多Qt类.
如何告诉Doxygen禁用某些类的文档生成?对于Q.*?
我有一个C++模板类base::Foo<class T>,我在另一个文件中有一个类base::bar::Foo : public base::Foo<Baz>.Doxygen似乎不喜欢这样,因为它会抛出一个错误
<unknown>:1: Detected potential recursive class relation between class snLib::mocTwod::DsaCell and base class DsaCell< snLib::mocTwod::ProblemTraits, detLib::cellDiffusionTwod::ProblemTraits >!
Run Code Online (Sandbox Code Playgroud)
有没有办法防止这种情况发生?Doxygen的文档没有讨论这个错误或关于"潜在的递归类关系"的任何内容.
"基础"类:
/*! \file snlib/DsaCell.hpp
*/
#ifndef snlib_DsaCell_hpp
#define snlib_DsaCell_hpp
#include "Dsa.hpp"
namespace snLib {
/*!
* \brief Implementation of naive cell-centered DSA
*/
template <class HoTraits_T, class LoTraits_T>
class DsaCell : public snLib::Dsa< HoTraits_T, LoTraits_T >
{
[snip]
};
}
#endif
Run Code Online (Sandbox Code Playgroud)
导致问题的一个后代:
/*! \file snlib/twod/moc/DsaCell.hpp
*/
#ifndef snlib_twod_moc_DsaCell_hpp
#define snlib_twod_moc_DsaCell_hpp
#include "snlib/DsaCell.hpp"
#include "ProblemTraits.hpp" …Run Code Online (Sandbox Code Playgroud) 我生成了一个doxygen文档.在我的一个"页面"中,我有一个pdf文件的链接:
<a href="../documents/xxx.pdf" target="_blank"><b>Overview</b></a>
Run Code Online (Sandbox Code Playgroud)
此文件位于我的项目中的另一个目录中.文档最终在名为"html"的文件夹中.
如何告诉doxygen将pdf文件复制到html中?
我知道参数可以是任何对象,但对于文档而言,指定您期望的内容非常重要.
首先是如何指定下面的参数类型?
str(或使用String或string?)intlistdicttupleMyClass第二,如何指定可以是多种类型的参数,比如可以处理单个参数的函数,int或者可以是str?
请使用以下示例演示使用您提出的解决方案记录此文档所需的语法.请注意,希望能够从文档内部超链接对"Image"类的引用.
def myMethod(self, name, image):
"""
Does something ...
name String: name of the image
image Image: instance of Image Class or a string indicating the filename.
Return True if operation succeeded or False.
"""
return True
Run Code Online (Sandbox Code Playgroud)
请注意,只要能够处理要求,欢迎您使用任何文档工具(sphinx,oxygen,...).
它表示在doxygen中记录参数类型有一些支持.一般.下面的代码可以工作但是会给param名称添加一个烦人的$(因为它最初是为php制作的).
@param str $arg description
@param str|int $arg description
Run Code Online (Sandbox Code Playgroud) 我有一个使用LaTeX的"项目书" \documentclass{report}("报告"就像一个更紧凑的版本\documentclass{book}).我想在本书中附上一个附录,其中包含项目中软件的Doxygen生成的API文档.
我通过设置Doxygen的配置选项LATEX_HEADER和LATEX_FOOTER空文件来实现这一点.这使得生成的latex/refman.tex具有如下顶级命令:\section{\-Namespace \-Index},此时我可以用顶级文档包装它,如:
\documentclass{report}
\usepackage{doxygen.sty}
% the "import" package helps to find Doxygen files in the latex/ subdirectory
\usepackage{import}
% [...] title page and the rest of the book
\appendix
\chapter{API reference (generated by Doxygen)
subimport{latex/}{refman.tex}
% [...] final stuff
\end{document}
Run Code Online (Sandbox Code Playgroud)
这工作得相当好,我得到doxygen.sty了这个特殊的doxygen调用:
doxygen -w latex /dev/null /dev/null doxygen.sty
Run Code Online (Sandbox Code Playgroud)
一个问题是,这会在整个文档上放置一个"自动生成"的标题(而不仅仅是在doxygen附录上).我可以通过编辑来解决这个问题doxygen.sty(实际上我也将它重命名为包含它)并注释掉以该块开头的块% Setup fancy headings.
在这一点上,我有一些我可以忍受的东西,但我想更进一步:"doxygen"风格修改了LaTeX文档样式的许多其他方面,我更喜欢它.
所以我的问题是(两个级别的卓越):
什么是最小的LaTeX命令集放在doxygen.sty文件中,可以很好地渲染doxygen附录但不会干扰LaTeX文档的其余部分?
更好的是,有人想出办法
\usepackage{doxygen_standalone}
% [... until you need doxygen]
\begin{doxygen} …Run Code Online (Sandbox Code Playgroud)C++的一个(如此多)不幸的设计缺陷是,当使用模板元编程时,基本上不可能将实现与接口分开.
在我的图书馆里,我有类似的东西:
template <typename Ma, typename Mb>
typename boost::enable_if_c<
detail::IsMatrix<Ma>::val and detail::IsMatrix<Mb>::val and
detail::MatrixDimensionCheck<Ma,Mb>::isStaticMatch,
bool>::type
operator==(const Ma &a, const Mb &b) {
return detail::matrixEqual(a,b);
}
Run Code Online (Sandbox Code Playgroud)
如果这是不可读的,我不怪你.bool如果参数是矩阵并匹配维度,那么大部分混乱只是定义返回类型,如果它们是其他东西则是未定义的(因此依赖SFINAE来防止此运算符隐藏其他重要事物).
由于本质上是静态类型检查函数的内容现在已嵌入到我的普通C++函数的签名中,因此这些实现内容将出现在生成的文档中.
我不希望用户必须阅读此内容.他们需要知道的是,这个函数返回一个bool(通过阅读上面几乎不可能知道).在文档中,我可以用简单的英语简洁地解释这个操作符只接受矩阵.
有没有办法说服Doxygen将那种类型弄得乱七八糟bool?(我假设在代码中或多或少没有办法在代码中直接清除它,但如果你能想到某些东西,欢迎这些想法).
我已经成功下载并安装了doxygen.我正在尝试运行doxygen,但是配置文件有点不知所措.我看到有一个名为doxywizard的实用程序可以指导您完成配置文件的创建.如何运行此向导?我看到有一个名为Doxywizard的文件夹.我是否在此文件夹中运行其中一个文件?