我使用Atomineer 7.31来格式化我的C ++文件,但是我在为不同的文件类型创建单独的行为时遇到了麻烦。作为一个例子,我想用我的.cpp文件填充某些信息,例如包含与该文件同名的.h文件,并包括我的内存跟踪器,我希望.h文件有一个定义守卫和班级的基础。
我想要的.h文件示例:
//! \file ExampleFile.h
//! \brief Declares an ExampleFile
//! Company legal information etc.
#ifndef EXAMPLEFILE_H
#define EXAMPLEFILE_H
class ExampleFile
{
};
#endif // EXAMPLEFILE_H
我想要一个.cpp文件的例子:
//! \file ExampleFile.cpp
//! \brief Implements ExampleFile
//! Company legal information etc.
#include <ExampleFile.h>
// Memory tracking. Do not include anything beneath this!
#include <debug_new.h>
我希望每个上述行为都出现(基于所使用的文件类型),当在空白文件的顶部插入3个正斜杠时(我相信这是默认的Atomineer行为)。我查看了http://www.atomineerutils.com/rulesguide.php,以及Atomineer附带的.xml文件(File.xml,Namespace.xml,DoxygenTemplates.xml,UserVariables.xml等),但我找不到任何指示我是否可以做我需要的事。
在File.xml中有一个小例子,在文件顶部的注释中使用不同的信息(例如,头文件将说“声明类xxx”,而.cpp / .c文件将说“Implements class xxx” “);但是我无法模仿那种行为。
我知道可以使用的%extension%变量,&lt;如果/&gt;命令,但我似乎无法得到我想要的东西。我也尝试过以类似于File.xml的方式使用Namespace.xml文件(File.xml声明要使用的%fileDescription%变量,这是处理文件是否为“声明类xxx”或“实现类xxx“),但我无法让Namespace.xml显示任何内容。
File.xml示例:
<File>
<!-- Rules for generating auto-documentation for file header comments. The results of executing this rule are placed in %fileDescription% when adding file comments. -->
<If extension=".c" desc="" />
<If sNameRaw="I #" desc="Declares the %name% interface" />
<If extension=".h,.hpp" continue="y" desc="Declares the " />
<If extension=".cs,.cpp,.java" continue="y" desc="Implements the " />
<If sName="# dialog,# dialogue" desc="%match:noPrefix:LCase% Dialog" />
<If sName="# form,# window" desc="%match:noPrefix:LCase% Windows Form" />
<Set desc="%sname:noPrefix:LCase% class" />
</File>
然后在DoxygenTemplates.xml中使用该信息:
<file>
//! \file %projectpathname%
//! \brief %fileDescription%
//!
//----------------------------------------------------------------------------------------------------------------------
// (c) Copyright 2015 by %company%
//----------------------------------------------------------------------------------------------------------------------
%ip%
</file>
我尝试在%ip%(输入位置:鼠标光标出现的位置)上面插入几个东西,但无济于事。我觉得问题的一部分可能是我无法让Namespace.xml显示任何内容。例如,在%ip%之上我放了%namespaceDescription%并且我有一个简单的&lt;设置desc =“Hi”/&gt;在Namespace.xml中,但它不显示。感谢您解决此问题,感谢您的帮助!
答案 0 :(得分:1)
是的,可以用Atomineer做到这一点! 正确的功能已在我将要讨论的更高版本中添加,但为了回答您的问题,您可以将DoxygenTemplate.xml更改为:
<file>
%fileDescription%
</file>
然后在File.xml中添加所有内容,如下所示:
<File>
<!-- Filename/path -->
<Set desc="//! \file %projectpathname%
//! \brief "
continue="y"
/>
<!-- \brief about the class -->
<!-- Header files -->
<If extension=".h" continue="y" desc="Declares the " />
<!-- Source files -->
<If extension=".cpp" continue="y" desc="Implements the " />
<Set desc="%sname:noPrefix:LCase% class" continue="y"/>
<!-- Company legal -->
<Set desc="
//! Company legal information etc.
" continue ="y" />
<!-- Include guard for header files -->
<If extension=".h" continue="y">
<Set desc="
#ifndef %leafname:UCase%_H
#define %leafname:UCase%_H
class %leafname%
{
};" continue ="y" />
</If>
<!-- Include header.h and memory tracker in source files -->
<If extension=".cpp" desc="
#include <%leafname%.h>
// Memory tracking. Do not include anything beneath this!
#include <debug_new.h>" continue="y" />
<!-- Include guard for header files -->
<If extension=".h">
<Set desc="
#endif // %leafname:UCase%_H" />
</If>
<!-- For non header files, end with nothing -->
<Set desc="" />
</File>
对于Atomineer 7.36中的这种功能,我要说proper support was added。
7.36
- 文件和文件页脚注释现在可以定位到特定的文件扩展名,以允许添加不同的标题(例如)
.cpp和.h文件,并添加文件头可以选择添加文件 页脚同时。默认模板现在包含一个示例 可用于添加#ifndef ... #endif'include once'机制 使用这些功能来标题文件。
实现此目标所需的信息位于documentation:
使用
可以实现文件页眉/页脚注释的进一步控制 以下属性:_filetypes =“。h.hpp”:将模板定位到特定的文件扩展名集,因此您可以在.h和.cpp中使用不同的标题样式 例如,文件。匹配文件类型的第一个模板将 使用,所以这必须在任何未指定的文件模板之前 任何特定的文件类型。
如果您有Atomineer 7.36或更高版本,在DoxygenTemplates.xml文件中您可以编写以下内容(如果您有Atomineer 7.36或更高版本,它看起来好像默认模板附带了一个包含保护的示例):
对于头文件:
<file _filetypes=".h">
#ifndef %leafname:UCase%_H
#define %leafname:UCase%_H
class %leafname%
{
};
#endif // %leafname%_H
</file>
对于cpp文件:
<file _filetypes=".cpp">
#include <%leafname%.h>
#include <debug_new.h>
</file>
确保它们都出现在任何通用
之上<file>
</file>
因为Atomineer文档说明了
将使用与文件类型匹配的第一个模板,因此必须在任何未指定任何特定文件类型的文件模板之前。
关于Namespace.xml和%namespaceDescription%无效的问题,您将它放在错误的位置。 File.xml包含&lt;文件&gt;:为添加文件注释(即在文件顶部创建的注释)创建Atomineer模板的方法。 Namespace.xml包含&lt;命名空间&gt;这是添加命名空间注释时使用的Atomineer模板(即命名空间上方的注释)。