[Bioc-devel] Aliasing `]` breaks BiocCheck::BiocCheck() version 1.18.0

Tierney, Luke luke-tierney @ending from uiow@@edu
Thu Dec 20 15:31:47 CET 2018


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


More information about the Bioc-devel mailing list