rtags:“etags:没有指定输入文件。”

时间:2013-07-02 20:00:23

标签: r etag

当我在rtags(ofile="TAGS")提示符处R时,会写入"TAGS"文件,并且终端没有输出(完全符合预期)。

当我在shell提示符下R CMD rtags -o TAGS时,"TAGS"文件也被写入,但我在终端上看到了几组消息,如下所示:

etags: no input files specified.
    Try `etags --help' for a complete list of options.

当我将libPath移出当前目录时,我会看到6套 - 12行 - 当我将它保留在那里时,我会看到两套--4行。即,当rtags处理较少的文件时,我会看到更多警告。

要重现,请在目录中运行:

$ mkdir z
$ cd z
$ R --vanilla CMD rtags

Tagging R/C/Rd files under /home/sds/z; writing to TAGS (overwriting)...

etags: no input files specified.
    Try `etags --help' for a complete list of options.
etags: no input files specified.
    Try `etags --help' for a complete list of options.
etags: no input files specified.
    Try `etags --help' for a complete list of options.
etags: no input files specified.
    Try `etags --help' for a complete list of options.
etags: no input files specified.
    Try `etags --help' for a complete list of options.
etags: no input files specified.
    Try `etags --help' for a complete list of options.
Done

导致这些警告的原因是什么? 有没有办法避免它们?

2 个答案:

答案 0 :(得分:0)

当我从控制台会话中运行时,对控制台的警告根本不像你的那样,但它们基本上是关于遍历我工作目录中文件的过程的无意义评论:

1: In file.remove(ofile) :
cannot remove file 'TAGS', reason 'No such file or directory'
.....
: In readLines(file) :, incomplete final line found on './Untitled.R' 

我确实有这样的人:

6: In grepl("\n", lines, fixed = TRUE) : input string 5 is invalid in this locale

有关代码中已分配令牌位置的真实信息会进入TAGS文件。由于我的设置中的警告非常不同,我仍然认为当您更改.Library变量时,关于警告数量增加的问题的答案将取决于R在操作期间解析的特定代码。猜测:从加载代码中删除代码可能会使某些操作无法进行,否则这些操作将无法正常运行。请记住,这些只是警告'。

答案 1 :(得分:0)

命令R CMD rtags为3种不同类型的文件创建TAGS文件:R文件,C文件和Rd文件(R文件的文档)。对于R文件,它使用R函数utils::rtags();对于C和Rd文件,它调用etags实用程序(在Linux上;不确定在MacOS或Windows上的功能)。

在没有任何输入文件的情况下调用etags时,您会看到错误消息。发生这种情况是因为R CMD rtags使用find查找要由etags处理的文件,并将find的输出馈送到etags中。如果您正在处理的目录或其任何子目录中没有C或Rd文件,则将调用etags并带有要处理的空文件列表,这将导致它显示错误消息。

您会看到几条错误消息,因为分别对Rd文件和“ C文件”分别调用了etags,实际上包括了.c,.h,.cpp和其他几种类型。

为了禁止显示这些消息,您应该明确告诉R CMD rtags不要处理您没有的文件。例如,R CMD rtags --no-c不会尝试查找C文件,R CMD rtags --no-Rd不会尝试查找Rd文件。

因此,例如,如果您只想标记R文件,请使用R CMD rtags --no-c --no-Rd。有关更多详细信息,请参见R CMD rtags --help

作为一个旁注,如果您的项目中有C文件,但您确实希望将它们与R文件一起标记,则可能仍会收到此类错误消息-说您有* .c和* .h文件,但没有* .cpp文件,然后调用不带R CMD rtags标志的--no-c。该命令还将查找* .cpp文件,并使用空白列表调用etags

值得一提的另一个注意事项,尽管与问题没有直接关系,但R CMD rtags仅查找直接位于名为R的目录下的* .R文件。因此,具有不同名称的目录中的R文件将不会被标记。如果您需要标记此类目录中的R文件,或者需要更大的灵活性,则可以使用适当的参数从R会话中调用utils::rtags()