如何在doxygen中重新生成类url?

时间:2015-05-27 02:28:59

标签: doxygen

我正在使用doxygen为程序生成文档。现在我想将生成的文档链接到另一个网站/程序(完全独立)。

我的想法是生成与生成的doxygen相同的URL,例如我的班级名称是<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.3</version> <configuration> <source>1.8</source> <target>1.8</target> <testExcludes> <exclude>**/org/jorlib/frameworks/columnGeneration/tsp/**/*</exclude> </testExcludes> </configuration> </plugin> ,doxygen生成的网址是Models.PMF.Phen.GenericPhase。我不明白为什么网址中有这么多class_models_1_1_p_m_f_1_1_phen_1_1_generic_phase.htmlunderscore

我的问题是

  1. 是否可以更改doxygen生成的URL的样式,即1
  2. doxygen生成URL时是否有任何模式。
  3. 感谢您的任何建议。如果我的问题不明确,请告诉我。

1 个答案:

答案 0 :(得分:4)

简短的故事是:我认为Doxygen生成的URL可以安全使用。

回答问题: 不,你不能让Doxygen来制作你想要的路径(但我同意这可能很好)

下划线是Doxygen的方式,可以将原始名称移植到任何文件系统上。 _1.字符的替代品。所有大写都被替换为小写,后面加_。这种破坏非常一致,所以我认为你应该能够安全地使用它。

util.cpp中有一个名为escapeCharsInString(...)的例程执行此转换。正如我所说,所有大写都变为小写,并以下划线开头。各种其他字符转换为_? (其中?是1到9或00到0C的数字)。最后,如果遇到,下划线本身会加倍。 (“my_Function”最终得到3个下划线:my___function)。

下面是各种字符的源代码片段。说实话,我很困惑为什么你为_1获得.,因为我转换为_8。我在C,而不是C ++;但即使知道我搜索过源代码仍然没有找到解释。因此,我只说我“认为”URL可以安全使用:)

  case '_': if (allowUnderscore) growBuf.addChar('_'); else growBuf.addStr("__"); break;
  case '-': growBuf.addChar('-');  break;
  case ':': growBuf.addStr("_1"); break;
  case '/': growBuf.addStr("_2"); break;
  case '<': growBuf.addStr("_3"); break;
  case '>': growBuf.addStr("_4"); break;
  case '*': growBuf.addStr("_5"); break;
  case '&': growBuf.addStr("_6"); break;
  case '|': growBuf.addStr("_7"); break;
  case '.': if (allowDots) growBuf.addChar('.'); else growBuf.addStr("_8"); break;
  case '!': growBuf.addStr("_9"); break;
  case ',': growBuf.addStr("_00"); break;
  case ' ': growBuf.addStr("_01"); break;
  case '{': growBuf.addStr("_02"); break;
  case '}': growBuf.addStr("_03"); break;
  case '?': growBuf.addStr("_04"); break;
  case '^': growBuf.addStr("_05"); break;
  case '%': growBuf.addStr("_06"); break;
  case '(': growBuf.addStr("_07"); break;
  case ')': growBuf.addStr("_08"); break;
  case '+': growBuf.addStr("_09"); break;
  case '=': growBuf.addStr("_0A"); break;
  case '$': growBuf.addStr("_0B"); break;
  case '\\': growBuf.addStr("_0C"); break;

现在更进一步,如果结果名称是&gt; 128个字符,使用MD5编码方案,导致文件名看起来像垃圾。它基本上是对原始名称的加密,因此只要您的原始名称始终完全相同(包括参数!),就可以安全使用。请参阅util.cpp中的convertNameToFile(...)