我试图在Travis CI上使用c ++代码构建R包,并通过使用R CMD check选项运行--use-valgrind来使用valgrind检查它。在R extensions manual中,它表示要为~/.valgrindrc文件提供必需的选项,或者在环境变量VALGRIND_OPTS中设置它们,但是我无法弄清楚这两个。

我创建了一个演示仓库here,其中包含一个valgrind应该响应的Rcpp函数。

我的.travis.yml设置如下所示:

language: r
sudo: false
cache: packages

r_check_args: '--use-valgrind'

addons:
  apt:
    packages:
      - valgrind


我有一个.valgrindrc文件,内容如下:

--leak-check=full
--track-origins=yes


,并尝试将其放在./inst/和根目录中,但没有一个起作用。有人知道如何正确设置这些选项吗?

编辑:here是最新travis版本的链接。

最佳答案

根据the docs,文件./.valgrindrc(因此,在当前工作目录中,仅在文件~/.valgrindrc不存在且未设置环境变量$VALGRIND_OPTS的情况下才读取文件。

不知道是什么情况,但是您可能需要执行以下操作:

before_install:
  - "head ~/.valgrindrc || echo '~/.valgrindrc does not exist'"
  - echo VALGRIND_OPTS: $VALGRIND_OPTS
  - cat ./valgrindrc >> ~/.valgrindrc


前两个用于诊断目的。最后一个可能会解决该问题(它将您的配置附加到全局配置中)。如果这行不通,您可能会对正在发生的事情有更多的了解。

07-24 09:20