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

Martin Morgan mtmorg@n@bioc @ending from gm@il@com
Thu Dec 20 15:17:04 CET 2018


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
    


More information about the Bioc-devel mailing list