【问题标题】:Command 'rebar doc' is inconsistent命令'rebar doc'不一致
【发布时间】:2015-07-23 11:33:32
【问题描述】:

首先,“rebar doc”有时有效,有时无效。它很奇怪。 我使用的钢筋版本是 2.5.1

我的文件夹结构是:

  1. Header_Directory
    1.1 应用程序
    1.1.1 sub_dir_1
    1.1.2 sub_dir_2 / 包含
    1.1.3 sub_dir_3
    1.2 部门
    1.3 配置文件
    rebar.config

sub_dir_3 中的模块也使用 sub_dir_2/include 文件夹中的一些包含文件。

我使用命令 rebar doc 时遇到的错误是:
.sub_dir_3/src/my_log_worker.erl,在模块标题中:第 9 行:文件 未找到:some.hrl edoc:跳过源文件 'sub_dir_3/src/my_log_worker.erl':{'EXIT',错误}。 edoc:错误 doclet 'edoc_doclet': {'EXIT',error}。错误:文档失败,而 处理 /home/learn/header_directory/apps/sub_dir_3: {'EXIT',error}

我先“rebar clean”,然后在“rebar doc”之前进行“rebar compile”

另外,当我在 erl shell 中执行此操作时,我得到了错误。

edoc:file("some_log_worker.erl", []).
edoc:读取文件“some_log_worker.erl”时出错。
** 异常退出:{error,enoent}
在函数 edoc:read_source/2 中(edoc.erl,第 664 行) 来自 edoc_extract:source/3 的调用(edoc_extract.erl,第 52 行)
来自 edoc:read/2 的调用(edoc.erl,第 537 行)
从 edoc:file/2 调用(edoc.erl,第 116 行)

有什么方法可以将我的 hrl 文件包含在 rebar.config 或 edoc 选项中?

我有 '{edoc_opts, [{ i, "apps/sub_dir_3/include" }]}。在 rebar.config 中,仍然没有帮助。

【问题讨论】:

  • 你可能想研究一下你的代码格式。

标签: erlang rebar


【解决方案1】:

您似乎没有遵循钢筋/OTP 约定:

OTP 约定

Rebar 希望项目遵循 OTP 约定,如 OTP 设计原则文档:应用程序

应用程序应包含以下目录集:

src
ebin
priv
include

并有一个应用程序资源文件:ebin/example_project.app 或 src/example_project.app.src。在后一种情况下, ebin/example_project.app 文件是从 src/example_project.app.src 一个在编译时自动生成 阶段。

Rebar & OTP convetions

我建议您转移到该文件组织,从钢筋等标准工具中受益会非常简单。

【讨论】:

  • 是的,遵循 OTP 原则始终符合最佳利益。但是,它适用于我的应用程序结构。唯一的问题是因为 erlang 模块中的 @headerfile 注释。
【解决方案2】:

是的,遵循 OTP 原则始终符合最佳利益。但是,它适用于我的应用程序结构。

唯一的问题是因为 erlang 模块中的 @headerfile 注释。不知怎的,我不知道如何正确使用@headerfile 注解。

感谢所有帮助。 :)

【讨论】:

    猜你喜欢
    • 2012-05-10
    • 1970-01-01
    • 1970-01-01
    • 2020-02-09
    • 2011-10-25
    • 2018-10-17
    • 2015-10-16
    • 1970-01-01
    • 2015-03-29
    相关资源
    最近更新 更多