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-tier...@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-boun...@r-project.org on behalf of luke-tier...@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.sheph...@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-boun...@r-project.org> on behalf of >> Shian Su <s...@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@r-project.org mailing list >> >> https://stat.ethz.ch/mailman/listinfo/bioc-devel >> > _______________________________________________ >> > Bioc-devel@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-tier...@uiowa.edu >> Iowa City, IA 52242 WWW: http://www.stat.uiowa.edu >> >> _______________________________________________ >> Bioc-devel@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-tier...@uiowa.edu Iowa City, IA 52242 WWW: http://www.stat.uiowa.edu _______________________________________________ Bioc-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/bioc-devel