[Bioc-devel] Aliasing `]` breaks BiocCheck::BiocCheck() version 1.18.0
Modifying findGlobals to return empty variable lists for non-closure functions was an easy change so an updated codetools is ready to submit when the CRAN queue opens again in the new year. Best, luke
On Thu, 20 Dec 2018, luke-tierney at uiowa.edu wrote:
That's where the error is signaled, but the issue is in
4: lapply(objs, FUN = function(obj) {
value = env[[obj]]
if (is.function(value))
findGlobals(value)
else character(0)
})
3: findLogicalRdir(pkgname, c("T", "F"))
Change is.function(value) to typeof(value) == "closure" and you should be OK. Best, luke On Thu, 20 Dec 2018, Martin Morgan wrote:
this comes from `findGlobals()`
foo <- `[` findGlobals(foo)
Error in makeUsageCollector(fun, ...) : only works for closures
traceback()
4: stop("only works for closures")
3: makeUsageCollector(fun, ...)
2: collectUsage(fun, enterGlobal = enter)
1: findGlobals(foo)
In the bigger context it is in code that looks for poor 'coding practice',
in this particular case looking for use of T / F rather than TRUE / FALSE,
where the logic is to parse each function for use of global variables, and
then to search for T / F amongst those.
The full traceback when run on the package at
https://github.com/mtmorgan/PkgA/tree/BiocCheck-sbs
* Checking coding practice...
Error in makeUsageCollector(fun, ...) : only works for closures
traceback()
9: stop("only works for closures")
8: makeUsageCollector(fun, ...)
7: collectUsage(fun, enterGlobal = enter)
6: findGlobals(value)
5: FUN(X[[i]], ...)
4: lapply(objs, FUN = function(obj) {
value = env[[obj]]
if (is.function(value))
findGlobals(value)
else character(0)
})
3: findLogicalRdir(pkgname, c("T", "F"))
2: checkCodingPractice(package_dir, parsedCode, package_name)
1: BiocCheck::BiocCheck(".")
Martin
?On 12/19/18, 8:32 AM, "Bioc-devel on behalf of Tierney, Luke"
<bioc-devel-bounces at r-project.org on behalf of luke-tierney at uiowa.edu>
wrote:
codetools already checks only closures in checkUsageENv and hande
checkUsagePackage, so this is anissue on the Bioc side.
Best,
luke
On Tue, 18 Dec 2018, Tierney, Luke wrote:
> Codetools should probably be ignoring those. Will have a look > > Sent from my iPhone >
>> On Dec 18, 2018, at 6:54 AM, Shepherd, Lori
<Lori.Shepherd at RoswellPark.org> wrote:
>> >> Can you please open an issue for this so we don't lose track of it - >> >> https://github.com/Bioconductor/BiocCheck/issues >> >> >> >> Lori Shepherd >> >> Bioconductor Core Team >> >> Roswell Park Cancer Institute >> >> Department of Biostatistics & Bioinformatics >> >> Elm & Carlton Streets >> >> Buffalo, New York 14263 >> >> ________________________________ >> From: Bioc-devel <bioc-devel-bounces at r-project.org> on behalf of
Shian Su <su.s at wehi.edu.au>
>> Sent: Monday, December 17, 2018 8:34:10 PM >> To: bioc-devel >> Subject: [Bioc-devel] Aliasing `]` breaks BiocCheck::BiocCheck()
version 1.18.0
>>
>> Hi all,
>>
>> If you put
>>
>> foo <- `[`
>>
>> Somewhere in a package, it will trigger
>>
>> Error in makeUsageCollector(fun, ...) : only works for closures
>>
>> In BiocCheck::BiocCheck() (version 1.18.0). This comes from
>>
>> if (typeof(fun) != "closure")
>> stop("only works for closures")
>>
>> In codetools::makeUsageCollector(), but
>>
>>> typeof(`[`)
>> ## "special" >> >> Not that it matters for my use-case because I had discovered
magrittr???s extract alias, but it might be an edge case worth covering, especially since the error message is so cryptic.
>> >> Kind regards, >> Shian Su >> >> _______________________________________________ >> >> The information in this email is confidential and
intend...{{dropped:29}}
>> >> _______________________________________________ >> Bioc-devel at r-project.org mailing list >> https://stat.ethz.ch/mailman/listinfo/bioc-devel
> _______________________________________________ > Bioc-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/bioc-devel
--
Luke Tierney
Ralph E. Wareham Professor of Mathematical Sciences
University of Iowa Phone: 319-335-3386
Department of Statistics and Fax: 319-335-3017
Actuarial Science
241 Schaeffer Hall email: luke-tierney at uiowa.edu
Iowa City, IA 52242 WWW: http://www.stat.uiowa.edu
_______________________________________________ Bioc-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/bioc-devel
Luke Tierney
Ralph E. Wareham Professor of Mathematical Sciences
University of Iowa Phone: 319-335-3386
Department of Statistics and Fax: 319-335-3017
Actuarial Science
241 Schaeffer Hall email: luke-tierney at uiowa.edu
Iowa City, IA 52242 WWW: http://www.stat.uiowa.edu