簡體   English   中英

R package CRAN 注意 package 測試中的依賴項和警告

[英]R package CRAN note for package dependencies and warnings in tests

我打算將我的第一個 package 提交給 CRAN。 我聽說你不應該有任何錯誤、警告或注釋。 但是,我收到說明 package 依賴項太多的說明:

“Imports 包括 24 個非默認包。從如此多的包中導入會使 package 容易受到其中任何一個變得不可用的影響。盡可能多地移至 Suggests 並有條件地使用。”

  1. 關於 CRAN 提交,我必須解決這個注釋嗎?
  2. 使用的所有/大多數軟件包都可以包含在內,因為它們維護良好,這對 state 有影響嗎?
  3. 是否可以將 tidyverse 用作依賴項而不是每個單獨的 package (我知道這在某種程度上違背了限制的目的;盡管無論如何有 20 包限制感覺相當隨意,重點也應該放在使用良好- 維護的軟件包)。

測試中的警告

我為 package 創建了測試用例; 但是,為了保持大小限制,我需要使用比通常使用的更少的案例; 這會在運行測試時產生不同的警告。 提交 CRAN 時是否可以有這些與測試相關的警告?

提前致謝! 約翰

在大多數情況下,假設您通過了R CMD CHECK --as-cran [yourpackage] ,“注釋”不會自動導致審閱者拒絕您的提交。 在這種情況下,我會把建議牢記在心。
首先,決定你是否真的,真的需要所有這些進口,更不用說imports了。 這看起來確實是一個非常大的集合。 例如,確保您不能調用引用的包 A、B、C 和 D 中的某些函數,而不是調用包 K、Q 和 T 中的類似函數(列出從 A 到 X 的引用)。 If you're only using one standalone function from a package, ie a function which doesn't depend on any other item in that package, copy the source code from there, with attribution, into your package's source directory.

其次,僅當您的函數需要它們才能執行時才導入它們,而不管它們的參數列表如何。 僅支持特定“模式”或選項的軟件包應移至Suggests

我希望您已閱讀文檔“R_exts”的相關部分,引用如下。

成功運行 R CMD 所需的所有包 7 檢查 package 必須列在“IDepends”或“Suggests”或“之一”中。 用於有條件地運行示例或測試的包(例如,通過 if(require(pkgname)))應列在“建議”或“增強”中。 (這允許檢查人員確保安裝了完整檢查所需的所有包。)特別是,為示例或小插曲提供“僅”數據的包應列在“建議”而不是“依賴”中,以便進行精益安裝可能的。 庫在加載 package 時使用“Depends”和“Imports”字段中的版本依賴關系,並且 install.packages 檢查“Depends”、“Imports”和(對於依賴項 = TRUE)“Suggests”字段的版本。 這些字段中的信息的完整性和准確性變得越來越重要:例如,它用於計算哪些軟件包依賴於更新的 package 以及哪些軟件包可以安全地並行安裝。 該方案是在所有包都有命名空間之前開發的(2011 年 10 月的 R 2.14.0),並且一旦到位,良好的實踐就會改變。 現在應該很少使用字段“Depends”,僅用於旨在將其設施提供給最終用戶(而不是 package 本身)的包:例如,有意義的用戶package latticeExtra 需要 package lattice 的功能可用。 幾乎所有在“Depends”中提到的包也應該從 NAMESPACE 文件中導入:這樣可以確保當其他一些 package 導入當前的 package 時,這些包的任何需要的部分都可用。 'Imports' 字段不應包含不是從(通過 NAMESPACE 文件或:: 或::: 運算符)導入的包,因為需要安裝該字段中列出的所有包才能安裝當前的 package。 (這由 R CMD 檢查檢查。)R 代碼在 ZEFE90A8E604A 庫中調用或僅需要 67C840D78ZD0。 'Depends' 中列出的包永遠不需要這樣的調用,因為它們已經在搜索路徑上。 在使用其功能的函數中對“建議”中列出的包使用 require 調用是一種常見的做法,但現在最好通過:: 調用來訪問此類功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM