【问题标题】:Remove file tags from doxygen output从 doxygen 输出中删除文件标签
【发布时间】:2018-08-22 11:54:46
【问题描述】:

我们正在使用 doxygen(使用 EXTENSION_MAPPING = sas=Java)记录 SAS 代码,我们的 doxyfile 是 here

问题是每个文件下都出现了一堆标签 - 根据下面突出显示的部分。

我们如何删除这些条目?有关信息,我们生成的文档托管在 here

我的 doxygen 版本是 1.8.14

【问题讨论】:

  • 请指定 doxygen 版本并创建一个小示例(只有 1 个具有一个功能的文件可能会做)并使用默认的 Doxyfile 键入并进行最少的更改,并注意问题中的更改。
  • 好的,公平的 - 需要一些时间来解决这个问题,因为必须对 doxyfile 进行相当多的更改才能使该工具与 SAS 文件一起使用。
  • 我用 C 头文件做了一些小实验,但没有找到解决方案。我认为目前很难我认为在第 221 行(newNode 例程)周围调整 navtree.js(在 html 输出目录中)可能会解决问题,但它非常棘手并且可能存在副作用。我的第一个想法是布局文件,但我没有看到那里的可能性。
  • 看起来它正在为源代码中以% 开头的单词生成那些条目。为什么它不为%macro 生成一个?也许您可以通过弄清楚来找到解决方案?
  • 您应该看看 HTML 输出,由于您使用的版本 1.8.14 和版本 1.8.17 之间的更改,html 页眉和页脚中的某些内容不再正确。关于您最初的问题,我认为可以通过FILTER_PATTERN 中的过滤器来解决它,您可以在其中从java 中的sas 中过滤出未知的结构,并使生成的代码看起来更像java(虽然并不容易)。

标签: doxygen


【解决方案1】:

假设您只是将 doxygen 用于您编写的 SAS 宏的标头,您可以通过将这些部分包含在 \cond\endcond 命令中来避免 doxygen 查看(部分)代码。

我在一些 SAS 项目中使用了 doxygen,宏的结构如下:

/**
   \file       sasmacro.sas
   ...  <more doxygen commands>   
*/ /** \cond */ 

%macro sasmacro(); 
    ... 
%mend; 

/** \endcond */

更新:为了检查这是否也适用于您的情况,我在 GitHub 上 fork Macro Core repository 并使用存储库中的配置文件运行 doxygen(版本 1.8.20)(我有更改一些目录)。生成的 doxygen 文档看起来像 like this。正如你在图片中看到的,我得到的标签比你多得多。我不知道为什么会这样。

之后我更改了一些宏(mf_abort、mf_existds 和 mf_getengine)。本质上,我将它们包装在@cond@endcond 命令中,如上图所示。顺便说一句,@\ 都应该可以工作。我使用相同的设置重新运行 doxygen,在我的情况下所有标签 are gone

以我使用的新版 mf_existds 为例:

/**
  @file mf_existds.sas
  @brief Checks whether a dataset OR a view exists.
  @details Can be used in open code, eg as follows:

      %if %mf_existds(libds=work.someview) %then %put  yes it does!;

  NOTE - some databases have case sensitive tables, for instance POSTGRES
    with the preserve_tab_names=yes libname setting.  This may impact
    expected results (depending on whether you 'expect' the result to be
    case insensitive in this context!)

  @param libds library.dataset
  @return output returns 1 or 0
  @warning Untested on tables registered in metadata but not physically present
  @version 9.2
  @author Allan Bowe
**/ /** @cond */

%macro mf_existds(libds
)/*/STORE SOURCE*/;

  %if %sysfunc(exist(&libds)) ne 1 & %sysfunc(exist(&libds,VIEW)) ne 1 %then 0;
  %else 1;

%mend;

/** @endcond */

【讨论】:

  • 嗨@nico - 感谢您的提示 - 我尝试了您的建议(包括它的一些排列)但无济于事。此处部署了一个精确的再现:core.sasjs.io/mf__getengine_8sas_source.html
  • 嗨@AllanBowe,不知道为什么它不适合你。我将使用我为检查结果而采取的一些步骤来更新我的答案。
  • 嗨@AllanBowe,让上述工作顺利吗?
  • 嗨 Nico - 感谢您的跟进 - 这仍然在我的待办事项清单上,我刚刚完成了工作。绝对计划再次拿起它,我感谢您的帮助和建议!
  • 终于搞定了——而且,它有效!谢谢!!
猜你喜欢
  • 1970-01-01
  • 2021-04-26
  • 2021-06-05
  • 2016-06-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-21
  • 1970-01-01
  • 2017-05-19
相关资源
最近更新 更多