From 560951509d41a4007cba49471aaeda9dfe2aeafd Mon Sep 17 00:00:00 2001 From: Indrajeet Patil Date: Fri, 14 Oct 2022 11:31:54 +0200 Subject: [PATCH 01/41] add boilerplate --- .Rbuildignore | 1 + paper/apa.csl | 1916 +++++++++++++++++++++++++++++++++++++++++++++++ paper/paper.Rmd | 45 ++ paper/paper.bib | 19 + paper/paper.log | 956 +++++++++++++++++++++++ paper/paper.md | 35 + paper/paper.pdf | Bin 0 -> 112016 bytes 7 files changed, 2972 insertions(+) create mode 100644 paper/apa.csl create mode 100644 paper/paper.Rmd create mode 100644 paper/paper.bib create mode 100644 paper/paper.log create mode 100644 paper/paper.md create mode 100644 paper/paper.pdf diff --git a/.Rbuildignore b/.Rbuildignore index b8e76154e..bbf169122 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -27,3 +27,4 @@ ^pkgdown$ ^vignettes/[^-]+.gif$ ^CRAN-SUBMISSION$ +^paper.*$ diff --git a/paper/apa.csl b/paper/apa.csl new file mode 100644 index 000000000..081857d9d --- /dev/null +++ b/paper/apa.csl @@ -0,0 +1,1916 @@ + + diff --git a/paper/paper.Rmd b/paper/paper.Rmd new file mode 100644 index 000000000..bb56f959b --- /dev/null +++ b/paper/paper.Rmd @@ -0,0 +1,45 @@ +--- +title: "Static Code Analysis for R" +authors: + - name: Jim Hester + affiliation: 1 + orcid: ~ +affiliations: + - index: 1 + name: Netflix +date: "`r Sys.Date()`" +bibliography: paper.bib +output: rticles::joss_article +csl: apa.csl +journal: JOSS +link-citations: yes +tags: ["R", "linter", "tidyverse"] +--- + +```{r, warning=FALSE, message=FALSE, echo=FALSE} +knitr::opts_chunk$set( + collapse = TRUE, + out.width = "100%", + dpi = 300, + comment = "#>" +) + +library(lintr) +set.seed(2016) +``` + +# Summary + + +# Statement of Need + + +# Features + +# Licensing and Availability + +`{lintr}` is licensed under the MIT License, with all source code openly developed and stored on GitHub (), along with a corresponding issue tracker for bug reporting and feature enhancements. + +# Acknowledgments + +# References diff --git a/paper/paper.bib b/paper/paper.bib new file mode 100644 index 000000000..044908dce --- /dev/null +++ b/paper/paper.bib @@ -0,0 +1,19 @@ +@Article{Wickham2019, + title = {Welcome to the {tidyverse}}, + author = {Hadley Wickham and Mara Averick and Jennifer Bryan and Winston Chang and Lucy D'Agostino McGowan and Romain François and Garrett Grolemund and Alex Hayes and Lionel Henry and Jim Hester and Max Kuhn and Thomas Lin Pedersen and Evan Miller and Stephan Milton Bache and Kirill Müller and Jeroen Ooms and David Robinson and Dana Paige Seidel and Vitalie Spinu and Kohske Takahashi and Davis Vaughan and Claus Wilke and Kara Woo and Hiroaki Yutani}, + year = {2019}, + journal = {Journal of Open Source Software}, + volume = {4}, + number = {43}, + pages = {1686}, + doi = {10.21105/joss.01686}, + } + +@Manual{base2021, + title = {{R}: A Language and Environment for Statistical Computing}, + author = {{R Core Team}}, + organization = {R Foundation for Statistical Computing}, + address = {Vienna, Austria}, + year = {2021}, + url = {https://www.R-project.org/}, + } diff --git a/paper/paper.log b/paper/paper.log new file mode 100644 index 000000000..cf45b9f17 --- /dev/null +++ b/paper/paper.log @@ -0,0 +1,956 @@ +This is XeTeX, Version 3.141592653-2.6-0.999994 (TeX Live 2022) (preloaded format=xelatex 2022.9.27) 14 OCT 2022 11:30 +entering extended mode + restricted \write18 enabled. + %&-line parsing enabled. +**paper.tex +(./paper.tex +LaTeX2e <2022-06-01> patch level 5 +L3 programming layer <2022-08-30> (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/base/article.cls +Document Class: article 2021/10/04 v1.4n Standard LaTeX document class +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/base/size10.clo +File: size10.clo 2021/10/04 v1.4n Standard LaTeX file (size option) +) +\c@part=\count181 +\c@section=\count182 +\c@subsection=\count183 +\c@subsubsection=\count184 +\c@paragraph=\count185 +\c@subparagraph=\count186 +\c@figure=\count187 +\c@table=\count188 +\abovecaptionskip=\skip47 +\belowcaptionskip=\skip48 +\bibindent=\dimen138 +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/marginnote/marginnote.sty +Package: marginnote 2018/08/09 v1.4b non floating margin notes for LaTeX +\c@mn@abspage=\count189 +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/graphics/graphicx.sty +Package: graphicx 2021/09/16 v1.2d Enhanced LaTeX Graphics (DPC,SPQR) +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/graphics/keyval.sty +Package: keyval 2022/05/29 v1.15 key=value parser (DPC) +\KV@toks@=\toks16 +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/graphics/graphics.sty +Package: graphics 2022/03/10 v1.4e Standard LaTeX Graphics (DPC,SPQR) +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/graphics/trig.sty +Package: trig 2021/08/11 v1.11 sin cos tan (DPC) +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/graphics-cfg/graphics.cfg +File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration +) +Package graphics Info: Driver file: xetex.def on input line 107. +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/graphics-def/xetex.def +File: xetex.def 2022/09/22 v5.0n Graphics/color driver for xetex +\stockwidth=\dimen139 +\stockheight=\dimen140 +)) +\Gin@req@height=\dimen141 +\Gin@req@width=\dimen142 +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/xcolor/xcolor.sty +Package: xcolor 2022/06/12 v2.14 LaTeX color extensions (UK) +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/graphics-cfg/color.cfg +File: color.cfg 2016/01/02 v1.6 sample color configuration +) +Package xcolor Info: Driver file: xetex.def on input line 227. +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/graphics/mathcolor.ltx) +Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1353. +Package xcolor Info: Model `RGB' extended on input line 1369. +Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1371. +Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1372. +Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1373. +Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1374. +Package xcolor Info: Model `Gray' substituted by `gray' on input line 1375. +Package xcolor Info: Model `wave' substituted by `hsb' on input line 1376. +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/preprint/authblk.sty +Package: authblk 2001/02/27 1.3 (PWD) +\affilsep=\skip49 +\@affilsep=\skip50 +\c@Maxaffil=\count190 +\c@authors=\count191 +\c@affil=\count192 +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/etoolbox/etoolbox.sty +Package: etoolbox 2020/10/05 v2.5k e-TeX tools for LaTeX (JAW) +\etb@tempcnta=\count193 +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/titlesec/titlesec.sty +Package: titlesec 2021/07/05 v2.14 Sectioning titles +\ttl@box=\box51 +\beforetitleunit=\skip51 +\aftertitleunit=\skip52 +\ttl@plus=\dimen143 +\ttl@minus=\dimen144 +\ttl@toksa=\toks17 +\titlewidth=\dimen145 +\titlewidthlast=\dimen146 +\titlewidthfirst=\dimen147 +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/tools/calc.sty +Package: calc 2017/05/25 v4.3 Infix arithmetic (KKT,FJ) +\calc@Acount=\count194 +\calc@Bcount=\count195 +\calc@Adimen=\dimen148 +\calc@Bdimen=\dimen149 +\calc@Askip=\skip53 +\calc@Bskip=\skip54 +LaTeX Info: Redefining \setlength on input line 80. +LaTeX Info: Redefining \addtolength on input line 81. +\calc@Ccount=\count196 +\calc@Cskip=\skip55 +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.tex +\pgfutil@everybye=\toks18 +\pgfutil@tempdima=\dimen150 +\pgfutil@tempdimb=\dimen151 +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/utilities/pgfutil-common-lists.tex)) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def +\pgfutil@abb=\box52 +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/pgf.revision.tex) +Package: pgfrcs 2021/05/15 v3.1.9a (3.1.9a) +)) +Package: pgf 2021/05/15 v3.1.9a (3.1.9a) +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex +Package: pgfsys 2021/05/15 v3.1.9a (3.1.9a) +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex +\pgfkeys@pathtoks=\toks19 +\pgfkeys@temptoks=\toks20 +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/utilities/pgfkeysfiltered.code.tex +\pgfkeys@tmptoks=\toks21 +)) +\pgf@x=\dimen152 +\pgf@y=\dimen153 +\pgf@xa=\dimen154 +\pgf@ya=\dimen155 +\pgf@xb=\dimen156 +\pgf@yb=\dimen157 +\pgf@xc=\dimen158 +\pgf@yc=\dimen159 +\pgf@xd=\dimen160 +\pgf@yd=\dimen161 +\w@pgf@writea=\write3 +\r@pgf@reada=\read2 +\c@pgf@counta=\count197 +\c@pgf@countb=\count198 +\c@pgf@countc=\count199 +\c@pgf@countd=\count266 +\t@pgf@toka=\toks22 +\t@pgf@tokb=\toks23 +\t@pgf@tokc=\toks24 +\pgf@sys@id@count=\count267 +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/systemlayer/pgf.cfg +File: pgf.cfg 2021/05/15 v3.1.9a (3.1.9a) +) +Driver file for pgf: pgfsys-xetex.def +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-xetex.def +File: pgfsys-xetex.def 2021/05/15 v3.1.9a (3.1.9a) +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-dvipdfmx.def +File: pgfsys-dvipdfmx.def 2021/05/15 v3.1.9a (3.1.9a) +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-pdf.def +File: pgfsys-common-pdf.def 2021/05/15 v3.1.9a (3.1.9a) +) +\pgfsys@objnum=\count268 +))) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex +File: pgfsyssoftpath.code.tex 2021/05/15 v3.1.9a (3.1.9a) +\pgfsyssoftpath@smallbuffer@items=\count269 +\pgfsyssoftpath@bigbuffer@items=\count270 +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code.tex +File: pgfsysprotocol.code.tex 2021/05/15 v3.1.9a (3.1.9a) +)) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex +Package: pgfcore 2021/05/15 v3.1.9a (3.1.9a) +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/math/pgfmathcalc.code.tex (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/math/pgfmathutil.code.tex) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/math/pgfmathparser.code.tex +\pgfmath@dimen=\dimen162 +\pgfmath@count=\count271 +\pgfmath@box=\box53 +\pgfmath@toks=\toks25 +\pgfmath@stack@operand=\toks26 +\pgfmath@stack@operation=\toks27 +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.tex (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.basic.code.tex) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.trigonometric.code.tex) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.random.code.tex) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.comparison.code.tex) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.base.code.tex) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.round.code.tex) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.misc.code.tex) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.integerarithmetics.code.tex))) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex +\c@pgfmathroundto@lastzeros=\count272 +)) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/math/pgfint.code.tex) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepoints.code.tex +File: pgfcorepoints.code.tex 2021/05/15 v3.1.9a (3.1.9a) +\pgf@picminx=\dimen163 +\pgf@picmaxx=\dimen164 +\pgf@picminy=\dimen165 +\pgf@picmaxy=\dimen166 +\pgf@pathminx=\dimen167 +\pgf@pathmaxx=\dimen168 +\pgf@pathminy=\dimen169 +\pgf@pathmaxy=\dimen170 +\pgf@xx=\dimen171 +\pgf@xy=\dimen172 +\pgf@yx=\dimen173 +\pgf@yy=\dimen174 +\pgf@zx=\dimen175 +\pgf@zy=\dimen176 +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathconstruct.code.tex +File: pgfcorepathconstruct.code.tex 2021/05/15 v3.1.9a (3.1.9a) +\pgf@path@lastx=\dimen177 +\pgf@path@lasty=\dimen178 +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathusage.code.tex +File: pgfcorepathusage.code.tex 2021/05/15 v3.1.9a (3.1.9a) +\pgf@shorten@end@additional=\dimen179 +\pgf@shorten@start@additional=\dimen180 +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/basiclayer/pgfcorescopes.code.tex +File: pgfcorescopes.code.tex 2021/05/15 v3.1.9a (3.1.9a) +\pgfpic=\box54 +\pgf@hbox=\box55 +\pgf@layerbox@main=\box56 +\pgf@picture@serial@count=\count273 +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/basiclayer/pgfcoregraphicstate.code.tex +File: pgfcoregraphicstate.code.tex 2021/05/15 v3.1.9a (3.1.9a) +\pgflinewidth=\dimen181 +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransformations.code.tex +File: pgfcoretransformations.code.tex 2021/05/15 v3.1.9a (3.1.9a) +\pgf@pt@x=\dimen182 +\pgf@pt@y=\dimen183 +\pgf@pt@temp=\dimen184 +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/basiclayer/pgfcorequick.code.tex +File: pgfcorequick.code.tex 2021/05/15 v3.1.9a (3.1.9a) +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreobjects.code.tex +File: pgfcoreobjects.code.tex 2021/05/15 v3.1.9a (3.1.9a) +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathprocessing.code.tex +File: pgfcorepathprocessing.code.tex 2021/05/15 v3.1.9a (3.1.9a) +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/basiclayer/pgfcorearrows.code.tex +File: pgfcorearrows.code.tex 2021/05/15 v3.1.9a (3.1.9a) +\pgfarrowsep=\dimen185 +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex +File: pgfcoreshade.code.tex 2021/05/15 v3.1.9a (3.1.9a) +\pgf@max=\dimen186 +\pgf@sys@shading@range@num=\count274 +\pgf@shadingcount=\count275 +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreimage.code.tex +File: pgfcoreimage.code.tex 2021/05/15 v3.1.9a (3.1.9a) +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreexternal.code.tex +File: pgfcoreexternal.code.tex 2021/05/15 v3.1.9a (3.1.9a) +\pgfexternal@startupbox=\box57 +)) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/basiclayer/pgfcorelayers.code.tex +File: pgfcorelayers.code.tex 2021/05/15 v3.1.9a (3.1.9a) +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransparency.code.tex +File: pgfcoretransparency.code.tex 2021/05/15 v3.1.9a (3.1.9a) +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepatterns.code.tex +File: pgfcorepatterns.code.tex 2021/05/15 v3.1.9a (3.1.9a) +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/basiclayer/pgfcorerdf.code.tex +File: pgfcorerdf.code.tex 2021/05/15 v3.1.9a (3.1.9a) +))) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/modules/pgfmoduleshapes.code.tex +File: pgfmoduleshapes.code.tex 2021/05/15 v3.1.9a (3.1.9a) +\pgfnodeparttextbox=\box58 +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.code.tex +File: pgfmoduleplot.code.tex 2021/05/15 v3.1.9a (3.1.9a) +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65.sty +Package: pgfcomp-version-0-65 2021/05/15 v3.1.9a (3.1.9a) +\pgf@nodesepstart=\dimen187 +\pgf@nodesepend=\dimen188 +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18.sty +Package: pgfcomp-version-1-18 2021/05/15 v3.1.9a (3.1.9a) +)) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/pgf/utilities/pgffor.sty (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex)) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/pgf/math/pgfmath.sty (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex)) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex +Package: pgffor 2021/05/15 v3.1.9a (3.1.9a) +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex) +\pgffor@iter=\dimen189 +\pgffor@skip=\dimen190 +\pgffor@stack=\toks28 +\pgffor@toks=\toks29 +)) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex +Package: tikz 2021/05/15 v3.1.9a (3.1.9a) +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothandlers.code.tex +File: pgflibraryplothandlers.code.tex 2021/05/15 v3.1.9a (3.1.9a) +\pgf@plot@mark@count=\count276 +\pgfplotmarksize=\dimen191 +) +\tikz@lastx=\dimen192 +\tikz@lasty=\dimen193 +\tikz@lastxsaved=\dimen194 +\tikz@lastysaved=\dimen195 +\tikz@lastmovetox=\dimen196 +\tikz@lastmovetoy=\dimen197 +\tikzleveldistance=\dimen198 +\tikzsiblingdistance=\dimen199 +\tikz@figbox=\box59 +\tikz@figbox@bg=\box60 +\tikz@tempbox=\box61 +\tikz@tempbox@bg=\box62 +\tikztreelevel=\count277 +\tikznumberofchildren=\count278 +\tikznumberofcurrentchild=\count279 +\tikz@fig@count=\count280 +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/modules/pgfmodulematrix.code.tex +File: pgfmodulematrix.code.tex 2021/05/15 v3.1.9a (3.1.9a) +\pgfmatrixcurrentrow=\count281 +\pgfmatrixcurrentcolumn=\count282 +\pgf@matrix@numberofcolumns=\count283 +) +\tikz@expandcount=\count284 +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarytopaths.code.tex +File: tikzlibrarytopaths.code.tex 2021/05/15 v3.1.9a (3.1.9a) +))) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/hyperref/hyperref.sty +Package: hyperref 2022-09-22 v7.00t Hypertext links for LaTeX +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty +Package: ltxcmds 2020-05-10 v1.25 LaTeX kernel commands for general use (HO) +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/iftex/iftex.sty +Package: iftex 2022/02/03 v1.0f TeX engine tests +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty +Package: pdftexcmds 2020-06-27 v0.33 Utility functions of pdfTeX for LuaTeX (HO) +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/infwarerr/infwarerr.sty +Package: infwarerr 2019/12/03 v1.5 Providing info/warning/error messages (HO) +) +Package pdftexcmds Info: \pdf@primitive is available. +Package pdftexcmds Info: \pdf@ifprimitive is available. +Package pdftexcmds Info: \pdfdraftmode not found. +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty +Package: kvsetkeys 2019/12/15 v1.18 Key value parser (HO) +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty +Package: kvdefinekeys 2019-12-19 v1.6 Define keys (HO) +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pdfescape/pdfescape.sty +Package: pdfescape 2019/12/09 v1.15 Implements pdfTeX's escape features (HO) +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/hycolor/hycolor.sty +Package: hycolor 2020-01-27 v1.10 Color options for hyperref/bookmark (HO) +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty +Package: letltxmacro 2019/12/03 v1.6 Let assignment for LaTeX macros (HO) +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/auxhook/auxhook.sty +Package: auxhook 2019-12-17 v1.6 Hooks for auxiliary files (HO) +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/hyperref/nameref.sty +Package: nameref 2022-05-17 v2.50 Cross-referencing by name of section +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/refcount/refcount.sty +Package: refcount 2019/12/15 v3.6 Data extraction from label references (HO) +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty +Package: gettitlestring 2019/12/15 v1.6 Cleanup title references (HO) +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/kvoptions/kvoptions.sty +Package: kvoptions 2022-06-15 v3.15 Key value format for package options (HO) +)) +\c@section@level=\count285 +) +\@linkdim=\dimen256 +\Hy@linkcounter=\count286 +\Hy@pagecounter=\count287 +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/hyperref/pd1enc.def +File: pd1enc.def 2022-09-22 v7.00t Hyperref: PDFDocEncoding definition (HO) +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/intcalc/intcalc.sty +Package: intcalc 2019/12/15 v1.3 Expandable calculations with integers (HO) +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/etexcmds/etexcmds.sty +Package: etexcmds 2019/12/15 v1.7 Avoid name clashes with e-TeX commands (HO) +) +\Hy@SavedSpaceFactor=\count288 +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/hyperref/puenc.def +File: puenc.def 2022-09-22 v7.00t Hyperref: PDF Unicode definition (HO) +) +Package hyperref Info: Hyper figures OFF on input line 4162. +Package hyperref Info: Link nesting OFF on input line 4167. +Package hyperref Info: Hyper index ON on input line 4170. +Package hyperref Info: Plain pages OFF on input line 4177. +Package hyperref Info: Backreferencing OFF on input line 4182. +Package hyperref Info: Implicit mode ON; LaTeX internals redefined. +Package hyperref Info: Bookmarks ON on input line 4410. +\c@Hy@tempcnt=\count289 +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/url/url.sty +\Urlmuskip=\muskip16 +Package: url 2013/09/16 ver 3.4 Verb mode for urls, etc. +) +LaTeX Info: Redefining \url on input line 4748. +\XeTeXLinkMargin=\dimen257 +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/bitset/bitset.sty +Package: bitset 2019/12/09 v1.3 Handle bit-vector datatype (HO) +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty +Package: bigintcalc 2019/12/15 v1.5 Expandable calculations on big integers (HO) +)) +\Fld@menulength=\count290 +\Field@Width=\dimen258 +\Fld@charsize=\dimen259 +Package hyperref Info: Hyper figures OFF on input line 6027. +Package hyperref Info: Link nesting OFF on input line 6032. +Package hyperref Info: Hyper index ON on input line 6035. +Package hyperref Info: backreferencing OFF on input line 6042. +Package hyperref Info: Link coloring OFF on input line 6047. +Package hyperref Info: Link coloring with OCG OFF on input line 6052. +Package hyperref Info: PDF/A mode OFF on input line 6057. +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/base/atbegshi-ltx.sty +Package: atbegshi-ltx 2021/01/10 v1.0c Emulation of the original atbegshi +package with kernel methods +) +\Hy@abspage=\count291 +\c@Item=\count292 +\c@Hfootnote=\count293 +) +Package hyperref Info: Driver (autodetected): hxetex. +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/hyperref/hxetex.def +File: hxetex.def 2022-09-22 v7.00t Hyperref driver for XeTeX +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/stringenc/stringenc.sty +Package: stringenc 2019/11/29 v1.12 Convert strings between diff. encodings (HO) +) +\pdfm@box=\box63 +\c@Hy@AnnotLevel=\count294 +\HyField@AnnotCount=\count295 +\Fld@listcount=\count296 +\c@bookmark@seq@number=\count297 +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty +Package: rerunfilecheck 2022-07-10 v1.10 Rerun checks for auxiliary files (HO) +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/base/atveryend-ltx.sty +Package: atveryend-ltx 2020/08/19 v1.0a Emulation of the original atveryend package +with kernel methods +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty +Package: uniquecounter 2019/12/15 v1.4 Provide unlimited unique counter (HO) +) +Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 285. +) +\Hy@SectionHShift=\skip56 +) +Package hyperref Info: Option `colorlinks' set `true' on input line 12. +Package hyperref Info: Option `breaklinks' set `true' on input line 12. +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/caption/caption.sty +Package: caption 2022/03/01 v3.6b Customizing captions (AR) +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/caption/caption3.sty +Package: caption3 2022/03/17 v2.3b caption3 kernel (AR) +\caption@tempdima=\dimen260 +\captionmargin=\dimen261 +\caption@leftmargin=\dimen262 +\caption@rightmargin=\dimen263 +\caption@width=\dimen264 +\caption@indent=\dimen265 +\caption@parindent=\dimen266 +\caption@hangindent=\dimen267 +Package caption Info: Standard document class detected. +) +\c@caption@flags=\count298 +\c@continuedfloat=\count299 +Package caption Info: hyperref package is loaded. +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/tcolorbox/tcolorbox.sty +Package: tcolorbox 2022/06/24 version 5.1.1 text color boxes +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/tools/verbatim.sty +Package: verbatim 2020-07-07 v1.5u LaTeX2e package for verbatim enhancements +\every@verbatim=\toks30 +\verbatim@line=\toks31 +\verbatim@in@stream=\read3 +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/environ/environ.sty +Package: environ 2014/05/04 v0.3 A new way to define environments +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/trimspaces/trimspaces.sty +Package: trimspaces 2009/09/17 v1.1 Trim spaces around a token list +) +\@envbody=\toks32 +) +\tcb@titlebox=\box64 +\tcb@upperbox=\box65 +\tcb@lowerbox=\box66 +\tcb@phantombox=\box67 +\c@tcbbreakpart=\count300 +\c@tcblayer=\count301 +\c@tcolorbox@number=\count302 +\tcb@temp=\box68 +\tcb@temp=\box69 +\tcb@temp=\box70 +\tcb@temp=\box71 +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/amsfonts/amssymb.sty +Package: amssymb 2013/01/14 v3.01 AMS font symbols +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/amsfonts/amsfonts.sty +Package: amsfonts 2013/01/14 v3.01 Basic AMSFonts support +\@emptytoks=\toks33 +\symAMSa=\mathgroup4 +\symAMSb=\mathgroup5 +LaTeX Font Info: Redeclaring math symbol \hbar on input line 98. +LaTeX Font Info: Overwriting math alphabet `\mathfrak' in version `bold' +(Font) U/euf/m/n --> U/euf/b/n on input line 106. +)) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/amsmath/amsmath.sty +Package: amsmath 2022/04/08 v2.17n AMS math features +\@mathmargin=\skip57 +For additional information on amsmath, use the `?' option. +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/amsmath/amstext.sty +Package: amstext 2021/08/26 v2.01 AMS text +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/amsmath/amsgen.sty +File: amsgen.sty 1999/11/30 v2.0 generic functions +\@emptytoks=\toks34 +\ex@=\dimen268 +)) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/amsmath/amsbsy.sty +Package: amsbsy 1999/11/29 v1.2d Bold Symbols +\pmbraise@=\dimen269 +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/amsmath/amsopn.sty +Package: amsopn 2022/04/08 v2.04 operator names +) +\inf@bad=\count303 +LaTeX Info: Redefining \frac on input line 234. +\uproot@=\count304 +\leftroot@=\count305 +LaTeX Info: Redefining \overline on input line 399. +LaTeX Info: Redefining \colon on input line 410. +\classnum@=\count306 +\DOTSCASE@=\count307 +LaTeX Info: Redefining \ldots on input line 496. +LaTeX Info: Redefining \dots on input line 499. +LaTeX Info: Redefining \cdots on input line 620. +\Mathstrutbox@=\box72 +\strutbox@=\box73 +LaTeX Info: Redefining \big on input line 722. +LaTeX Info: Redefining \Big on input line 723. +LaTeX Info: Redefining \bigg on input line 724. +LaTeX Info: Redefining \Bigg on input line 725. +\big@size=\dimen270 +LaTeX Font Info: Redeclaring font encoding OML on input line 743. +LaTeX Font Info: Redeclaring font encoding OMS on input line 744. +\macc@depth=\count308 +LaTeX Info: Redefining \bmod on input line 905. +LaTeX Info: Redefining \pmod on input line 910. +LaTeX Info: Redefining \smash on input line 940. +LaTeX Info: Redefining \relbar on input line 970. +LaTeX Info: Redefining \Relbar on input line 971. +\c@MaxMatrixCols=\count309 +\dotsspace@=\muskip17 +\c@parentequation=\count310 +\dspbrk@lvl=\count311 +\tag@help=\toks35 +\row@=\count312 +\column@=\count313 +\maxfields@=\count314 +\andhelp@=\toks36 +\eqnshift@=\dimen271 +\alignsep@=\dimen272 +\tagshift@=\dimen273 +\tagwidth@=\dimen274 +\totwidth@=\dimen275 +\lineht@=\dimen276 +\@envbody=\toks37 +\multlinegap=\skip58 +\multlinetaggap=\skip59 +\mathdisplay@stack=\toks38 +LaTeX Info: Redefining \[ on input line 2953. +LaTeX Info: Redefining \] on input line 2954. +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/iftex/ifxetex.sty +Package: ifxetex 2019/10/25 v0.7 ifxetex legacy package. Use iftex instead. +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/iftex/ifluatex.sty +Package: ifluatex 2019/10/25 v1.5 ifluatex legacy package. Use iftex instead. +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/seqsplit/seqsplit.sty +Package: seqsplit 2006/08/07 v0.1 Splitting long sequences (DNA, RNA, proteins, etc.) +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/base/fixltx2e.sty +Package: fixltx2e 2016/12/29 v2.1a fixes to LaTeX (obsolete) +Applying: [2015/01/01] Old fixltx2e package on input line 46. + +Package fixltx2e Warning: fixltx2e is not required with releases after 2015 +(fixltx2e) All fixes are now in the LaTeX kernel. +(fixltx2e) See the latexrelease package for details. + +Already applied: [0000/00/00] Old fixltx2e package on input line 53. +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/biblatex/biblatex.sty +Package: biblatex 2022/07/12 v3.18b programmable bibliographies (PK/MW) +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/logreq/logreq.sty +Package: logreq 2010/08/04 v1.0 xml request logger +\lrq@indent=\count315 +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/logreq/logreq.def +File: logreq.def 2010/08/04 v1.0 logreq spec v1.0 +)) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/base/ifthen.sty +Package: ifthen 2022/04/13 v1.1d Standard LaTeX ifthen package (DPC) +) +\c@tabx@nest=\count316 +\c@listtotal=\count317 +\c@listcount=\count318 +\c@liststart=\count319 +\c@liststop=\count320 +\c@citecount=\count321 +\c@citetotal=\count322 +\c@multicitecount=\count323 +\c@multicitetotal=\count324 +\c@instcount=\count325 +\c@maxnames=\count326 +\c@minnames=\count327 +\c@maxitems=\count328 +\c@minitems=\count329 +\c@citecounter=\count330 +\c@maxcitecounter=\count331 +\c@savedcitecounter=\count332 +\c@uniquelist=\count333 +\c@uniquename=\count334 +\c@refsection=\count335 +\c@refsegment=\count336 +\c@maxextratitle=\count337 +\c@maxextratitleyear=\count338 +\c@maxextraname=\count339 +\c@maxextradate=\count340 +\c@maxextraalpha=\count341 +\c@abbrvpenalty=\count342 +\c@highnamepenalty=\count343 +\c@lownamepenalty=\count344 +\c@maxparens=\count345 +\c@parenlevel=\count346 +\blx@tempcnta=\count347 +\blx@tempcntb=\count348 +\blx@tempcntc=\count349 +\c@blx@maxsection=\count350 +\blx@maxsegment@0=\count351 +\blx@notetype=\count352 +\blx@parenlevel@text=\count353 +\blx@parenlevel@foot=\count354 +\blx@sectionciteorder@0=\count355 +\blx@sectionciteorderinternal@0=\count356 +\blx@entrysetcounter=\count357 +\blx@biblioinstance=\count358 +\labelnumberwidth=\skip60 +\labelalphawidth=\skip61 +\biblabelsep=\skip62 +\bibitemsep=\skip63 +\bibnamesep=\skip64 +\bibinitsep=\skip65 +\bibparsep=\skip66 +\bibhang=\skip67 +\blx@bcfin=\read4 +\blx@bcfout=\write4 +\blx@langwohyphens=\language3 +\c@mincomprange=\count359 +\c@maxcomprange=\count360 +\c@mincompwidth=\count361 +Package biblatex Info: Trying to load biblatex default data model... +Package biblatex Info: ... file 'blx-dm.def' found. +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/biblatex/blx-dm.def +File: blx-dm.def 2022/07/12 v3.18b biblatex localization (PK/MW) +) +Package biblatex Info: Trying to load biblatex custom data model... +Package biblatex Info: ... file 'biblatex-dm.cfg' not found. +\c@afterword=\count362 +\c@savedafterword=\count363 +\c@annotator=\count364 +\c@savedannotator=\count365 +\c@author=\count366 +\c@savedauthor=\count367 +\c@bookauthor=\count368 +\c@savedbookauthor=\count369 +\c@commentator=\count370 +\c@savedcommentator=\count371 +\c@editor=\count372 +\c@savededitor=\count373 +\c@editora=\count374 +\c@savededitora=\count375 +\c@editorb=\count376 +\c@savededitorb=\count377 +\c@editorc=\count378 +\c@savededitorc=\count379 +\c@foreword=\count380 +\c@savedforeword=\count381 +\c@holder=\count382 +\c@savedholder=\count383 +\c@introduction=\count384 +\c@savedintroduction=\count385 +\c@namea=\count386 +\c@savednamea=\count387 +\c@nameb=\count388 +\c@savednameb=\count389 +\c@namec=\count390 +\c@savednamec=\count391 +\c@translator=\count392 +\c@savedtranslator=\count393 +\c@shortauthor=\count394 +\c@savedshortauthor=\count395 +\c@shorteditor=\count396 +\c@savedshorteditor=\count397 +\c@labelname=\count398 +\c@savedlabelname=\count399 +\c@institution=\count400 +\c@savedinstitution=\count401 +\c@lista=\count402 +\c@savedlista=\count403 +\c@listb=\count404 +\c@savedlistb=\count405 +\c@listc=\count406 +\c@savedlistc=\count407 +\c@listd=\count408 +\c@savedlistd=\count409 +\c@liste=\count410 +\c@savedliste=\count411 +\c@listf=\count412 +\c@savedlistf=\count413 +\c@location=\count414 +\c@savedlocation=\count415 +\c@organization=\count416 +\c@savedorganization=\count417 +\c@origlocation=\count418 +\c@savedoriglocation=\count419 +\c@origpublisher=\count420 +\c@savedorigpublisher=\count421 +\c@publisher=\count422 +\c@savedpublisher=\count423 +\c@language=\count424 +\c@savedlanguage=\count425 +\c@origlanguage=\count426 +\c@savedoriglanguage=\count427 +\c@pageref=\count428 +\c@savedpageref=\count429 +\shorthandwidth=\skip68 +\shortjournalwidth=\skip69 +\shortserieswidth=\skip70 +\shorttitlewidth=\skip71 +\shortauthorwidth=\skip72 +\shorteditorwidth=\skip73 +\locallabelnumberwidth=\skip74 +\locallabelalphawidth=\skip75 +\localshorthandwidth=\skip76 +\localshortjournalwidth=\skip77 +\localshortserieswidth=\skip78 +\localshorttitlewidth=\skip79 +\localshortauthorwidth=\skip80 +\localshorteditorwidth=\skip81 +Package biblatex Info: Trying to load enhanced support for Unicode engines... +Package biblatex Info: ... file 'blx-unicode.def' found. +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/biblatex/blx-unicode.def) +Package biblatex Info: Trying to load compatibility code... +Package biblatex Info: ... file 'blx-compat.def' found. +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/biblatex/blx-compat.def +File: blx-compat.def 2022/07/12 v3.18b biblatex compatibility (PK/MW) +) +Package biblatex Info: Trying to load generic definitions... +Package biblatex Info: ... file 'biblatex.def' found. +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/biblatex/biblatex.def +File: biblatex.def 2022/07/12 v3.18b biblatex compatibility (PK/MW) +\c@textcitecount=\count430 +\c@textcitetotal=\count431 +\c@textcitemaxnames=\count432 +\c@biburlbigbreakpenalty=\count433 +\c@biburlbreakpenalty=\count434 +\c@biburlnumpenalty=\count435 +\c@biburlucpenalty=\count436 +\c@biburllcpenalty=\count437 +\biburlbigskip=\muskip18 +\biburlnumskip=\muskip19 +\biburlucskip=\muskip20 +\biburllcskip=\muskip21 +\c@smartand=\count438 +) +Package biblatex Info: Trying to load bibliography style 'numeric'... +Package biblatex Info: ... file 'numeric.bbx' found. +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/biblatex/bbx/numeric.bbx +File: numeric.bbx 2022/07/12 v3.18b biblatex bibliography style (PK/MW) +Package biblatex Info: Trying to load bibliography style 'standard'... +Package biblatex Info: ... file 'standard.bbx' found. +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/biblatex/bbx/standard.bbx +File: standard.bbx 2022/07/12 v3.18b biblatex bibliography style (PK/MW) +\c@bbx:relatedcount=\count439 +\c@bbx:relatedtotal=\count440 +)) +Package biblatex Info: Trying to load citation style 'numeric'... +Package biblatex Info: ... file 'numeric.cbx' found. +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/biblatex/cbx/numeric.cbx +File: numeric.cbx 2022/07/12 v3.18b biblatex citation style (PK/MW) +Package biblatex Info: Redefining '\cite'. +Package biblatex Info: Redefining '\parencite'. +Package biblatex Info: Redefining '\footcite'. +Package biblatex Info: Redefining '\footcitetext'. +Package biblatex Info: Redefining '\smartcite'. +Package biblatex Info: Redefining '\supercite'. +Package biblatex Info: Redefining '\textcite'. +Package biblatex Info: Redefining '\textcites'. +Package biblatex Info: Redefining '\cites'. +Package biblatex Info: Redefining '\parencites'. +Package biblatex Info: Redefining '\smartcites'. +) +Package biblatex Info: Trying to load configuration file... +Package biblatex Info: ... file 'biblatex.cfg' found. +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/biblatex/biblatex.cfg +File: biblatex.cfg +) +Package biblatex Info: XeTeX detected. +(biblatex) Assuming input encoding 'utf8'. +Package biblatex Info: Document encoding is UTF8 .... +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/l3kernel/expl3.sty +Package: expl3 2022-08-30 L3 programming layer (loader) +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/l3backend/l3backend-xetex.def +File: l3backend-xetex.def 2022-08-30 L3 backend support: XeTeX +\g__graphics_track_int=\count441 +\l__pdf_internal_box=\box74 +\g__pdf_backend_object_int=\count442 +\g__pdf_backend_annotation_int=\count443 +\g__pdf_backend_link_int=\count444 +)) +Package biblatex Info: ... and expl3 +(biblatex) 2022-08-30 L3 programming layer (loader) +(biblatex) is new enough (at least 2020/04/06), +(biblatex) setting 'casechanger=expl3'. +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/biblatex/blx-case-expl3.sty (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/l3packages/xparse/xparse.sty +Package: xparse 2022-06-22 L3 Experimental document command parser +) +Package: blx-case-expl3 2022/07/12 v3.18b expl3 case changing code for biblatex +)) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/geometry/geometry.sty +Package: geometry 2020/01/02 v5.9 Page Geometry +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/iftex/ifvtex.sty +Package: ifvtex 2019/10/25 v1.7 ifvtex legacy package. Use iftex instead. +) +\Gm@cnth=\count445 +\Gm@cntv=\count446 +\c@Gm@tempcnt=\count447 +\Gm@bindingoffset=\dimen277 +\Gm@wd@mp=\dimen278 +\Gm@odd@mp=\dimen279 +\Gm@even@mp=\dimen280 +\Gm@layoutwidth=\dimen281 +\Gm@layoutheight=\dimen282 +\Gm@layouthoffset=\dimen283 +\Gm@layoutvoffset=\dimen284 +\Gm@dimlist=\toks39 +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty +Package: fancyhdr 2022/05/18 v4.0.3 Extensive control of page headers and footers +\f@nch@headwidth=\skip82 +\f@nch@O@elh=\skip83 +\f@nch@O@erh=\skip84 +\f@nch@O@olh=\skip85 +\f@nch@O@orh=\skip86 +\f@nch@O@elf=\skip87 +\f@nch@O@erf=\skip88 +\f@nch@O@olf=\skip89 +\f@nch@O@orf=\skip90 +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/xelatex/mathspec/mathspec.sty +Package: mathspec 2016/12/22 v0.2b LaTeX Package (Mathematics font selection for XeLaTeX) +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/fontspec/fontspec.sty +Package: fontspec 2022/01/15 v2.8a Font selection for XeLaTeX and LuaLaTeX +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/fontspec/fontspec-xetex.sty +Package: fontspec-xetex 2022/01/15 v2.8a Font selection for XeLaTeX and LuaLaTeX +\l__fontspec_script_int=\count448 +\l__fontspec_language_int=\count449 +\l__fontspec_strnum_int=\count450 +\l__fontspec_tmp_int=\count451 +\l__fontspec_tmpa_int=\count452 +\l__fontspec_tmpb_int=\count453 +\l__fontspec_tmpc_int=\count454 +\l__fontspec_em_int=\count455 +\l__fontspec_emdef_int=\count456 +\l__fontspec_strong_int=\count457 +\l__fontspec_strongdef_int=\count458 +\l__fontspec_tmpa_dim=\dimen285 +\l__fontspec_tmpb_dim=\dimen286 +\l__fontspec_tmpc_dim=\dimen287 +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/base/fontenc.sty +Package: fontenc 2021/04/29 v2.0v Standard LaTeX package +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/fontspec/fontspec.cfg))) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/xkeyval/xkeyval.sty +Package: xkeyval 2022/06/16 v2.9 package option processing (HA) +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/xkeyval/xkeyval.tex (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/xkeyval/xkvutils.tex +\XKV@toks=\toks40 +\XKV@tempa@toks=\toks41 +) +\XKV@depth=\count459 +File: xkeyval.tex 2014/12/03 v2.7a key=value parser (HA) +)) +\c@eu@=\count460 +\c@eu@i=\count461 +\c@mkern=\count462 +) +Package hyperref Info: Option `unicode' set `true' on input line 150. +Package hyperref Info: Option `breaklinks' set `true' on input line 150. +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/grffile/grffile.sty +Package: grffile 2019/11/11 v2.1 Extended file name support for graphics (legacy) +Package grffile Info: This package is an empty stub for compatibility on input line 40. +) +\@quotelevel=\count463 +\@quotereset=\count464 +(./paper.aux) +\openout1 = `paper.aux'. + +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 194. +LaTeX Font Info: ... okay on input line 194. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 194. +LaTeX Font Info: ... okay on input line 194. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 194. +LaTeX Font Info: ... okay on input line 194. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 194. +LaTeX Font Info: ... okay on input line 194. +LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 194. +LaTeX Font Info: Trying to load font information for TS1+cmr on input line 194. +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/base/ts1cmr.fd +File: ts1cmr.fd 2019/12/16 v2.5j Standard LaTeX font definitions +) +LaTeX Font Info: ... okay on input line 194. +LaTeX Font Info: Checking defaults for TU/lmr/m/n on input line 194. +LaTeX Font Info: ... okay on input line 194. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 194. +LaTeX Font Info: ... okay on input line 194. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 194. +LaTeX Font Info: ... okay on input line 194. +LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 194. +LaTeX Font Info: ... okay on input line 194. +LaTeX Font Info: Checking defaults for PU/pdf/m/n on input line 194. +LaTeX Font Info: ... okay on input line 194. +Package hyperref Info: Link coloring ON on input line 194. +(./paper.out) (./paper.out) +\@outlinefile=\write5 +\openout5 = `paper.out'. + +Package caption Info: Begin \AtBeginDocument code. +Package caption Info: End \AtBeginDocument code. +Package biblatex Info: Trying to load language 'english'... +Package biblatex Info: ... file 'english.lbx' found. +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/biblatex/lbx/english.lbx +File: english.lbx 2022/07/12 v3.18b biblatex localization (PK/MW) +) +Package biblatex Info: XeTeX detected. +(biblatex) Assuming input encoding 'utf8'. +Package biblatex Info: Automatic encoding selection. +(biblatex) Assuming data encoding 'utf8'. +\openout4 = `paper.bcf'. + +Package biblatex Info: Trying to load bibliographic data... +Package biblatex Info: ... file 'paper.bbl' not found. +No file paper.bbl. +Package biblatex Info: Reference section=0 on input line 194. +Package biblatex Info: Reference segment=0 on input line 194. +*geometry* driver: auto-detecting +*geometry* detected driver: xetex +*geometry* verbose mode - [ preamble ] result: +* driver: xetex +* paper: a4paper +* layout: +* layoutoffset:(h,v)=(0.0pt,0.0pt) +* modes: includemp +* h-part:(L,W,R)=(28.45274pt, 526.376pt, 42.67912pt) +* v-part:(T,H,B)=(99.58464pt, 660.10394pt, 85.35826pt) +* \paperwidth=597.50787pt +* \paperheight=845.04684pt +* \textwidth=387.33861pt +* \textheight=660.10394pt +* \oddsidemargin=95.22015pt +* \evensidemargin=95.22015pt +* \topmargin=-60.28131pt +* \headheight=62.59596pt +* \headsep=25.0pt +* \topskip=10.0pt +* \footskip=30.0pt +* \marginparwidth=128.0374pt +* \marginparsep=11.0pt +* \columnsep=10.0pt +* \skip\footins=9.0pt plus 4.0pt minus 2.0pt +* \hoffset=0.0pt +* \voffset=0.0pt +* \mag=1000 +* \@twocolumnfalse +* \@twosidefalse +* \@mparswitchfalse +* \@reversemargintrue +* (1in=72.27pt=25.4mm, 1cm=28.453pt) + +LaTeX Font Info: Trying to load font information for U+msa on input line 195. +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/amsfonts/umsa.fd +File: umsa.fd 2013/01/14 v3.01 AMS symbols A +) +LaTeX Font Info: Trying to load font information for U+msb on input line 195. +(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/amsfonts/umsb.fd +File: umsb.fd 2013/01/14 v3.01 AMS symbols B +) + +Package hyperref Warning: Suppressing link with empty target on input line 221. + + +Package hyperref Warning: Suppressing link with empty target on input line 221. + + +Package hyperref Warning: Suppressing link with empty target on input line 221. + +File: /Library/Frameworks/R.framework/Versions/4.2-arm64/Resources/library/rticles/rmarkdown/templates/joss/resources/JOSS-logo.png Graphic file (type bmp) + + +Package fancyhdr Warning: \headheight is too small (62.59596pt): +(fancyhdr) Make it at least 63.55022pt, for example: +(fancyhdr) \setlength{\headheight}{63.55022pt}. +(fancyhdr) You might also make \topmargin smaller to compensate: +(fancyhdr) \addtolength{\topmargin}{-0.95425pt}. + +LaTeX Font Info: Font shape `TU/lmss/m/it' in size <8> not available +(Font) Font shape `TU/lmss/m/sl' tried instead on input line 246. +[1 + +] (./paper.aux) +Package rerunfilecheck Info: File `paper.out' has not changed. +(rerunfilecheck) Checksum: 7BB3504EE329E57D794CF98580C83E4C;691. +Package logreq Info: Writing requests to 'paper.run.xml'. +\openout1 = `paper.run.xml'. + + ) +Here is how much of TeX's memory you used: + 34378 strings out of 477747 + 713059 string characters out of 5842604 + 1484692 words of memory out of 5000000 + 54925 multiletter control sequences out of 15000+600000 + 476107 words of font info for 73 fonts, out of 8000000 for 9000 + 14 hyphenation exceptions out of 8191 + 84i,12n,81p,678b,846s stack positions out of 10000i,1000n,20000p,200000b,200000s + +Output written on paper.pdf (1 page). diff --git a/paper/paper.md b/paper/paper.md new file mode 100644 index 000000000..cbb1d9f11 --- /dev/null +++ b/paper/paper.md @@ -0,0 +1,35 @@ +--- +title: "Static Code Analysis for R" +authors: + - name: Jim Hester + affiliation: 1 + orcid: ~ +affiliations: + - index: 1 + name: Netflix +date: "2022-10-14" +bibliography: paper.bib +output: rticles::joss_article +csl: apa.csl +journal: JOSS +link-citations: yes +tags: ["R", "linter", "tidyverse"] +--- + + + +# Summary + + +# Statement of Need + + +# Features + +# Licensing and Availability + +`{lintr}` is licensed under the MIT License, with all source code openly developed and stored on GitHub (), along with a corresponding issue tracker for bug reporting and feature enhancements. + +# Acknowledgments + +# References diff --git a/paper/paper.pdf b/paper/paper.pdf new file mode 100644 index 0000000000000000000000000000000000000000..8e455b371fa45a6296ba21885d312278f88e1113 GIT binary patch literal 112016 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

s$Y*G?**0XAuuX@9lsTjClR8%Mss#LhjJ=NFBf( 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 a88|q(IhdFtu)H4xCno|0g_wdk!v6s|p%TUb literal 0 HcmV?d00001 From dcaf9d1bfe8caea3c439bf374de2a772d1ae834e Mon Sep 17 00:00:00 2001 From: Indrajeet Patil Date: Sat, 31 Dec 2022 19:04:32 +0100 Subject: [PATCH 02/41] say more about need and benefits of lintr --- paper/paper.Rmd | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/paper/paper.Rmd b/paper/paper.Rmd index bb56f959b..29088c39a 100644 --- a/paper/paper.Rmd +++ b/paper/paper.Rmd @@ -30,12 +30,27 @@ set.seed(2016) # Summary +The R programming language is a popular choice for data analysis and statistical computing, and is used by a wide range of researchers and data scientists. The `{lintr}` package is designed to help users identify and correct problems in their R code. In this paper, we will introduce lintr and discuss its features and capabilities, as well as some of the ways in which it can be used to improve the quality and reliability of R code. # Statement of Need +`{lintr}` is an open source R package that provides static code analysis for R scripts and functions. It checks for a variety of common problems, including syntax errors, undefined variables, and style issues. It is designed to be easy to use and integrate into existing workflow. It can be run from the command line, or can be used as part of an automated build or continuous integration process. `{lintr}` also integrates with a number of popular IDEs and text editors, such as RStudio and Visual Studio Code, making it convenient for users to run `{lintr}` checks on their code as they work. # Features + +# Benefits of using `{lintr}` + +There are several benefits to using `{lintr}` to analyze and improve R code. One of the most obvious is that it can help users identify and fix problems in their code, which can save time and effort during the development process. By catching issues early on, `{lintr}` can help prevent bugs and other issues from creeping into code, which can save time and effort when it comes to debugging and testing. + +Another benefit of `{lintr}` is that it can help users write more readable and maintainable code. By enforcing a consistent style and highlighting potential issues, `{lintr}` can help users write code that is easier to understand and work with. This is especially important for larger projects or teams, where multiple contributors may be working on the same codebase and it is important to ensure that code is easy to follow and understand. + +Finally, `{lintr}` can be a useful tool for teaching and learning R. By providing feedback on code style and potential issues, it can help users learn good coding practices and improve their skills over time. This can be especially useful for beginners, who may not yet be familiar with all of the best practices for writing R code. + +# Conclusion + +In conclusion, `{lintr}` is a valuable tool for R users to help improve the quality and reliability of their code. Its static code analysis capabilities, combined with its flexibility and ease of use, make it relevant and valuable for a wide range of applications. + # Licensing and Availability `{lintr}` is licensed under the MIT License, with all source code openly developed and stored on GitHub (), along with a corresponding issue tracker for bug reporting and feature enhancements. From 2b530f47a06c6b78f25ed282d39152200dd9f5f9 Mon Sep 17 00:00:00 2001 From: Indrajeet Patil Date: Sat, 31 Dec 2022 19:07:24 +0100 Subject: [PATCH 03/41] update PDF as well --- paper/paper.log | 158 +++++++++++++++++++++++++----------------------- paper/paper.md | 17 +++++- paper/paper.pdf | Bin 112016 -> 119520 bytes 3 files changed, 100 insertions(+), 75 deletions(-) diff --git a/paper/paper.log b/paper/paper.log index cf45b9f17..d6a1efdeb 100644 --- a/paper/paper.log +++ b/paper/paper.log @@ -1,14 +1,14 @@ -This is XeTeX, Version 3.141592653-2.6-0.999994 (TeX Live 2022) (preloaded format=xelatex 2022.9.27) 14 OCT 2022 11:30 +This is XeTeX, Version 3.141592653-2.6-0.999994 (TeX Live 2022) (preloaded format=xelatex 2022.12.2) 31 DEC 2022 19:07 entering extended mode restricted \write18 enabled. %&-line parsing enabled. **paper.tex (./paper.tex -LaTeX2e <2022-06-01> patch level 5 -L3 programming layer <2022-08-30> (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/base/article.cls -Document Class: article 2021/10/04 v1.4n Standard LaTeX document class +LaTeX2e <2022-11-01> patch level 1 +L3 programming layer <2022-11-02> (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/base/article.cls +Document Class: article 2022/07/02 v1.4n Standard LaTeX document class (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/base/size10.clo -File: size10.clo 2021/10/04 v1.4n Standard LaTeX file (size option) +File: size10.clo 2022/07/02 v1.4n Standard LaTeX file (size option) ) \c@part=\count181 \c@section=\count182 @@ -18,9 +18,9 @@ File: size10.clo 2021/10/04 v1.4n Standard LaTeX file (size option) \c@subparagraph=\count186 \c@figure=\count187 \c@table=\count188 -\abovecaptionskip=\skip47 -\belowcaptionskip=\skip48 -\bibindent=\dimen138 +\abovecaptionskip=\skip48 +\belowcaptionskip=\skip49 +\bibindent=\dimen140 ) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/marginnote/marginnote.sty Package: marginnote 2018/08/09 v1.4b non floating margin notes for LaTeX \c@mn@abspage=\count189 @@ -39,8 +39,6 @@ File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration Package graphics Info: Driver file: xetex.def on input line 107. (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/graphics-def/xetex.def File: xetex.def 2022/09/22 v5.0n Graphics/color driver for xetex -\stockwidth=\dimen139 -\stockheight=\dimen140 )) \Gin@req@height=\dimen141 \Gin@req@width=\dimen142 @@ -61,8 +59,8 @@ Package xcolor Info: Model `Gray' substituted by `gray' on input line 1375. Package xcolor Info: Model `wave' substituted by `hsb' on input line 1376. ) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/preprint/authblk.sty Package: authblk 2001/02/27 1.3 (PWD) -\affilsep=\skip49 -\@affilsep=\skip50 +\affilsep=\skip50 +\@affilsep=\skip51 \c@Maxaffil=\count190 \c@authors=\count191 \c@affil=\count192 @@ -72,8 +70,8 @@ Package: etoolbox 2020/10/05 v2.5k e-TeX tools for LaTeX (JAW) ) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/titlesec/titlesec.sty Package: titlesec 2021/07/05 v2.14 Sectioning titles \ttl@box=\box51 -\beforetitleunit=\skip51 -\aftertitleunit=\skip52 +\beforetitleunit=\skip52 +\aftertitleunit=\skip53 \ttl@plus=\dimen143 \ttl@minus=\dimen144 \ttl@toksa=\toks17 @@ -86,12 +84,12 @@ Package: calc 2017/05/25 v4.3 Infix arithmetic (KKT,FJ) \calc@Bcount=\count195 \calc@Adimen=\dimen148 \calc@Bdimen=\dimen149 -\calc@Askip=\skip53 -\calc@Bskip=\skip54 +\calc@Askip=\skip54 +\calc@Bskip=\skip55 LaTeX Info: Redefining \setlength on input line 80. LaTeX Info: Redefining \addtolength on input line 81. \calc@Ccount=\count196 -\calc@Cskip=\skip55 +\calc@Cskip=\skip56 ) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.tex \pgfutil@everybye=\toks18 \pgfutil@tempdima=\dimen150 @@ -275,7 +273,7 @@ File: pgfmodulematrix.code.tex 2021/05/15 v3.1.9a (3.1.9a) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarytopaths.code.tex File: tikzlibrarytopaths.code.tex 2021/05/15 v3.1.9a (3.1.9a) ))) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/hyperref/hyperref.sty -Package: hyperref 2022-09-22 v7.00t Hypertext links for LaTeX +Package: hyperref 2022-11-13 v7.00u Hypertext links for LaTeX (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty Package: ltxcmds 2020-05-10 v1.25 LaTeX kernel commands for general use (HO) ) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/iftex/iftex.sty @@ -288,8 +286,8 @@ Package: infwarerr 2019/12/03 v1.5 Providing info/warning/error messages (HO) Package pdftexcmds Info: \pdf@primitive is available. Package pdftexcmds Info: \pdf@ifprimitive is available. Package pdftexcmds Info: \pdfdraftmode not found. -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty -Package: kvsetkeys 2019/12/15 v1.18 Key value parser (HO) +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/kvsetkeys/kvsetkeys.sty +Package: kvsetkeys 2022-10-05 v1.19 Key value parser (HO) ) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty Package: kvdefinekeys 2019-12-19 v1.6 Define keys (HO) ) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pdfescape/pdfescape.sty @@ -315,7 +313,7 @@ Package: kvoptions 2022-06-15 v3.15 Key value format for package options (HO) \Hy@linkcounter=\count286 \Hy@pagecounter=\count287 (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/hyperref/pd1enc.def -File: pd1enc.def 2022-09-22 v7.00t Hyperref: PDFDocEncoding definition (HO) +File: pd1enc.def 2022-11-13 v7.00u Hyperref: PDFDocEncoding definition (HO) ) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/intcalc/intcalc.sty Package: intcalc 2019/12/15 v1.3 Expandable calculations with integers (HO) ) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/etexcmds/etexcmds.sty @@ -323,7 +321,7 @@ Package: etexcmds 2019/12/15 v1.7 Avoid name clashes with e-TeX commands (HO) ) \Hy@SavedSpaceFactor=\count288 (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/hyperref/puenc.def -File: puenc.def 2022-09-22 v7.00t Hyperref: PDF Unicode definition (HO) +File: puenc.def 2022-11-13 v7.00u Hyperref: PDF Unicode definition (HO) ) Package hyperref Info: Hyper figures OFF on input line 4162. Package hyperref Info: Link nesting OFF on input line 4167. @@ -364,7 +362,7 @@ package with kernel methods ) Package hyperref Info: Driver (autodetected): hxetex. (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/hyperref/hxetex.def -File: hxetex.def 2022-09-22 v7.00t Hyperref driver for XeTeX +File: hxetex.def 2022-11-13 v7.00u Hyperref driver for XeTeX (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/stringenc/stringenc.sty Package: stringenc 2019/11/29 v1.12 Convert strings between diff. encodings (HO) ) @@ -383,7 +381,7 @@ Package: uniquecounter 2019/12/15 v1.4 Provide unlimited unique counter (HO) ) Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 285. ) -\Hy@SectionHShift=\skip56 +\Hy@SectionHShift=\skip57 ) Package hyperref Info: Option `colorlinks' set `true' on input line 12. Package hyperref Info: Option `breaklinks' set `true' on input line 12. @@ -407,7 +405,7 @@ Package caption Info: hyperref package is loaded. ) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/tcolorbox/tcolorbox.sty Package: tcolorbox 2022/06/24 version 5.1.1 text color boxes (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/tools/verbatim.sty -Package: verbatim 2020-07-07 v1.5u LaTeX2e package for verbatim enhancements +Package: verbatim 2022-07-02 v1.5u LaTeX2e package for verbatim enhancements \every@verbatim=\toks30 \verbatim@line=\toks31 \verbatim@in@stream=\read3 @@ -441,7 +439,7 @@ LaTeX Font Info: Overwriting math alphabet `\mathfrak' in version `bold' (Font) U/euf/m/n --> U/euf/b/n on input line 106. )) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/amsmath/amsmath.sty Package: amsmath 2022/04/08 v2.17n AMS math features -\@mathmargin=\skip57 +\@mathmargin=\skip58 For additional information on amsmath, use the `?' option. (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/amsmath/amstext.sty Package: amstext 2021/08/26 v2.01 AMS text @@ -497,8 +495,8 @@ LaTeX Info: Redefining \Relbar on input line 971. \totwidth@=\dimen275 \lineht@=\dimen276 \@envbody=\toks37 -\multlinegap=\skip58 -\multlinetaggap=\skip59 +\multlinegap=\skip59 +\multlinetaggap=\skip60 \mathdisplay@stack=\toks38 LaTeX Info: Redefining \[ on input line 2953. LaTeX Info: Redefining \] on input line 2954. @@ -570,14 +568,14 @@ Package: ifthen 2022/04/13 v1.1d Standard LaTeX ifthen package (DPC) \blx@sectionciteorderinternal@0=\count356 \blx@entrysetcounter=\count357 \blx@biblioinstance=\count358 -\labelnumberwidth=\skip60 -\labelalphawidth=\skip61 -\biblabelsep=\skip62 -\bibitemsep=\skip63 -\bibnamesep=\skip64 -\bibinitsep=\skip65 -\bibparsep=\skip66 -\bibhang=\skip67 +\labelnumberwidth=\skip61 +\labelalphawidth=\skip62 +\biblabelsep=\skip63 +\bibitemsep=\skip64 +\bibnamesep=\skip65 +\bibinitsep=\skip66 +\bibparsep=\skip67 +\bibhang=\skip68 \blx@bcfin=\read4 \blx@bcfout=\write4 \blx@langwohyphens=\language3 @@ -659,20 +657,20 @@ Package biblatex Info: ... file 'biblatex-dm.cfg' not found. \c@savedoriglanguage=\count427 \c@pageref=\count428 \c@savedpageref=\count429 -\shorthandwidth=\skip68 -\shortjournalwidth=\skip69 -\shortserieswidth=\skip70 -\shorttitlewidth=\skip71 -\shortauthorwidth=\skip72 -\shorteditorwidth=\skip73 -\locallabelnumberwidth=\skip74 -\locallabelalphawidth=\skip75 -\localshorthandwidth=\skip76 -\localshortjournalwidth=\skip77 -\localshortserieswidth=\skip78 -\localshorttitlewidth=\skip79 -\localshortauthorwidth=\skip80 -\localshorteditorwidth=\skip81 +\shorthandwidth=\skip69 +\shortjournalwidth=\skip70 +\shortserieswidth=\skip71 +\shorttitlewidth=\skip72 +\shortauthorwidth=\skip73 +\shorteditorwidth=\skip74 +\locallabelnumberwidth=\skip75 +\locallabelalphawidth=\skip76 +\localshorthandwidth=\skip77 +\localshortjournalwidth=\skip78 +\localshortserieswidth=\skip79 +\localshorttitlewidth=\skip80 +\localshortauthorwidth=\skip81 +\localshorteditorwidth=\skip82 Package biblatex Info: Trying to load enhanced support for Unicode engines... Package biblatex Info: ... file 'blx-unicode.def' found. (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/biblatex/blx-unicode.def) @@ -735,9 +733,9 @@ Package biblatex Info: XeTeX detected. (biblatex) Assuming input encoding 'utf8'. Package biblatex Info: Document encoding is UTF8 .... (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/l3kernel/expl3.sty -Package: expl3 2022-08-30 L3 programming layer (loader) +Package: expl3 2022-11-02 L3 programming layer (loader) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/l3backend/l3backend-xetex.def -File: l3backend-xetex.def 2022-08-30 L3 backend support: XeTeX +File: l3backend-xetex.def 2022-10-26 L3 backend support: XeTeX \g__graphics_track_int=\count441 \l__pdf_internal_box=\box74 \g__pdf_backend_object_int=\count442 @@ -745,7 +743,7 @@ File: l3backend-xetex.def 2022-08-30 L3 backend support: XeTeX \g__pdf_backend_link_int=\count444 )) Package biblatex Info: ... and expl3 -(biblatex) 2022-08-30 L3 programming layer (loader) +(biblatex) 2022-11-02 L3 programming layer (loader) (biblatex) is new enough (at least 2020/04/06), (biblatex) setting 'casechanger=expl3'. (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/biblatex/blx-case-expl3.sty (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/l3packages/xparse/xparse.sty @@ -770,16 +768,16 @@ Package: ifvtex 2019/10/25 v1.7 ifvtex legacy package. Use iftex instead. \Gm@layoutvoffset=\dimen284 \Gm@dimlist=\toks39 ) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty -Package: fancyhdr 2022/05/18 v4.0.3 Extensive control of page headers and footers -\f@nch@headwidth=\skip82 -\f@nch@O@elh=\skip83 -\f@nch@O@erh=\skip84 -\f@nch@O@olh=\skip85 -\f@nch@O@orh=\skip86 -\f@nch@O@elf=\skip87 -\f@nch@O@erf=\skip88 -\f@nch@O@olf=\skip89 -\f@nch@O@orf=\skip90 +Package: fancyhdr 2022/11/09 v4.1 Extensive control of page headers and footers +\f@nch@headwidth=\skip83 +\f@nch@O@elh=\skip84 +\f@nch@O@erh=\skip85 +\f@nch@O@olh=\skip86 +\f@nch@O@orh=\skip87 +\f@nch@O@elf=\skip88 +\f@nch@O@erf=\skip89 +\f@nch@O@olf=\skip90 +\f@nch@O@orf=\skip91 ) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/xelatex/mathspec/mathspec.sty Package: mathspec 2016/12/22 v0.2b LaTeX Package (Mathematics font selection for XeLaTeX) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/fontspec/fontspec.sty @@ -837,7 +835,7 @@ LaTeX Font Info: ... okay on input line 194. LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 194. LaTeX Font Info: Trying to load font information for TS1+cmr on input line 194. (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/base/ts1cmr.fd -File: ts1cmr.fd 2019/12/16 v2.5j Standard LaTeX font definitions +File: ts1cmr.fd 2022/07/10 v2.5l Standard LaTeX font definitions ) LaTeX Font Info: ... okay on input line 194. LaTeX Font Info: Checking defaults for TU/lmr/m/n on input line 194. @@ -924,6 +922,8 @@ Package hyperref Warning: Suppressing link with empty target on input line 221. Package hyperref Warning: Suppressing link with empty target on input line 221. +LaTeX Font Info: Font shape `TU/lmtt/bx/n' in size <14.4> not available +(Font) Font shape `TU/lmtt/b/n' tried instead on input line 252. File: /Library/Frameworks/R.framework/Versions/4.2-arm64/Resources/library/rticles/rmarkdown/templates/joss/resources/JOSS-logo.png Graphic file (type bmp) @@ -934,23 +934,33 @@ Package fancyhdr Warning: \headheight is too small (62.59596pt): (fancyhdr) \addtolength{\topmargin}{-0.95425pt}. LaTeX Font Info: Font shape `TU/lmss/m/it' in size <8> not available -(Font) Font shape `TU/lmss/m/sl' tried instead on input line 246. +(Font) Font shape `TU/lmss/m/sl' tried instead on input line 283. [1 -] (./paper.aux) +] +File: /Library/Frameworks/R.framework/Versions/4.2-arm64/Resources/library/rticles/rmarkdown/templates/joss/resources/JOSS-logo.png Graphic file (type bmp) + + +Package fancyhdr Warning: \headheight is too small (62.59596pt): +(fancyhdr) Make it at least 63.55022pt, for example: +(fancyhdr) \setlength{\headheight}{63.55022pt}. +(fancyhdr) You might also make \topmargin smaller to compensate: +(fancyhdr) \addtolength{\topmargin}{-0.95425pt}. + +[2] (./paper.aux) Package rerunfilecheck Info: File `paper.out' has not changed. -(rerunfilecheck) Checksum: 7BB3504EE329E57D794CF98580C83E4C;691. +(rerunfilecheck) Checksum: F7AB6A1A36AD9FA85EA2163F3C3020D0;969. Package logreq Info: Writing requests to 'paper.run.xml'. \openout1 = `paper.run.xml'. ) Here is how much of TeX's memory you used: - 34378 strings out of 477747 - 713059 string characters out of 5842604 - 1484692 words of memory out of 5000000 - 54925 multiletter control sequences out of 15000+600000 - 476107 words of font info for 73 fonts, out of 8000000 for 9000 + 34391 strings out of 477640 + 713158 string characters out of 5839684 + 1499067 words of memory out of 5000000 + 55043 multiletter control sequences out of 15000+600000 + 476115 words of font info for 74 fonts, out of 8000000 for 9000 14 hyphenation exceptions out of 8191 - 84i,12n,81p,678b,846s stack positions out of 10000i,1000n,20000p,200000b,200000s + 84i,12n,81p,678b,848s stack positions out of 10000i,1000n,20000p,200000b,200000s -Output written on paper.pdf (1 page). +Output written on paper.pdf (2 pages). diff --git a/paper/paper.md b/paper/paper.md index cbb1d9f11..3302056f3 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -7,7 +7,7 @@ authors: affiliations: - index: 1 name: Netflix -date: "2022-10-14" +date: "2022-12-31" bibliography: paper.bib output: rticles::joss_article csl: apa.csl @@ -20,12 +20,27 @@ tags: ["R", "linter", "tidyverse"] # Summary +The R programming language is a popular choice for data analysis and statistical computing, and is used by a wide range of researchers and data scientists. The `{lintr}` package is designed to help users identify and correct problems in their R code. In this paper, we will introduce lintr and discuss its features and capabilities, as well as some of the ways in which it can be used to improve the quality and reliability of R code. # Statement of Need +`{lintr}` is an open source R package that provides static code analysis for R scripts and functions. It checks for a variety of common problems, including syntax errors, undefined variables, and style issues. It is designed to be easy to use and integrate into existing workflow. It can be run from the command line, or can be used as part of an automated build or continuous integration process. `{lintr}` also integrates with a number of popular IDEs and text editors, such as RStudio and Visual Studio Code, making it convenient for users to run `{lintr}` checks on their code as they work. # Features + +# Benefits of using `{lintr}` + +There are several benefits to using `{lintr}` to analyze and improve R code. One of the most obvious is that it can help users identify and fix problems in their code, which can save time and effort during the development process. By catching issues early on, `{lintr}` can help prevent bugs and other issues from creeping into code, which can save time and effort when it comes to debugging and testing. + +Another benefit of `{lintr}` is that it can help users write more readable and maintainable code. By enforcing a consistent style and highlighting potential issues, `{lintr}` can help users write code that is easier to understand and work with. This is especially important for larger projects or teams, where multiple contributors may be working on the same codebase and it is important to ensure that code is easy to follow and understand. + +Finally, `{lintr}` can be a useful tool for teaching and learning R. By providing feedback on code style and potential issues, it can help users learn good coding practices and improve their skills over time. This can be especially useful for beginners, who may not yet be familiar with all of the best practices for writing R code. + +# Conclusion + +In conclusion, `{lintr}` is a valuable tool for R users to help improve the quality and reliability of their code. Its static code analysis capabilities, combined with its flexibility and ease of use, make it relevant and valuable for a wide range of applications. + # Licensing and Availability `{lintr}` is licensed under the MIT License, with all source code openly developed and stored on GitHub (), along with a corresponding issue tracker for bug reporting and feature enhancements. diff --git a/paper/paper.pdf b/paper/paper.pdf index 8e455b371fa45a6296ba21885d312278f88e1113..b787272bcb432ab3310f3b335d012f1539f3038c 100644 GIT binary patch delta 23960 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 ZrkwM@wnb1PcvcP`9ym%$No6Ux{{v6#WlR77 From c7c242cbd11fa3affbc8e5b35753609d350775dd Mon Sep 17 00:00:00 2001 From: Indrajeet Patil Date: Sat, 31 Dec 2022 20:58:51 +0100 Subject: [PATCH 04/41] fix merge issues [skip ci] --- .Rbuildignore | 1 + paper/paper.Rmd | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/.Rbuildignore b/.Rbuildignore index bbf169122..9c89fa4b6 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -27,4 +27,5 @@ ^pkgdown$ ^vignettes/[^-]+.gif$ ^CRAN-SUBMISSION$ +^CODE_OF_CONDUCT\.md$ ^paper.*$ diff --git a/paper/paper.Rmd b/paper/paper.Rmd index 29088c39a..199863c54 100644 --- a/paper/paper.Rmd +++ b/paper/paper.Rmd @@ -38,6 +38,16 @@ The R programming language is a popular choice for data analysis and statistical # Features +```{r} +library(lintr) + +# default linters enforce tidyverse style +names(linters_with_defaults()) + +# all linters +names(all_linters()) +``` + # Benefits of using `{lintr}` From 63137a5ad2e78a9f8a86394b0ec5e4ed6a28fc9a Mon Sep 17 00:00:00 2001 From: Indrajeet Patil Date: Sun, 1 Jan 2023 12:31:18 +0100 Subject: [PATCH 05/41] add a few examples --- paper/paper.Rmd | 60 ++++++++++++++++++++---- paper/paper.bib | 4 +- paper/paper.log | 120 +++++++++++++++++++++++++++++------------------- paper/paper.md | 83 ++++++++++++++++++++++++++++++--- paper/paper.pdf | Bin 119520 -> 138892 bytes 5 files changed, 204 insertions(+), 63 deletions(-) diff --git a/paper/paper.Rmd b/paper/paper.Rmd index 199863c54..21ea44e83 100644 --- a/paper/paper.Rmd +++ b/paper/paper.Rmd @@ -24,28 +24,70 @@ knitr::opts_chunk$set( comment = "#>" ) +options(width = 80) + library(lintr) set.seed(2016) ``` -# Summary - -The R programming language is a popular choice for data analysis and statistical computing, and is used by a wide range of researchers and data scientists. The `{lintr}` package is designed to help users identify and correct problems in their R code. In this paper, we will introduce lintr and discuss its features and capabilities, as well as some of the ways in which it can be used to improve the quality and reliability of R code. - # Statement of Need -`{lintr}` is an open source R package that provides static code analysis for R scripts and functions. It checks for a variety of common problems, including syntax errors, undefined variables, and style issues. It is designed to be easy to use and integrate into existing workflow. It can be run from the command line, or can be used as part of an automated build or continuous integration process. `{lintr}` also integrates with a number of popular IDEs and text editors, such as RStudio and Visual Studio Code, making it convenient for users to run `{lintr}` checks on their code as they work. +The R programming language [@base2023] is a popular choice for data analysis and statistical computing, and is used by a wide range of researchers and data scientists. The `{lintr}` package is an open source R package that provides static code analysis that checks for a variety of common problems related to readability, efficiency, consistency, style, etc. It is designed to be easy to use and integrate into existing workflows. It can be run from the command line, or can be used as part of an automated build or continuous integration process. `{lintr}` also integrates with a number of popular IDEs and text editors, such as RStudio and Visual Studio Code, making it convenient for users to run `{lintr}` checks on their code as they work. # Features +There are a number of linters offered by `{lintr}`. + ```{r} library(lintr) -# default linters enforce tidyverse style -names(linters_with_defaults()) +length(all_linters()) +``` + +For the sake of brevity, we will showcase only a few linters. To see details about all available linters, we will encourage readers to see . + +- **Readability** -# all linters -names(all_linters()) +```{r} +lint( + text = "stats::sd (c (x, y, z))", + linters = function_left_parentheses_linter() +) +``` + +```{r} +lint( + text = "stats::sd(c(x, y, z))", + linters = function_left_parentheses_linter() +) +``` + +- **Efficiency** + +```{r} +lint( + text = "any(is.na(x), na.rm = TRUE)", + linters = any_is_na_linter() +) + +lint( + text = "anyNA(x)", + linters = any_is_na_linter() +) +``` + +- **Tidyverse style** + +```{r} +lint( + text = "1:3 %>% mean %>% as.character", + linters = pipe_call_linter() +) + +lint( + text = "1:3 %>% mean() %>% as.character()", + linters = pipe_call_linter() +) ``` diff --git a/paper/paper.bib b/paper/paper.bib index 044908dce..ae3ea9723 100644 --- a/paper/paper.bib +++ b/paper/paper.bib @@ -9,11 +9,11 @@ @Article{Wickham2019 doi = {10.21105/joss.01686}, } -@Manual{base2021, +@Manual{base2023, title = {{R}: A Language and Environment for Statistical Computing}, author = {{R Core Team}}, organization = {R Foundation for Statistical Computing}, address = {Vienna, Austria}, - year = {2021}, + year = {2023}, url = {https://www.R-project.org/}, } diff --git a/paper/paper.log b/paper/paper.log index d6a1efdeb..216ca6d4b 100644 --- a/paper/paper.log +++ b/paper/paper.log @@ -1,4 +1,4 @@ -This is XeTeX, Version 3.141592653-2.6-0.999994 (TeX Live 2022) (preloaded format=xelatex 2022.12.2) 31 DEC 2022 19:07 +This is XeTeX, Version 3.141592653-2.6-0.999994 (TeX Live 2022) (preloaded format=xelatex 2022.12.2) 1 JAN 2023 12:30 entering extended mode restricted \write18 enabled. %&-line parsing enabled. @@ -818,40 +818,58 @@ Package hyperref Info: Option `breaklinks' set `true' on input line 150. (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/grffile/grffile.sty Package: grffile 2019/11/11 v2.1 Extended file name support for graphics (legacy) Package grffile Info: This package is an empty stub for compatibility on input line 40. -) -\@quotelevel=\count463 -\@quotereset=\count464 +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/fancyvrb/fancyvrb.sty +Package: fancyvrb 2022/06/06 4.5 verbatim text (tvz,hv) +\FV@CodeLineNo=\count463 +\FV@InFile=\read5 +\FV@TabBox=\box75 +\c@FancyVerbLine=\count464 +\FV@StepNumber=\count465 +\FV@OutFile=\write5 +) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/framed/framed.sty +Package: framed 2011/10/22 v 0.96: framed or shaded text with page breaks +\OuterFrameSep=\skip92 +\fb@frw=\dimen288 +\fb@frh=\dimen289 +\FrameRule=\dimen290 +\FrameSep=\dimen291 +) +\cslhangindent=\skip93 +\csllabelwidth=\skip94 +\cslentryspacingunit=\skip95 +\@quotelevel=\count466 +\@quotereset=\count467 (./paper.aux) \openout1 = `paper.aux'. -LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 194. -LaTeX Font Info: ... okay on input line 194. -LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 194. -LaTeX Font Info: ... okay on input line 194. -LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 194. -LaTeX Font Info: ... okay on input line 194. -LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 194. -LaTeX Font Info: ... okay on input line 194. -LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 194. -LaTeX Font Info: Trying to load font information for TS1+cmr on input line 194. +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 264. +LaTeX Font Info: ... okay on input line 264. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 264. +LaTeX Font Info: ... okay on input line 264. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 264. +LaTeX Font Info: ... okay on input line 264. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 264. +LaTeX Font Info: ... okay on input line 264. +LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 264. +LaTeX Font Info: Trying to load font information for TS1+cmr on input line 264. (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/base/ts1cmr.fd File: ts1cmr.fd 2022/07/10 v2.5l Standard LaTeX font definitions ) -LaTeX Font Info: ... okay on input line 194. -LaTeX Font Info: Checking defaults for TU/lmr/m/n on input line 194. -LaTeX Font Info: ... okay on input line 194. -LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 194. -LaTeX Font Info: ... okay on input line 194. -LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 194. -LaTeX Font Info: ... okay on input line 194. -LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 194. -LaTeX Font Info: ... okay on input line 194. -LaTeX Font Info: Checking defaults for PU/pdf/m/n on input line 194. -LaTeX Font Info: ... okay on input line 194. -Package hyperref Info: Link coloring ON on input line 194. +LaTeX Font Info: ... okay on input line 264. +LaTeX Font Info: Checking defaults for TU/lmr/m/n on input line 264. +LaTeX Font Info: ... okay on input line 264. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 264. +LaTeX Font Info: ... okay on input line 264. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 264. +LaTeX Font Info: ... okay on input line 264. +LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 264. +LaTeX Font Info: ... okay on input line 264. +LaTeX Font Info: Checking defaults for PU/pdf/m/n on input line 264. +LaTeX Font Info: ... okay on input line 264. +Package hyperref Info: Link coloring ON on input line 264. (./paper.out) (./paper.out) -\@outlinefile=\write5 -\openout5 = `paper.out'. +\@outlinefile=\write6 +\openout6 = `paper.out'. Package caption Info: Begin \AtBeginDocument code. Package caption Info: End \AtBeginDocument code. @@ -869,8 +887,8 @@ Package biblatex Info: Automatic encoding selection. Package biblatex Info: Trying to load bibliographic data... Package biblatex Info: ... file 'paper.bbl' not found. No file paper.bbl. -Package biblatex Info: Reference section=0 on input line 194. -Package biblatex Info: Reference segment=0 on input line 194. +Package biblatex Info: Reference section=0 on input line 264. +Package biblatex Info: Reference segment=0 on input line 264. *geometry* driver: auto-detecting *geometry* detected driver: xetex *geometry* verbose mode - [ preamble ] result: @@ -905,25 +923,23 @@ Package biblatex Info: Reference segment=0 on input line 194. * \@reversemargintrue * (1in=72.27pt=25.4mm, 1cm=28.453pt) -LaTeX Font Info: Trying to load font information for U+msa on input line 195. +LaTeX Font Info: Trying to load font information for U+msa on input line 265. (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/amsfonts/umsa.fd File: umsa.fd 2013/01/14 v3.01 AMS symbols A ) -LaTeX Font Info: Trying to load font information for U+msb on input line 195. +LaTeX Font Info: Trying to load font information for U+msb on input line 265. (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/amsfonts/umsb.fd File: umsb.fd 2013/01/14 v3.01 AMS symbols B ) -Package hyperref Warning: Suppressing link with empty target on input line 221. +Package hyperref Warning: Suppressing link with empty target on input line 291. -Package hyperref Warning: Suppressing link with empty target on input line 221. +Package hyperref Warning: Suppressing link with empty target on input line 291. -Package hyperref Warning: Suppressing link with empty target on input line 221. +Package hyperref Warning: Suppressing link with empty target on input line 291. -LaTeX Font Info: Font shape `TU/lmtt/bx/n' in size <14.4> not available -(Font) Font shape `TU/lmtt/b/n' tried instead on input line 252. File: /Library/Frameworks/R.framework/Versions/4.2-arm64/Resources/library/rticles/rmarkdown/templates/joss/resources/JOSS-logo.png Graphic file (type bmp) @@ -934,10 +950,22 @@ Package fancyhdr Warning: \headheight is too small (62.59596pt): (fancyhdr) \addtolength{\topmargin}{-0.95425pt}. LaTeX Font Info: Font shape `TU/lmss/m/it' in size <8> not available -(Font) Font shape `TU/lmss/m/sl' tried instead on input line 283. +(Font) Font shape `TU/lmss/m/sl' tried instead on input line 355. [1 ] +LaTeX Font Info: Font shape `TU/lmtt/bx/n' in size <14.4> not available +(Font) Font shape `TU/lmtt/b/n' tried instead on input line 408. +File: /Library/Frameworks/R.framework/Versions/4.2-arm64/Resources/library/rticles/rmarkdown/templates/joss/resources/JOSS-logo.png Graphic file (type bmp) + + +Package fancyhdr Warning: \headheight is too small (62.59596pt): +(fancyhdr) Make it at least 63.55022pt, for example: +(fancyhdr) \setlength{\headheight}{63.55022pt}. +(fancyhdr) You might also make \topmargin smaller to compensate: +(fancyhdr) \addtolength{\topmargin}{-0.95425pt}. + +[2] File: /Library/Frameworks/R.framework/Versions/4.2-arm64/Resources/library/rticles/rmarkdown/templates/joss/resources/JOSS-logo.png Graphic file (type bmp) @@ -947,20 +975,20 @@ Package fancyhdr Warning: \headheight is too small (62.59596pt): (fancyhdr) You might also make \topmargin smaller to compensate: (fancyhdr) \addtolength{\topmargin}{-0.95425pt}. -[2] (./paper.aux) +[3] (./paper.aux) Package rerunfilecheck Info: File `paper.out' has not changed. -(rerunfilecheck) Checksum: F7AB6A1A36AD9FA85EA2163F3C3020D0;969. +(rerunfilecheck) Checksum: A08114F4345DD143667A1F23B4C87D3C;890. Package logreq Info: Writing requests to 'paper.run.xml'. \openout1 = `paper.run.xml'. ) Here is how much of TeX's memory you used: - 34391 strings out of 477640 - 713158 string characters out of 5839684 - 1499067 words of memory out of 5000000 - 55043 multiletter control sequences out of 15000+600000 - 476115 words of font info for 74 fonts, out of 8000000 for 9000 + 34908 strings out of 477640 + 721537 string characters out of 5839684 + 1507951 words of memory out of 5000000 + 55548 multiletter control sequences out of 15000+600000 + 476131 words of font info for 76 fonts, out of 8000000 for 9000 14 hyphenation exceptions out of 8191 84i,12n,81p,678b,848s stack positions out of 10000i,1000n,20000p,200000b,200000s -Output written on paper.pdf (2 pages). +Output written on paper.pdf (3 pages). diff --git a/paper/paper.md b/paper/paper.md index 3302056f3..e70b3ad77 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -7,7 +7,7 @@ authors: affiliations: - index: 1 name: Netflix -date: "2022-12-31" +date: "2023-01-01" bibliography: paper.bib output: rticles::joss_article csl: apa.csl @@ -18,16 +18,87 @@ tags: ["R", "linter", "tidyverse"] -# Summary - -The R programming language is a popular choice for data analysis and statistical computing, and is used by a wide range of researchers and data scientists. The `{lintr}` package is designed to help users identify and correct problems in their R code. In this paper, we will introduce lintr and discuss its features and capabilities, as well as some of the ways in which it can be used to improve the quality and reliability of R code. - # Statement of Need -`{lintr}` is an open source R package that provides static code analysis for R scripts and functions. It checks for a variety of common problems, including syntax errors, undefined variables, and style issues. It is designed to be easy to use and integrate into existing workflow. It can be run from the command line, or can be used as part of an automated build or continuous integration process. `{lintr}` also integrates with a number of popular IDEs and text editors, such as RStudio and Visual Studio Code, making it convenient for users to run `{lintr}` checks on their code as they work. +The R programming language [@base2023] is a popular choice for data analysis and statistical computing, and is used by a wide range of researchers and data scientists. The `{lintr}` package is an open source R package that provides static code analysis that checks for a variety of common problems related to readability, efficiency, consistency, style, etc. It is designed to be easy to use and integrate into existing workflows. It can be run from the command line, or can be used as part of an automated build or continuous integration process. `{lintr}` also integrates with a number of popular IDEs and text editors, such as RStudio and Visual Studio Code, making it convenient for users to run `{lintr}` checks on their code as they work. # Features +There are a number of linters offered by `{lintr}`. + + +```r +library(lintr) + +length(all_linters()) +#> [1] 87 +``` + +For the sake of brevity, we will showcase only a few linters. To see details about all available linters, we will encourage readers to see . + +- **Readability** + + +```r +lint( + text = "stats::sd (c (x, y, z))", + linters = function_left_parentheses_linter() +) +#> :1:10: style: [function_left_parentheses_linter] Remove spaces before the left parenthesis in a function call. +#> stats::sd (c (x, y, z)) +#> ^ +#> :1:13: style: [function_left_parentheses_linter] Remove spaces before the left parenthesis in a function call. +#> stats::sd (c (x, y, z)) +#> ^ +``` + + +```r +lint( + text = "stats::sd(c(x, y, z))", + linters = function_left_parentheses_linter() +) +``` + +- **Efficiency** + + +```r +lint( + text = "any(is.na(x), na.rm = TRUE)", + linters = any_is_na_linter() +) +#> :1:1: warning: [any_is_na_linter] anyNA(x) is better than any(is.na(x)). +#> any(is.na(x), na.rm = TRUE) +#> ^~~~~~~~~~~~~~~~~~~~~~~~~~~ + +lint( + text = "anyNA(x)", + linters = any_is_na_linter() +) +``` + +- **Tidyverse style** + + +```r +lint( + text = "1:3 %>% mean %>% as.character", + linters = pipe_call_linter() +) +#> :1:9: warning: [pipe_call_linter] Use explicit calls in magrittr pipes, i.e., `a %>% foo` should be `a %>% foo()`. +#> 1:3 %>% mean %>% as.character +#> ^~~~ +#> :1:18: warning: [pipe_call_linter] Use explicit calls in magrittr pipes, i.e., `a %>% foo` should be `a %>% foo()`. +#> 1:3 %>% mean %>% as.character +#> ^~~~~~~~~~~~ + +lint( + text = "1:3 %>% mean() %>% as.character()", + linters = pipe_call_linter() +) +``` + # Benefits of using `{lintr}` diff --git a/paper/paper.pdf b/paper/paper.pdf index b787272bcb432ab3310f3b335d012f1539f3038c..42f1a98ae71cde45a009b8ebf3111504816756c3 100644 GIT binary patch delta 38785 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¾mAuR@~K&FpLx}J9Xrzn>KSTI> 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%0AhZV=#CV~4 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 From e781ec6ff1f8cd32893d74075e662506a156ab3b Mon Sep 17 00:00:00 2001 From: Indrajeet Patil Date: Sun, 1 Jan 2023 12:48:19 +0100 Subject: [PATCH 06/41] try width [skip ci] --- paper/paper.Rmd | 2 +- paper/paper.log | 2 +- paper/paper.pdf | Bin 138892 -> 138897 bytes 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/paper/paper.Rmd b/paper/paper.Rmd index 21ea44e83..45979dbe4 100644 --- a/paper/paper.Rmd +++ b/paper/paper.Rmd @@ -24,7 +24,7 @@ knitr::opts_chunk$set( comment = "#>" ) -options(width = 80) +options(width = 60) library(lintr) set.seed(2016) diff --git a/paper/paper.log b/paper/paper.log index 216ca6d4b..0f26b1940 100644 --- a/paper/paper.log +++ b/paper/paper.log @@ -1,4 +1,4 @@ -This is XeTeX, Version 3.141592653-2.6-0.999994 (TeX Live 2022) (preloaded format=xelatex 2022.12.2) 1 JAN 2023 12:30 +This is XeTeX, Version 3.141592653-2.6-0.999994 (TeX Live 2022) (preloaded format=xelatex 2022.12.2) 1 JAN 2023 12:48 entering extended mode restricted \write18 enabled. %&-line parsing enabled. diff --git a/paper/paper.pdf b/paper/paper.pdf index 42f1a98ae71cde45a009b8ebf3111504816756c3..32853e8f76c5ec18cfb1d368d4a1b9cc1415782d 100644 GIT binary patch delta 9399 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 CeG3Hu delta 9430 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 IR+2&cFVBBJH2?qr From a754769caa38a1624de6f02db0ae6e301181a4b2 Mon Sep 17 00:00:00 2001 From: Indrajeet Patil Date: Mon, 2 Jan 2023 18:34:06 +0100 Subject: [PATCH 07/41] discuss specific tags --- .github/workflows/draft-pdf.yml | 25 +++++++++++++++++++++++++ paper/paper.Rmd | 18 ++++++++++-------- paper/paper.log | 24 ++++++++++++------------ paper/paper.md | 18 +++++++++++------- paper/paper.pdf | Bin 138897 -> 142811 bytes 5 files changed, 58 insertions(+), 27 deletions(-) create mode 100644 .github/workflows/draft-pdf.yml diff --git a/.github/workflows/draft-pdf.yml b/.github/workflows/draft-pdf.yml new file mode 100644 index 000000000..7f8947df0 --- /dev/null +++ b/.github/workflows/draft-pdf.yml @@ -0,0 +1,25 @@ +on: [push] + +jobs: + paper: + runs-on: ubuntu-latest + name: Paper Draft + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Build draft PDF + uses: openjournals/openjournals-draft-action@master + with: + journal: joss + # This should be the path to the paper within your repo. + paper-path: paper.md + + - name: Upload + uses: actions/upload-artifact@v1 + with: + name: paper + # This is the output path where Pandoc will write the compiled + # PDF. Note, this should be the same directory as the input + # paper.md + path: paper.pdf diff --git a/paper/paper.Rmd b/paper/paper.Rmd index 45979dbe4..e3dc2ae85 100644 --- a/paper/paper.Rmd +++ b/paper/paper.Rmd @@ -25,9 +25,6 @@ knitr::opts_chunk$set( ) options(width = 60) - -library(lintr) -set.seed(2016) ``` # Statement of Need @@ -36,7 +33,7 @@ The R programming language [@base2023] is a popular choice for data analysis and # Features -There are a number of linters offered by `{lintr}`. +There are over 85 linters offered by `{lintr}`! ```{r} library(lintr) @@ -44,18 +41,20 @@ library(lintr) length(all_linters()) ``` -For the sake of brevity, we will showcase only a few linters. To see details about all available linters, we will encourage readers to see . +Naturally, we can't discuss all of them here. For the sake of brevity, we will showcase only a few linters. To see details about all available linters, we encourage readers to see . - **Readability** +Every coder knows that they spend significantly more time reading compared to writing code. Thus, writing readable code makes the code more maintainable and reduces the possibility of introducing bugs stemming from poor understanding of the code. + +`{lintr}` provides a number of linters that suggest more readable alternatives of the code. For example, `function_left_parentheses_linter()`. + ```{r} lint( text = "stats::sd (c (x, y, z))", linters = function_left_parentheses_linter() ) -``` -```{r} lint( text = "stats::sd(c(x, y, z))", linters = function_left_parentheses_linter() @@ -64,6 +63,8 @@ lint( - **Efficiency** +Sometimes the users might not be aware of a more efficient way offered by R for carrying out a computation. `{lintr}` offers linters that can provide such suggestions. + ```{r} lint( text = "any(is.na(x), na.rm = TRUE)", @@ -78,6 +79,8 @@ lint( - **Tidyverse style** +`{lintr}` also provides linters to enforce the style used throughout the `{tidyverse}` [@Wickham2019] ecosystem of packages. This style of coding has been outlined in the tidyverse style guide (https://style.tidyverse.org/index.html). + ```{r} lint( text = "1:3 %>% mean %>% as.character", @@ -90,7 +93,6 @@ lint( ) ``` - # Benefits of using `{lintr}` There are several benefits to using `{lintr}` to analyze and improve R code. One of the most obvious is that it can help users identify and fix problems in their code, which can save time and effort during the development process. By catching issues early on, `{lintr}` can help prevent bugs and other issues from creeping into code, which can save time and effort when it comes to debugging and testing. diff --git a/paper/paper.log b/paper/paper.log index 0f26b1940..461d12fb1 100644 --- a/paper/paper.log +++ b/paper/paper.log @@ -1,11 +1,11 @@ -This is XeTeX, Version 3.141592653-2.6-0.999994 (TeX Live 2022) (preloaded format=xelatex 2022.12.2) 1 JAN 2023 12:48 +This is XeTeX, Version 3.141592653-2.6-0.999994 (TeX Live 2022) (preloaded format=xelatex 2023.1.2) 2 JAN 2023 18:32 entering extended mode restricted \write18 enabled. %&-line parsing enabled. **paper.tex (./paper.tex LaTeX2e <2022-11-01> patch level 1 -L3 programming layer <2022-11-02> (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/base/article.cls +L3 programming layer <2022-12-17> (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/base/article.cls Document Class: article 2022/07/02 v1.4n Standard LaTeX document class (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/base/size10.clo File: size10.clo 2022/07/02 v1.4n Standard LaTeX file (size option) @@ -733,7 +733,7 @@ Package biblatex Info: XeTeX detected. (biblatex) Assuming input encoding 'utf8'. Package biblatex Info: Document encoding is UTF8 .... (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/l3kernel/expl3.sty -Package: expl3 2022-11-02 L3 programming layer (loader) +Package: expl3 2022-12-17 L3 programming layer (loader) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/l3backend/l3backend-xetex.def File: l3backend-xetex.def 2022-10-26 L3 backend support: XeTeX \g__graphics_track_int=\count441 @@ -743,11 +743,11 @@ File: l3backend-xetex.def 2022-10-26 L3 backend support: XeTeX \g__pdf_backend_link_int=\count444 )) Package biblatex Info: ... and expl3 -(biblatex) 2022-11-02 L3 programming layer (loader) +(biblatex) 2022-12-17 L3 programming layer (loader) (biblatex) is new enough (at least 2020/04/06), (biblatex) setting 'casechanger=expl3'. (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/biblatex/blx-case-expl3.sty (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/l3packages/xparse/xparse.sty -Package: xparse 2022-06-22 L3 Experimental document command parser +Package: xparse 2022-12-17 L3 Experimental document command parser ) Package: blx-case-expl3 2022/07/12 v3.18b expl3 case changing code for biblatex )) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/geometry/geometry.sty @@ -950,12 +950,12 @@ Package fancyhdr Warning: \headheight is too small (62.59596pt): (fancyhdr) \addtolength{\topmargin}{-0.95425pt}. LaTeX Font Info: Font shape `TU/lmss/m/it' in size <8> not available -(Font) Font shape `TU/lmss/m/sl' tried instead on input line 355. +(Font) Font shape `TU/lmss/m/sl' tried instead on input line 361. [1 ] LaTeX Font Info: Font shape `TU/lmtt/bx/n' in size <14.4> not available -(Font) Font shape `TU/lmtt/b/n' tried instead on input line 408. +(Font) Font shape `TU/lmtt/b/n' tried instead on input line 424. File: /Library/Frameworks/R.framework/Versions/4.2-arm64/Resources/library/rticles/rmarkdown/templates/joss/resources/JOSS-logo.png Graphic file (type bmp) @@ -983,11 +983,11 @@ Package logreq Info: Writing requests to 'paper.run.xml'. ) Here is how much of TeX's memory you used: - 34908 strings out of 477640 - 721537 string characters out of 5839684 - 1507951 words of memory out of 5000000 - 55548 multiletter control sequences out of 15000+600000 - 476131 words of font info for 76 fonts, out of 8000000 for 9000 + 34908 strings out of 478777 + 721537 string characters out of 5849397 + 1867979 words of memory out of 5000000 + 54411 multiletter control sequences out of 15000+600000 + 519159 words of font info for 80 fonts, out of 8000000 for 9000 14 hyphenation exceptions out of 8191 84i,12n,81p,678b,848s stack positions out of 10000i,1000n,20000p,200000b,200000s diff --git a/paper/paper.md b/paper/paper.md index e70b3ad77..5ba244201 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -7,7 +7,7 @@ authors: affiliations: - index: 1 name: Netflix -date: "2023-01-01" +date: "2023-01-02" bibliography: paper.bib output: rticles::joss_article csl: apa.csl @@ -24,7 +24,7 @@ The R programming language [@base2023] is a popular choice for data analysis and # Features -There are a number of linters offered by `{lintr}`. +There are over 85 linters offered by `{lintr}`! ```r @@ -34,10 +34,14 @@ length(all_linters()) #> [1] 87 ``` -For the sake of brevity, we will showcase only a few linters. To see details about all available linters, we will encourage readers to see . +Naturally, we can't discuss all of them here. For the sake of brevity, we will showcase only a few linters. To see details about all available linters, we encourage readers to see . - **Readability** +Every coder knows that they spend significantly more time reading compared to writing code. Thus, writing readable code makes the code more maintainable and reduces the possibility of introducing bugs stemming from poor understanding of the code. + +`{lintr}` provides a number of linters that suggest more readable alternatives of the code. For example, `function_left_parentheses_linter()`. + ```r lint( @@ -50,10 +54,7 @@ lint( #> :1:13: style: [function_left_parentheses_linter] Remove spaces before the left parenthesis in a function call. #> stats::sd (c (x, y, z)) #> ^ -``` - -```r lint( text = "stats::sd(c(x, y, z))", linters = function_left_parentheses_linter() @@ -62,6 +63,8 @@ lint( - **Efficiency** +Sometimes the users might not be aware of a more efficient way offered by R for carrying out a computation. `{lintr}` offers linters that can provide such suggestions. + ```r lint( @@ -80,6 +83,8 @@ lint( - **Tidyverse style** +`{lintr}` also provides linters to enforce the style used throughout the `{tidyverse}` [@Wickham2019] ecosystem of packages. This style of coding has been outlined in the tidyverse style guide (https://style.tidyverse.org/index.html). + ```r lint( @@ -99,7 +104,6 @@ lint( ) ``` - # Benefits of using `{lintr}` There are several benefits to using `{lintr}` to analyze and improve R code. One of the most obvious is that it can help users identify and fix problems in their code, which can save time and effort during the development process. By catching issues early on, `{lintr}` can help prevent bugs and other issues from creeping into code, which can save time and effort when it comes to debugging and testing. diff --git a/paper/paper.pdf b/paper/paper.pdf index 32853e8f76c5ec18cfb1d368d4a1b9cc1415782d..1f5c83f8680d2b9c929bdedfebea329f73dc7011 100644 GIT binary patch delta 34281 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

*4*`gIt|U=Oqc0@uL#PahVq&<-w;I`7(j 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 delta 30344 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 E0N|XhTL1t6 From 876e110eb100467f053f125cd9fac09f65b8736e Mon Sep 17 00:00:00 2001 From: Indrajeet Patil Date: Tue, 3 Jan 2023 13:39:54 +0100 Subject: [PATCH 08/41] only show examples that lint --- .github/workflows/draft-pdf.yml | 2 +- paper/paper.Rmd | 6 ++++++ paper/paper.log | 6 +++--- paper/paper.md | 23 +++++++---------------- paper/paper.pdf | Bin 142811 -> 142528 bytes 5 files changed, 17 insertions(+), 20 deletions(-) diff --git a/.github/workflows/draft-pdf.yml b/.github/workflows/draft-pdf.yml index 7f8947df0..0e1c7e0d5 100644 --- a/.github/workflows/draft-pdf.yml +++ b/.github/workflows/draft-pdf.yml @@ -1,4 +1,4 @@ -on: [push] +#on: [push] jobs: paper: diff --git a/paper/paper.Rmd b/paper/paper.Rmd index e3dc2ae85..0d29890a1 100644 --- a/paper/paper.Rmd +++ b/paper/paper.Rmd @@ -54,7 +54,9 @@ lint( text = "stats::sd (c (x, y, z))", linters = function_left_parentheses_linter() ) +``` +```{r, echo=FALSE, eval=FALSE} lint( text = "stats::sd(c(x, y, z))", linters = function_left_parentheses_linter() @@ -70,7 +72,9 @@ lint( text = "any(is.na(x), na.rm = TRUE)", linters = any_is_na_linter() ) +``` +```{r, echo=FALSE, eval=FALSE} lint( text = "anyNA(x)", linters = any_is_na_linter() @@ -86,7 +90,9 @@ lint( text = "1:3 %>% mean %>% as.character", linters = pipe_call_linter() ) +``` +```{r, echo=FALSE, eval=FALSE} lint( text = "1:3 %>% mean() %>% as.character()", linters = pipe_call_linter() diff --git a/paper/paper.log b/paper/paper.log index 461d12fb1..363348dcd 100644 --- a/paper/paper.log +++ b/paper/paper.log @@ -1,4 +1,4 @@ -This is XeTeX, Version 3.141592653-2.6-0.999994 (TeX Live 2022) (preloaded format=xelatex 2023.1.2) 2 JAN 2023 18:32 +This is XeTeX, Version 3.141592653-2.6-0.999994 (TeX Live 2022) (preloaded format=xelatex 2023.1.2) 3 JAN 2023 13:38 entering extended mode restricted \write18 enabled. %&-line parsing enabled. @@ -950,12 +950,12 @@ Package fancyhdr Warning: \headheight is too small (62.59596pt): (fancyhdr) \addtolength{\topmargin}{-0.95425pt}. LaTeX Font Info: Font shape `TU/lmss/m/it' in size <8> not available -(Font) Font shape `TU/lmss/m/sl' tried instead on input line 361. +(Font) Font shape `TU/lmss/m/sl' tried instead on input line 356. [1 ] LaTeX Font Info: Font shape `TU/lmtt/bx/n' in size <14.4> not available -(Font) Font shape `TU/lmtt/b/n' tried instead on input line 424. +(Font) Font shape `TU/lmtt/b/n' tried instead on input line 409. File: /Library/Frameworks/R.framework/Versions/4.2-arm64/Resources/library/rticles/rmarkdown/templates/joss/resources/JOSS-logo.png Graphic file (type bmp) diff --git a/paper/paper.md b/paper/paper.md index 5ba244201..9ee25e1ca 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -7,7 +7,7 @@ authors: affiliations: - index: 1 name: Netflix -date: "2023-01-02" +date: "2023-01-03" bibliography: paper.bib output: rticles::joss_article csl: apa.csl @@ -54,13 +54,10 @@ lint( #> :1:13: style: [function_left_parentheses_linter] Remove spaces before the left parenthesis in a function call. #> stats::sd (c (x, y, z)) #> ^ - -lint( - text = "stats::sd(c(x, y, z))", - linters = function_left_parentheses_linter() -) ``` + + - **Efficiency** Sometimes the users might not be aware of a more efficient way offered by R for carrying out a computation. `{lintr}` offers linters that can provide such suggestions. @@ -74,13 +71,10 @@ lint( #> :1:1: warning: [any_is_na_linter] anyNA(x) is better than any(is.na(x)). #> any(is.na(x), na.rm = TRUE) #> ^~~~~~~~~~~~~~~~~~~~~~~~~~~ - -lint( - text = "anyNA(x)", - linters = any_is_na_linter() -) ``` + + - **Tidyverse style** `{lintr}` also provides linters to enforce the style used throughout the `{tidyverse}` [@Wickham2019] ecosystem of packages. This style of coding has been outlined in the tidyverse style guide (https://style.tidyverse.org/index.html). @@ -97,13 +91,10 @@ lint( #> :1:18: warning: [pipe_call_linter] Use explicit calls in magrittr pipes, i.e., `a %>% foo` should be `a %>% foo()`. #> 1:3 %>% mean %>% as.character #> ^~~~~~~~~~~~ - -lint( - text = "1:3 %>% mean() %>% as.character()", - linters = pipe_call_linter() -) ``` + + # Benefits of using `{lintr}` There are several benefits to using `{lintr}` to analyze and improve R code. One of the most obvious is that it can help users identify and fix problems in their code, which can save time and effort during the development process. By catching issues early on, `{lintr}` can help prevent bugs and other issues from creeping into code, which can save time and effort when it comes to debugging and testing. diff --git a/paper/paper.pdf b/paper/paper.pdf index 1f5c83f8680d2b9c929bdedfebea329f73dc7011..60b3fde4b5ded92ef49fbaa171da5ca83c861b8b 100644 GIT binary patch delta 18835 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 delta 19043 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 Date: Wed, 4 Jan 2023 11:39:46 +0100 Subject: [PATCH 09/41] add section on best practices --- .github/workflows/draft-pdf.yml | 4 ++- paper/paper.Rmd | 55 +++++++++++++++++++++-------- paper/paper.bib | 7 ++++ paper/paper.log | 13 ++++--- paper/paper.md | 60 ++++++++++++++++++++++---------- paper/paper.pdf | Bin 142528 -> 144365 bytes 6 files changed, 101 insertions(+), 38 deletions(-) diff --git a/.github/workflows/draft-pdf.yml b/.github/workflows/draft-pdf.yml index 0e1c7e0d5..338e4cefd 100644 --- a/.github/workflows/draft-pdf.yml +++ b/.github/workflows/draft-pdf.yml @@ -1,4 +1,6 @@ -#on: [push] +on: + push: + branches: [main, master] jobs: paper: diff --git a/paper/paper.Rmd b/paper/paper.Rmd index 0d29890a1..b64a6ae03 100644 --- a/paper/paper.Rmd +++ b/paper/paper.Rmd @@ -1,19 +1,22 @@ --- title: "Static Code Analysis for R" +date: "`r Sys.Date()`" +tags: ["R", "linter", "tidyverse"] + authors: - name: Jim Hester affiliation: 1 orcid: ~ + affiliations: - index: 1 name: Netflix -date: "`r Sys.Date()`" -bibliography: paper.bib + output: rticles::joss_article +bibliography: paper.bib csl: apa.csl journal: JOSS link-citations: yes -tags: ["R", "linter", "tidyverse"] --- ```{r, warning=FALSE, message=FALSE, echo=FALSE} @@ -29,7 +32,7 @@ options(width = 60) # Statement of Need -The R programming language [@base2023] is a popular choice for data analysis and statistical computing, and is used by a wide range of researchers and data scientists. The `{lintr}` package is an open source R package that provides static code analysis that checks for a variety of common problems related to readability, efficiency, consistency, style, etc. It is designed to be easy to use and integrate into existing workflows. It can be run from the command line, or can be used as part of an automated build or continuous integration process. `{lintr}` also integrates with a number of popular IDEs and text editors, such as RStudio and Visual Studio Code, making it convenient for users to run `{lintr}` checks on their code as they work. +The R programming language [@base2023] is a popular choice for statistical analysis and visualization, and is used by a wide range of researchers and data scientists. The `{lintr}` package is an open-source R package that provides static code analysis to check for a variety of common problems related to readability, efficiency, consistency, style, etc. It is designed to be easy to use and integrate into existing workflows, and can be run from the command line or used as part of an automated build or continuous integration process. `{lintr}` also integrates with a number of popular IDEs and text editors, such as RStudio and Visual Studio Code, making it convenient for users to run `{lintr}` checks on their code as they work. # Features @@ -41,31 +44,33 @@ library(lintr) length(all_linters()) ``` -Naturally, we can't discuss all of them here. For the sake of brevity, we will showcase only a few linters. To see details about all available linters, we encourage readers to see . +Naturally, we can't discuss all of them here. To see details about all available linters, we encourage readers to see . -- **Readability** +We will showcase one linter for each kind of common problem found in R code. + +- **Best practices** -Every coder knows that they spend significantly more time reading compared to writing code. Thus, writing readable code makes the code more maintainable and reduces the possibility of introducing bugs stemming from poor understanding of the code. +`{lintr}` offers linters that can detect problematic antipatterns and suggest alternative patterns that follow best practices. -`{lintr}` provides a number of linters that suggest more readable alternatives of the code. For example, `function_left_parentheses_linter()`. +For example, usage of vectorized `&` and `|` logical operators in conditional statements is error-prone, and scalar `&&` and `||`, respectively, are to be preferred. The `vector_logic_linter()` linter detects such problematic usages. ```{r} lint( - text = "stats::sd (c (x, y, z))", - linters = function_left_parentheses_linter() + text = "if (x & y) 1", + linters = vector_logic_linter() ) ``` -```{r, echo=FALSE, eval=FALSE} +```{r, eval=FALSE, echo=FALSE} lint( - text = "stats::sd(c(x, y, z))", - linters = function_left_parentheses_linter() + text = "if (x & y) 1", + linters = vector_logic_linter() ) ``` - **Efficiency** -Sometimes the users might not be aware of a more efficient way offered by R for carrying out a computation. `{lintr}` offers linters that can provide such suggestions. +Sometimes the users might not be aware of a more efficient way offered by R for carrying out a computation. `{lintr}` offers linters to provide suggestions to improve code efficiency. ```{r} lint( @@ -81,9 +86,29 @@ lint( ) ``` +- **Readability** + +Coders spend significantly more time reading compared to writing code [@mcconnell2004code]. Thus, writing readable code makes the code more maintainable and reduces the possibility of introducing bugs stemming from a poor understanding of the code. + +`{lintr}` provides a number of linters that suggest more readable alternatives. For example, `function_left_parentheses_linter()`. + +```{r} +lint( + text = "stats::sd (c (x, y, z))", + linters = function_left_parentheses_linter() +) +``` + +```{r, echo=FALSE, eval=FALSE} +lint( + text = "stats::sd(c(x, y, z))", + linters = function_left_parentheses_linter() +) +``` + - **Tidyverse style** -`{lintr}` also provides linters to enforce the style used throughout the `{tidyverse}` [@Wickham2019] ecosystem of packages. This style of coding has been outlined in the tidyverse style guide (https://style.tidyverse.org/index.html). +`{lintr}` also provides linters to enforce the style used throughout the `{tidyverse}` [@Wickham2019] ecosystem of R packages. This style of coding has been outlined in the tidyverse style guide (https://style.tidyverse.org/index.html). ```{r} lint( diff --git a/paper/paper.bib b/paper/paper.bib index ae3ea9723..905692556 100644 --- a/paper/paper.bib +++ b/paper/paper.bib @@ -17,3 +17,10 @@ @Manual{base2023 year = {2023}, url = {https://www.R-project.org/}, } + +@book{mcconnell2004code, + title={Code Complete}, + author={McConnell, Steve}, + year={2004}, + publisher={Pearson Education} +} diff --git a/paper/paper.log b/paper/paper.log index 363348dcd..b3e98d63b 100644 --- a/paper/paper.log +++ b/paper/paper.log @@ -1,4 +1,4 @@ -This is XeTeX, Version 3.141592653-2.6-0.999994 (TeX Live 2022) (preloaded format=xelatex 2023.1.2) 3 JAN 2023 13:38 +This is XeTeX, Version 3.141592653-2.6-0.999994 (TeX Live 2022) (preloaded format=xelatex 2023.1.2) 4 JAN 2023 11:39 entering extended mode restricted \write18 enabled. %&-line parsing enabled. @@ -940,6 +940,11 @@ Package hyperref Warning: Suppressing link with empty target on input line 291. Package hyperref Warning: Suppressing link with empty target on input line 291. + +Underfull \hbox (badness 1163) in paragraph at lines 323--326 +\TU/lmr/m/n/10 ters, we encourage readers to see [][]$[][][][][] [] [] [] [][][][][] [] [][][][][][] [] [][][] [] [][][] [] [][][][][][][][][] [] [][][][][] [] [][][][] [] + [] + File: /Library/Frameworks/R.framework/Versions/4.2-arm64/Resources/library/rticles/rmarkdown/templates/joss/resources/JOSS-logo.png Graphic file (type bmp) @@ -950,12 +955,12 @@ Package fancyhdr Warning: \headheight is too small (62.59596pt): (fancyhdr) \addtolength{\topmargin}{-0.95425pt}. LaTeX Font Info: Font shape `TU/lmss/m/it' in size <8> not available -(Font) Font shape `TU/lmss/m/sl' tried instead on input line 356. +(Font) Font shape `TU/lmss/m/sl' tried instead on input line 362. [1 ] LaTeX Font Info: Font shape `TU/lmtt/bx/n' in size <14.4> not available -(Font) Font shape `TU/lmtt/b/n' tried instead on input line 409. +(Font) Font shape `TU/lmtt/b/n' tried instead on input line 440. File: /Library/Frameworks/R.framework/Versions/4.2-arm64/Resources/library/rticles/rmarkdown/templates/joss/resources/JOSS-logo.png Graphic file (type bmp) @@ -985,7 +990,7 @@ Package logreq Info: Writing requests to 'paper.run.xml'. Here is how much of TeX's memory you used: 34908 strings out of 478777 721537 string characters out of 5849397 - 1867979 words of memory out of 5000000 + 1866979 words of memory out of 5000000 54411 multiletter control sequences out of 15000+600000 519159 words of font info for 80 fonts, out of 8000000 for 9000 14 hyphenation exceptions out of 8191 diff --git a/paper/paper.md b/paper/paper.md index 9ee25e1ca..90be3e123 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -1,26 +1,29 @@ --- title: "Static Code Analysis for R" +date: "2023-01-04" +tags: ["R", "linter", "tidyverse"] + authors: - name: Jim Hester affiliation: 1 orcid: ~ + affiliations: - index: 1 name: Netflix -date: "2023-01-03" -bibliography: paper.bib + output: rticles::joss_article +bibliography: paper.bib csl: apa.csl journal: JOSS link-citations: yes -tags: ["R", "linter", "tidyverse"] --- # Statement of Need -The R programming language [@base2023] is a popular choice for data analysis and statistical computing, and is used by a wide range of researchers and data scientists. The `{lintr}` package is an open source R package that provides static code analysis that checks for a variety of common problems related to readability, efficiency, consistency, style, etc. It is designed to be easy to use and integrate into existing workflows. It can be run from the command line, or can be used as part of an automated build or continuous integration process. `{lintr}` also integrates with a number of popular IDEs and text editors, such as RStudio and Visual Studio Code, making it convenient for users to run `{lintr}` checks on their code as they work. +The R programming language [@base2023] is a popular choice for statistical analysis and visualization, and is used by a wide range of researchers and data scientists. The `{lintr}` package is an open-source R package that provides static code analysis to check for a variety of common problems related to readability, efficiency, consistency, style, etc. It is designed to be easy to use and integrate into existing workflows, and can be run from the command line or used as part of an automated build or continuous integration process. `{lintr}` also integrates with a number of popular IDEs and text editors, such as RStudio and Visual Studio Code, making it convenient for users to run `{lintr}` checks on their code as they work. # Features @@ -34,33 +37,32 @@ length(all_linters()) #> [1] 87 ``` -Naturally, we can't discuss all of them here. For the sake of brevity, we will showcase only a few linters. To see details about all available linters, we encourage readers to see . +Naturally, we can't discuss all of them here. To see details about all available linters, we encourage readers to see . -- **Readability** +We will showcase one linter for each kind of common problem found in R code. -Every coder knows that they spend significantly more time reading compared to writing code. Thus, writing readable code makes the code more maintainable and reduces the possibility of introducing bugs stemming from poor understanding of the code. +- **Best practices** -`{lintr}` provides a number of linters that suggest more readable alternatives of the code. For example, `function_left_parentheses_linter()`. +`{lintr}` offers linters that can detect problematic antipatterns and suggest alternative patterns that follow best practices. + +For example, usage of vectorized `&` and `|` logical operators in conditional statements is error-prone, and scalar `&&` and `||`, respectively, are to be preferred. The `vector_logic_linter()` linter detects such problematic usages. ```r lint( - text = "stats::sd (c (x, y, z))", - linters = function_left_parentheses_linter() + text = "if (x & y) 1", + linters = vector_logic_linter() ) -#> :1:10: style: [function_left_parentheses_linter] Remove spaces before the left parenthesis in a function call. -#> stats::sd (c (x, y, z)) -#> ^ -#> :1:13: style: [function_left_parentheses_linter] Remove spaces before the left parenthesis in a function call. -#> stats::sd (c (x, y, z)) -#> ^ +#> :1:7: warning: [vector_logic_linter] Conditional expressions require scalar logical operators (&& and ||) +#> if (x & y) 1 +#> ^ ``` - **Efficiency** -Sometimes the users might not be aware of a more efficient way offered by R for carrying out a computation. `{lintr}` offers linters that can provide such suggestions. +Sometimes the users might not be aware of a more efficient way offered by R for carrying out a computation. `{lintr}` offers linters to provide suggestions to improve code efficiency. ```r @@ -75,9 +77,31 @@ lint( +- **Readability** + +Coders spend significantly more time reading compared to writing code [@mcconnell2004code]. Thus, writing readable code makes the code more maintainable and reduces the possibility of introducing bugs stemming from a poor understanding of the code. + +`{lintr}` provides a number of linters that suggest more readable alternatives. For example, `function_left_parentheses_linter()`. + + +```r +lint( + text = "stats::sd (c (x, y, z))", + linters = function_left_parentheses_linter() +) +#> :1:10: style: [function_left_parentheses_linter] Remove spaces before the left parenthesis in a function call. +#> stats::sd (c (x, y, z)) +#> ^ +#> :1:13: style: [function_left_parentheses_linter] Remove spaces before the left parenthesis in a function call. +#> stats::sd (c (x, y, z)) +#> ^ +``` + + + - **Tidyverse style** -`{lintr}` also provides linters to enforce the style used throughout the `{tidyverse}` [@Wickham2019] ecosystem of packages. This style of coding has been outlined in the tidyverse style guide (https://style.tidyverse.org/index.html). +`{lintr}` also provides linters to enforce the style used throughout the `{tidyverse}` [@Wickham2019] ecosystem of R packages. This style of coding has been outlined in the tidyverse style guide (https://style.tidyverse.org/index.html). ```r diff --git a/paper/paper.pdf b/paper/paper.pdf index 60b3fde4b5ded92ef49fbaa171da5ca83c861b8b..7353fab60f2ec088328ca645b685c9346ef1c136 100644 GIT binary patch delta 35810 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 K3MC~)Peuy8m__vf delta 33996 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 From 8769f883241a1e44b1ae91ba787d443cf9981dc3 Mon Sep 17 00:00:00 2001 From: Indrajeet Patil Date: Thu, 5 Jan 2023 18:16:49 +0100 Subject: [PATCH 10/41] retain TeX file as well [skip ci] --- paper/paper.Rmd | 4 +- paper/paper.log | 2 +- paper/paper.md | 6 +- paper/paper.pdf | Bin 144365 -> 144374 bytes paper/paper.tex | 507 ++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 515 insertions(+), 4 deletions(-) create mode 100644 paper/paper.tex diff --git a/paper/paper.Rmd b/paper/paper.Rmd index b64a6ae03..bf3af98d0 100644 --- a/paper/paper.Rmd +++ b/paper/paper.Rmd @@ -12,7 +12,9 @@ affiliations: - index: 1 name: Netflix -output: rticles::joss_article +output: + rticles::joss_article: + keep_tex: true bibliography: paper.bib csl: apa.csl journal: JOSS diff --git a/paper/paper.log b/paper/paper.log index b3e98d63b..921635a8e 100644 --- a/paper/paper.log +++ b/paper/paper.log @@ -1,4 +1,4 @@ -This is XeTeX, Version 3.141592653-2.6-0.999994 (TeX Live 2022) (preloaded format=xelatex 2023.1.2) 4 JAN 2023 11:39 +This is XeTeX, Version 3.141592653-2.6-0.999994 (TeX Live 2022) (preloaded format=xelatex 2023.1.2) 5 JAN 2023 18:16 entering extended mode restricted \write18 enabled. %&-line parsing enabled. diff --git a/paper/paper.md b/paper/paper.md index 90be3e123..11dc92976 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -1,6 +1,6 @@ --- title: "Static Code Analysis for R" -date: "2023-01-04" +date: "2023-01-05" tags: ["R", "linter", "tidyverse"] authors: @@ -12,7 +12,9 @@ affiliations: - index: 1 name: Netflix -output: rticles::joss_article +output: + rticles::joss_article: + keep_tex: true bibliography: paper.bib csl: apa.csl journal: JOSS diff --git a/paper/paper.pdf b/paper/paper.pdf index 7353fab60f2ec088328ca645b685c9346ef1c136..94f50a7f398822f61b64e0f21071c02c593b4509 100644 GIT binary patch delta 10005 zcmai(Wl)?=*R2BtcMb0DGPnhI7zl2`-DPkFcL;95U4r{y!QCxDfMCH%a2PW1<$0g; zbt6|uD$l|wYo2kQ0|XVLR#S#?Z7i};oLZHespW3SZ0;mIVG~i%x|C# zwm(}2e6!3=s0Uic_#baJ*hpiO0UuLy=x2|Q4vV!f6#r-}#iPkzE z7m~+y6V&fHMC!#QCEbI5QcSNO?Z2EI-NCfo`R9FMm@{5SHbK1v>A0x;NFOOl6_1T6 zYrtdN(t0%zCi_#|y*c{}?p$Pp3oCGVmi6V3B6pp`_-U>ls3NzuPX^h6J~Yc3BpTO& z-y0$22^Uq1)C0&?kYBW*%t2OuF{42SG!HG}sSu)Q` zT*{Dlg_SHW0@HQd`0q>%QdsUH^D+b_V)dQJnA{cDUT@t(9VuUN3pr?{ z(%A_BgGrifs&$+{qw@u>v1dtT!r^D#Il?i6`6VRKJiR=u&7IMFH%x$PjzioSz0Z2b z-+1HF5)vt-&D8WzzC7D)P=Y+282A9~nt3uWFblz3?obT>V2wq5u38i8R^%5s-PPmb z6?t4N5Pj^tStX_lAJ7n59@lUlY1t!&@<8MN*3_A6$5j&hS9Iw`q~AJu6Inx;z|j&| zA_yt+A~7(RT)KUErM>{^Q;@YGy5H=ZNA{)gN>ts3Nr6tRZ%i!o&LaBxQzEo?$KMG9 z0F-#T1WhLXo9c#<;rMt;*;obz)0*%53QNuGmiu4jR$8z1fM$}`e4tJyhj5(K@8SV%pV zChGZpfgZqUn*KKR(|V4uC-HaoodXC-#Iy58O_5X{nF-nHW_Pt>-tnT{7`E(|HbPpE zZb!4{cc+h_!o$RfXI+9{wSVp`Kc+)I&Vr9U`ZH~U#m)m+97OidcNbDnvTxL`j*%gU z(C=~d?h$Tdtrb+$V3}!M?|_o5ldY`k2>_JVX6#F&Yh1vZ$%(u_PC;5ldmgsCj?ssm z48k0(kK;-`SITnDWDUzSCa>|)=wyIeuJ8N&5K5b7QlSQW1osrX}hC{YZLyJUUr zdMSrpI5D%lWEX;5W;$|QF@}hx7j_YYe1Ax-SqU+gvT9j2cX(JhULW%#ZL!>d)QF!O z(4A83!xs!gg7lI3k|I@}rkiXj=cn4QpWWSkWhw}B1zx)zSGKajiF%$}inu zpKiEJHa}3EAZUNn`nM?Pu74HE_y1I=vIG`cI1cd%n)$^lKZm$zdnzgECi5)KYj8W6 zfA)JM@qVTgmg-aIx{UAxMR~w+(Fa4kBpce$d5Z?Xlt;31=U;&mcUmiX|G58*jWV%z z1?_$fT&GgE`2h{`91MndZWzyYgU<=+LD<)R?I=%LYnwKd6j*JS7zBt2ian}{NjCaH zic5PUW|H(N>6hl-)wwZ%v^F1dps1pO!6<0mQq-J2DHEN(KEO)uv^2uvsMM#(e1Qz7^ zFBIuUj{Dp=kvlN9+i%t^P3$VlG;i_7Y!EI?b2F`}D2ygZPtoIUlEMA$vow+X^uLuT zXM{_y*qdQ4JN%{ke{O@k-AaY{O)j>|`=OJurJ{l+^!S>BD~f2ZI!0Ivv;i#9zpT%O z_trZ8JUtXP%yEGmf{Z}C!GYdKX9_1&J3DChvKQ*U&ldthDajArLl?Xd&`!R8lcAh6 zdqv|||6o$(sq4wn+9AkaJn2IhRyr7ww}^hg6kh8aopWR5d!dnJ zx44ZEP-w--d*MATV5m@X>bE6oD?xfIJ(c9qocU^uJ&bYMq*hsS4L^7uDsg=r@#Lzs zrz-sP(eXY6%{%;<8YN(U30~Ssqe57;7kU`7OjtAlzsl}Fa#iknb#BCDr7%i{Aia>5 zHj)CWiz;|%p_LdV2?I5Wz@cu}4h`k4LguiMR0e>YVZ3seCX@(sCDT?qUf!0(u8H1m zVcx!IBsE!Mw*vDoMxoi>&xXRDR$u8&OA&_8YxftQM8-IiJo{aD9F*(Q=AICc z>*jD-Rsd6WJYB*ZTkM_iBljsxD8XxkiJzi%%H-s1g{TTRP$zn3ALarSI@-hqEdS^^h zQbdXDXc;GjCQtcVcZO;;*l&$$1K_$3n^g`E5rhHn>t_{{0R=4Do`-HUY;lt z^*+&$Y>C{vnW-;43=&mfE@C(s^@4F`4vBh}QHbgn72yR6diFc@=nQRO9$iB+uXm06 zdtNI37+{bY8~Nv(Y_`gzzrx@S0effv7O~Cie+|j>0hiDJ6j5x1@`FxFsI?FNgtUhn zd-19>DUyYvV8Kfe!!h;Qpy^EHm=R&9XT2T**v^_Z^F&q(ZzjiSl;~L7aE%QgbV~cp#8#Ww2 zEW2eB>LpEpQ2qsVS5@*oNdyFRPA|!Eij}H7jB}dn)K-Phhu^CZ_n`GIC4D76$z z0RnGOA1Xhc9>JbGeSipQ07I8$9d@wBSgwui`{??yZX~<_m-dUGJTp71N=41L5fRY_ zetFaR?52?-LutLwyzr`ATvqNihCWN%t$l-UJZLq6nd(Uv&c>+3{QG9vJ@0|CH>^sU zbF~=n)uXrt#CIH&2dHFv9&xwO1o2$Vjo$kyt&L0y;ZP&T{}XJH%{!D>XJwP&Ar z8>UU;oU%<`9$P9VJ&3_#Ge_I%Cp|;%I057vG5jez8Xz1}=;%^yXQ~P=I z@Y#aQb_|v+&`-kGu>(UD)E5mm9o*lvD|b%c1V?n1*8kgY&c1NU;A%6a4Pcszt2~o# zOzju{@&1O{?t}SA!h$DX+f@=#^@r*jWb;BVBP&3RQJu0{kmzaHa7K-xK|RwXgc#$h z!|r;vdEat7=qD!X^O4shblensj9m}r|D?9!J9l^Op>E8g457LIbFAnawG?!JjO?K0 z?KlE*L^ap2_m(^cN9&(Y-YavpT&QG~IqJlYFwA~SO*HYTj9R89XN%LHmGhJ{(%Lyh zJTca>a?U@IwfL;c)U25C`lmp4<4*U_Pk$_*oeH4 z07(v>EL4>Zn;=9w`7Ox|j@9+5YTv|W$SSq=Z%vIpK15DtEx0GuVg$5#5&!~fn9Uot zxvC=nA3RFPtWiLkubT`a=$IsG+Jzg|RNIt;?_7L|e>Tin=5(BNsg6|L0gO$BO+Wh$ zwv`;|f}90yuV4sl0qqa}!X@?pE8+jnBq^GXe^d0>4vfI>oLJ6s#fw_Hk`2XC&_=X< zjChU{Xi0Qeyc5jG6r@iby0axYu?2(muq!ht?Dc;()#gsstr`6~uOa`YdY3jsL1s~r zhx0&v!TsXtDfEo)SIA@G&e&dUV4%3RG3Mr-QBX!d{ul6ErMQ|R0*8Z!ASS(WCwtB2 zKQX%fKQS6St$|(Im9kQQ;^^DhB)Alkaw@HR)Z>xjun0w?s7iTjn%Q;4OvD65LYhG& zuIKzwKG4IPdU=%LSCk9(Bi(O<5K4a67oM^8!=VSX5J=EDlRHb75y#RnB$XtV+C{gH z7$+%eQ}+tRA!uKwF#jZqBX9bu8Kz7`Tg*FZn94LQr}&64G)cTVk?rVrG9%zB-fhJA zH$>x#Smq0ZlC%c40=66jrYL9 zVJJqlqU z!KDRF)gaRY`(O4)jK25Hlr8$GAJLi(&b;X=Tb3s4`B4IcB2y=Ax^9pUgu){K1tky+ zCj)NT3_;O#Oc4+tK7gARsgO3d=6~n+eEOoo1!)}Y;Cm&{Yii-;vKHifR>3SO$!W`X zB2XJrL$$DlcrAK}uX`5G>=ini{fZUaQ=S3T#r6K5jHK|s9PvZD@HA@b~m1}9;b9N?k_olpI+Vwvz0k~F2x__1(ynPDa`HZ1{ zm;F$|0`JG-B!NwjqhQJ>T+Az-#Q{dEKiL2pyeaG>lfg}P+1S2Sg{9}^yOO0Ggii}*mjIoFQ+ueOG1rdu!GVR#A0GzR>6Va#7NtWQL7}R(5~-b)^?r9y$<@B{sM?E10j^BXrm! zD?B_N9k|PB9*cvz#*52|tGmyoX~>|(Bp)XW9d^iKPVtRLDsYuSTfw~36S1{ z;j?0!Q3b2kj*p0yTLXIRVyv-#Ax)MkQR7A`YSRK_$ykdw28r0LEEZ;pyVGK=v>32{ zqC^FgGdQ_5s_3I4;Irf?vu`tCwBNcoSr98@Pw}WLRXs2-kg%3rAG_`ryaz|)2^h3G z9^pm1%Qp^7eOj2e1xgFcDo??oK#d;3C{yJl)bYVdH^cAi5g3s?$kT;-0=^z_&&puS zvLV6Tl-!vgFi-}W=R&E|{iw~0h7qK~W^!cxl0b=CGAL--7jWd^>LYKsJ+pDs=gW;t z5T|9{aZsz!8^SAxZ7oF6VhqrhUVg4(lM82`>#y3dlJIlee6|W(R=)%j*=yCT;7ux>t{a?J@jGhtuPF0*7FKz1 zhGp1QqO`QdWfSs9zVDSVZr_O0yaF0`!$RKh{m6V+hFc_|+dPRxRU#h_m!`T-A$gpc zV6+K^KL{J7PN9~y6ZmQ-7K-zO9!v=^BhVBt=cYXp(F| zgwGgGm^+%HjwB3cBBff~RswH$P{Fu}n1|SehFuUiPoK4)pP+>&VHakahRvu7pMnVe zYN^^-w*F?nlP2OVG}WzcAc;w%8C$ac+6gSeL9~8yw;r~gG`1w!9Bv^n3APoFYMX_*ke^ChBg*j0TskeM$Qn>AS@NVja24rH|KAG|KO+=3zTJz*rj-1nePKbW;Dwu0& zp~_Jt+RX%;RkqKR-k;<{w2p#Uh^(Sws-`MnW9pePNqq%qZsjaulB=h26}ySFe{t&16T|CY9!gQ=fz_h*ejvZ zL}No!F!~K5uNE$nj_8n8lT7IUn-ohw#leC$_FgS$=hz$ddO+Ly{FE9ZC|A&gsf{zp=N4_p{gb!C3BFdp!Z-R2p0m zchu}33zW2f+`^z18$1JBZLIj@Ta7FgY4kSS6yC^!;P5LeH-UnLcakDTSN_ O0@c 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 diff --git a/paper/paper.tex b/paper/paper.tex new file mode 100644 index 000000000..f877b40c2 --- /dev/null +++ b/paper/paper.tex @@ -0,0 +1,507 @@ +\documentclass[10pt,a4paper,onecolumn]{article} +\usepackage{marginnote} +\usepackage{graphicx} +\usepackage{xcolor} +\usepackage{authblk,etoolbox} +\usepackage{titlesec} +\usepackage{calc} +\usepackage{tikz} +\usepackage{hyperref} +\hypersetup{colorlinks,breaklinks, + urlcolor=[rgb]{0.0, 0.5, 1.0}, + linkcolor=[rgb]{0.0, 0.5, 1.0}} +\usepackage{caption} +\usepackage{tcolorbox} +\usepackage{amssymb,amsmath} +\usepackage{ifxetex,ifluatex} +\usepackage{seqsplit} +\usepackage{fixltx2e} % provides \textsubscript +\usepackage[ + backend=biber, +% style=alphabetic, +% citestyle=numeric +]{biblatex} +\bibliography{paper.bib} + + +% --- Page layout ------------------------------------------------------------- +\usepackage[top=3.5cm, bottom=3cm, right=1.5cm, left=1.0cm, + headheight=2.2cm, reversemp, includemp, marginparwidth=4.5cm]{geometry} + +% --- Default font ------------------------------------------------------------ +% \renewcommand\familydefault{\sfdefault} + +% --- Style ------------------------------------------------------------------- +\renewcommand{\bibfont}{\small \sffamily} +\renewcommand{\captionfont}{\small\sffamily} +\renewcommand{\captionlabelfont}{\bfseries} + +% --- Section/SubSection/SubSubSection ---------------------------------------- +\titleformat{\section} + {\normalfont\sffamily\Large\bfseries} + {}{0pt}{} +\titleformat{\subsection} + {\normalfont\sffamily\large\bfseries} + {}{0pt}{} +\titleformat{\subsubsection} + {\normalfont\sffamily\bfseries} + {}{0pt}{} +\titleformat*{\paragraph} + {\sffamily\normalsize} + + +% --- Header / Footer --------------------------------------------------------- +\usepackage{fancyhdr} +\pagestyle{fancy} +\fancyhf{} +%\renewcommand{\headrulewidth}{0.50pt} +\renewcommand{\headrulewidth}{0pt} +\fancyhead[L]{\hspace{-0.75cm}\includegraphics[width=5.5cm]{/Library/Frameworks/R.framework/Versions/4.2-arm64/Resources/library/rticles/rmarkdown/templates/joss/resources/JOSS-logo.png}} +\fancyhead[C]{} +\fancyhead[R]{} +\renewcommand{\footrulewidth}{0.25pt} + +\fancyfoot[L]{\footnotesize{\sffamily , (). Static Code Analysis for +R. \textit{Journal of Open Source Software}, (), . \href{https://doi.org/}{https://doi.org/}}} + + +\fancyfoot[R]{\sffamily \thepage} +\makeatletter +\let\ps@plain\ps@fancy +\fancyheadoffset[L]{4.5cm} +\fancyfootoffset[L]{4.5cm} + +% --- Macros --------- + +\definecolor{linky}{rgb}{0.0, 0.5, 1.0} + +\newtcolorbox{repobox} + {colback=red, colframe=red!75!black, + boxrule=0.5pt, arc=2pt, left=6pt, right=6pt, top=3pt, bottom=3pt} + +\newcommand{\ExternalLink}{% + \tikz[x=1.2ex, y=1.2ex, baseline=-0.05ex]{% + \begin{scope}[x=1ex, y=1ex] + \clip (-0.1,-0.1) + --++ (-0, 1.2) + --++ (0.6, 0) + --++ (0, -0.6) + --++ (0.6, 0) + --++ (0, -1); + \path[draw, + line width = 0.5, + rounded corners=0.5] + (0,0) rectangle (1,1); + \end{scope} + \path[draw, line width = 0.5] (0.5, 0.5) + -- (1, 1); + \path[draw, line width = 0.5] (0.6, 1) + -- (1, 1) -- (1, 0.6); + } + } + +% --- Title / Authors --------------------------------------------------------- +% patch \maketitle so that it doesn't center +\patchcmd{\@maketitle}{center}{flushleft}{}{} +\patchcmd{\@maketitle}{center}{flushleft}{}{} +% patch \maketitle so that the font size for the title is normal +\patchcmd{\@maketitle}{\LARGE}{\LARGE\sffamily}{}{} +% patch the patch by authblk so that the author block is flush left +\def\maketitle{{% + \renewenvironment{tabular}[2][] + {\begin{flushleft}} + {\end{flushleft}} + \AB@maketitle}} +\makeatletter +\renewcommand\AB@affilsepx{ \protect\Affilfont} +%\renewcommand\AB@affilnote[1]{{\bfseries #1}\hspace{2pt}} +\renewcommand\AB@affilnote[1]{{\bfseries #1}\hspace{3pt}} +\makeatother +\renewcommand\Authfont{\sffamily\bfseries} +\renewcommand\Affilfont{\sffamily\small\mdseries} +\setlength{\affilsep}{1em} + + +\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex + \usepackage[T1]{fontenc} + \usepackage[utf8]{inputenc} + +\else % if luatex or xelatex + \ifxetex + \usepackage{mathspec} + \else + \usepackage{fontspec} + \fi + \defaultfontfeatures{Ligatures=TeX,Scale=MatchLowercase} + +\fi +% use upquote if available, for straight quotes in verbatim environments +\IfFileExists{upquote.sty}{\usepackage{upquote}}{} +% use microtype if available +\IfFileExists{microtype.sty}{% +\usepackage{microtype} +\UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts +}{} + +\usepackage{hyperref} +\hypersetup{unicode=true, + pdftitle={Static Code Analysis for R}, + pdfborder={0 0 0}, + breaklinks=true} +\urlstyle{same} % don't use monospace font for urls +\usepackage{graphicx,grffile} +\makeatletter +\def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi} +\def\maxheight{\ifdim\Gin@nat@height>\textheight\textheight\else\Gin@nat@height\fi} +\makeatother +% Scale images if necessary, so that they will not overflow the page +% margins by default, and it is still possible to overwrite the defaults +% using explicit options in \includegraphics[width, height, ...]{} +\setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio} +\IfFileExists{parskip.sty}{% +\usepackage{parskip} +}{% else +\setlength{\parindent}{0pt} +\setlength{\parskip}{6pt plus 2pt minus 1pt} +} +\setlength{\emergencystretch}{3em} % prevent overfull lines +\setcounter{secnumdepth}{0} +% Redefines (sub)paragraphs to behave more like sections +\ifx\paragraph\undefined\else +\let\oldparagraph\paragraph +\renewcommand{\paragraph}[1]{\oldparagraph{#1}\mbox{}} +\fi +\ifx\subparagraph\undefined\else +\let\oldsubparagraph\subparagraph +\renewcommand{\subparagraph}[1]{\oldsubparagraph{#1}\mbox{}} +\fi + +% Pandoc syntax highlighting +\usepackage{color} +\usepackage{fancyvrb} +\newcommand{\VerbBar}{|} +\newcommand{\VERB}{\Verb[commandchars=\\\{\}]} +\DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\{\}} +% Add ',fontsize=\small' for more characters per line +\usepackage{framed} +\definecolor{shadecolor}{RGB}{248,248,248} +\newenvironment{Shaded}{\begin{snugshade}}{\end{snugshade}} +\newcommand{\AlertTok}[1]{\textcolor[rgb]{0.94,0.16,0.16}{#1}} +\newcommand{\AnnotationTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textbf{\textit{#1}}}} +\newcommand{\AttributeTok}[1]{\textcolor[rgb]{0.77,0.63,0.00}{#1}} +\newcommand{\BaseNTok}[1]{\textcolor[rgb]{0.00,0.00,0.81}{#1}} +\newcommand{\BuiltInTok}[1]{#1} +\newcommand{\CharTok}[1]{\textcolor[rgb]{0.31,0.60,0.02}{#1}} +\newcommand{\CommentTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textit{#1}}} +\newcommand{\CommentVarTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textbf{\textit{#1}}}} +\newcommand{\ConstantTok}[1]{\textcolor[rgb]{0.00,0.00,0.00}{#1}} +\newcommand{\ControlFlowTok}[1]{\textcolor[rgb]{0.13,0.29,0.53}{\textbf{#1}}} +\newcommand{\DataTypeTok}[1]{\textcolor[rgb]{0.13,0.29,0.53}{#1}} +\newcommand{\DecValTok}[1]{\textcolor[rgb]{0.00,0.00,0.81}{#1}} +\newcommand{\DocumentationTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textbf{\textit{#1}}}} +\newcommand{\ErrorTok}[1]{\textcolor[rgb]{0.64,0.00,0.00}{\textbf{#1}}} +\newcommand{\ExtensionTok}[1]{#1} +\newcommand{\FloatTok}[1]{\textcolor[rgb]{0.00,0.00,0.81}{#1}} +\newcommand{\FunctionTok}[1]{\textcolor[rgb]{0.00,0.00,0.00}{#1}} +\newcommand{\ImportTok}[1]{#1} +\newcommand{\InformationTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textbf{\textit{#1}}}} +\newcommand{\KeywordTok}[1]{\textcolor[rgb]{0.13,0.29,0.53}{\textbf{#1}}} +\newcommand{\NormalTok}[1]{#1} +\newcommand{\OperatorTok}[1]{\textcolor[rgb]{0.81,0.36,0.00}{\textbf{#1}}} +\newcommand{\OtherTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{#1}} +\newcommand{\PreprocessorTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textit{#1}}} +\newcommand{\RegionMarkerTok}[1]{#1} +\newcommand{\SpecialCharTok}[1]{\textcolor[rgb]{0.00,0.00,0.00}{#1}} +\newcommand{\SpecialStringTok}[1]{\textcolor[rgb]{0.31,0.60,0.02}{#1}} +\newcommand{\StringTok}[1]{\textcolor[rgb]{0.31,0.60,0.02}{#1}} +\newcommand{\VariableTok}[1]{\textcolor[rgb]{0.00,0.00,0.00}{#1}} +\newcommand{\VerbatimStringTok}[1]{\textcolor[rgb]{0.31,0.60,0.02}{#1}} +\newcommand{\WarningTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textbf{\textit{#1}}}} + +% tightlist command for lists without linebreak +\providecommand{\tightlist}{% + \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} + + +% Pandoc citation processing +\newlength{\cslhangindent} +\setlength{\cslhangindent}{1.5em} +\newlength{\csllabelwidth} +\setlength{\csllabelwidth}{3em} +\newlength{\cslentryspacingunit} % times entry-spacing +\setlength{\cslentryspacingunit}{\parskip} +% for Pandoc 2.8 to 2.10.1 +\newenvironment{cslreferences}% + {}% + {\par} +% For Pandoc 2.11+ +\newenvironment{CSLReferences}[2] % #1 hanging-ident, #2 entry spacing + {% don't indent paragraphs + \setlength{\parindent}{0pt} + % turn on hanging indent if param 1 is 1 + \ifodd #1 + \let\oldpar\par + \def\par{\hangindent=\cslhangindent\oldpar} + \fi + % set entry spacing + \setlength{\parskip}{#2\cslentryspacingunit} + }% + {} +\usepackage{calc} +\newcommand{\CSLBlock}[1]{#1\hfill\break} +\newcommand{\CSLLeftMargin}[1]{\parbox[t]{\csllabelwidth}{#1}} +\newcommand{\CSLRightInline}[1]{\parbox[t]{\linewidth - \csllabelwidth}{#1}\break} +\newcommand{\CSLIndent}[1]{\hspace{\cslhangindent}#1} + + +\title{Static Code Analysis for R} + + \author[1]{Jim Hester} + + \affil[1]{Netflix} + \date{\vspace{-5ex}} + +\begin{document} +\maketitle + +\marginpar{ + %\hrule + \sffamily\small + + {\bfseries DOI:} \href{https://doi.org/}{\color{linky}{}} + + \vspace{2mm} + + {\bfseries Software} + \begin{itemize} + \setlength\itemsep{0em} + \item \href{}{\color{linky}{Review}} \ExternalLink + \item \href{}{\color{linky}{Repository}} \ExternalLink + \item \href{}{\color{linky}{Archive}} \ExternalLink + \end{itemize} + + \vspace{2mm} + + {\bfseries Submitted:} \\ + {\bfseries Published:} + + \vspace{2mm} + {\bfseries License}\\ + Authors of papers retain copyright and release the work under a Creative Commons Attribution 4.0 International License (\href{http://creativecommons.org/licenses/by/4.0/}{\color{linky}{CC-BY}}). +} + +\hypertarget{statement-of-need}{% +\section{Statement of Need}\label{statement-of-need}} + +The R programming language (\protect\hyperlink{ref-base2023}{R Core +Team, 2023}) is a popular choice for statistical analysis and +visualization, and is used by a wide range of researchers and data +scientists. The \texttt{\{lintr\}} package is an open-source R package +that provides static code analysis to check for a variety of common +problems related to readability, efficiency, consistency, style, etc. It +is designed to be easy to use and integrate into existing workflows, and +can be run from the command line or used as part of an automated build +or continuous integration process. \texttt{\{lintr\}} also integrates +with a number of popular IDEs and text editors, such as RStudio and +Visual Studio Code, making it convenient for users to run +\texttt{\{lintr\}} checks on their code as they work. + +\hypertarget{features}{% +\section{Features}\label{features}} + +There are over 85 linters offered by \texttt{\{lintr\}}! + +\begin{Shaded} +\begin{Highlighting}[] +\FunctionTok{library}\NormalTok{(lintr)} + +\FunctionTok{length}\NormalTok{(}\FunctionTok{all\_linters}\NormalTok{())} +\CommentTok{\#\textgreater{} [1] 87} +\end{Highlighting} +\end{Shaded} + +Naturally, we can't discuss all of them here. To see details about all +available linters, we encourage readers to see +\url{https://lintr.r-lib.org/dev/reference/index.html\#individual-linters}. + +We will showcase one linter for each kind of common problem found in R +code. + +\begin{itemize} +\tightlist +\item + \textbf{Best practices} +\end{itemize} + +\texttt{\{lintr\}} offers linters that can detect problematic +antipatterns and suggest alternative patterns that follow best +practices. + +For example, usage of vectorized \texttt{\&} and \texttt{\textbar{}} +logical operators in conditional statements is error-prone, and scalar +\texttt{\&\&} and \texttt{\textbar{}\textbar{}}, respectively, are to be +preferred. The \texttt{vector\_logic\_linter()} linter detects such +problematic usages. + +\begin{Shaded} +\begin{Highlighting}[] +\FunctionTok{lint}\NormalTok{(} + \AttributeTok{text =} \StringTok{"if (x \& y) 1"}\NormalTok{,} + \AttributeTok{linters =} \FunctionTok{vector\_logic\_linter}\NormalTok{()} +\NormalTok{)} +\CommentTok{\#\textgreater{} \textless{}text\textgreater{}:1:7: warning: [vector\_logic\_linter] Conditional expressions require scalar logical operators (\&\& and ||)} +\CommentTok{\#\textgreater{} if (x \& y) 1} +\CommentTok{\#\textgreater{} \^{}} +\end{Highlighting} +\end{Shaded} + +\begin{itemize} +\tightlist +\item + \textbf{Efficiency} +\end{itemize} + +Sometimes the users might not be aware of a more efficient way offered +by R for carrying out a computation. \texttt{\{lintr\}} offers linters +to provide suggestions to improve code efficiency. + +\begin{Shaded} +\begin{Highlighting}[] +\FunctionTok{lint}\NormalTok{(} + \AttributeTok{text =} \StringTok{"any(is.na(x), na.rm = TRUE)"}\NormalTok{,} + \AttributeTok{linters =} \FunctionTok{any\_is\_na\_linter}\NormalTok{()} +\NormalTok{)} +\CommentTok{\#\textgreater{} \textless{}text\textgreater{}:1:1: warning: [any\_is\_na\_linter] anyNA(x) is better than any(is.na(x)).} +\CommentTok{\#\textgreater{} any(is.na(x), na.rm = TRUE)} +\CommentTok{\#\textgreater{} \^{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}} +\end{Highlighting} +\end{Shaded} + +\begin{itemize} +\tightlist +\item + \textbf{Readability} +\end{itemize} + +Coders spend significantly more time reading compared to writing code +(\protect\hyperlink{ref-mcconnell2004code}{McConnell, 2004}). Thus, +writing readable code makes the code more maintainable and reduces the +possibility of introducing bugs stemming from a poor understanding of +the code. + +\texttt{\{lintr\}} provides a number of linters that suggest more +readable alternatives. For example, +\texttt{function\_left\_parentheses\_linter()}. + +\begin{Shaded} +\begin{Highlighting}[] +\FunctionTok{lint}\NormalTok{(} + \AttributeTok{text =} \StringTok{"stats::sd (c (x, y, z))"}\NormalTok{,} + \AttributeTok{linters =} \FunctionTok{function\_left\_parentheses\_linter}\NormalTok{()} +\NormalTok{)} +\CommentTok{\#\textgreater{} \textless{}text\textgreater{}:1:10: style: [function\_left\_parentheses\_linter] Remove spaces before the left parenthesis in a function call.} +\CommentTok{\#\textgreater{} stats::sd (c (x, y, z))} +\CommentTok{\#\textgreater{} \^{}} +\CommentTok{\#\textgreater{} \textless{}text\textgreater{}:1:13: style: [function\_left\_parentheses\_linter] Remove spaces before the left parenthesis in a function call.} +\CommentTok{\#\textgreater{} stats::sd (c (x, y, z))} +\CommentTok{\#\textgreater{} \^{}} +\end{Highlighting} +\end{Shaded} + +\begin{itemize} +\tightlist +\item + \textbf{Tidyverse style} +\end{itemize} + +\texttt{\{lintr\}} also provides linters to enforce the style used +throughout the \texttt{\{tidyverse\}} +(\protect\hyperlink{ref-Wickham2019}{Wickham et al., 2019}) ecosystem of +R packages. This style of coding has been outlined in the tidyverse +style guide (\url{https://style.tidyverse.org/index.html}). + +\begin{Shaded} +\begin{Highlighting}[] +\FunctionTok{lint}\NormalTok{(} + \AttributeTok{text =} \StringTok{"1:3 \%\textgreater{}\% mean \%\textgreater{}\% as.character"}\NormalTok{,} + \AttributeTok{linters =} \FunctionTok{pipe\_call\_linter}\NormalTok{()} +\NormalTok{)} +\CommentTok{\#\textgreater{} \textless{}text\textgreater{}:1:9: warning: [pipe\_call\_linter] Use explicit calls in magrittr pipes, i.e., \textasciigrave{}a \%\textgreater{}\% foo\textasciigrave{} should be \textasciigrave{}a \%\textgreater{}\% foo()\textasciigrave{}.} +\CommentTok{\#\textgreater{} 1:3 \%\textgreater{}\% mean \%\textgreater{}\% as.character} +\CommentTok{\#\textgreater{} \^{}\textasciitilde{}\textasciitilde{}\textasciitilde{}} +\CommentTok{\#\textgreater{} \textless{}text\textgreater{}:1:18: warning: [pipe\_call\_linter] Use explicit calls in magrittr pipes, i.e., \textasciigrave{}a \%\textgreater{}\% foo\textasciigrave{} should be \textasciigrave{}a \%\textgreater{}\% foo()\textasciigrave{}.} +\CommentTok{\#\textgreater{} 1:3 \%\textgreater{}\% mean \%\textgreater{}\% as.character} +\CommentTok{\#\textgreater{} \^{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}} +\end{Highlighting} +\end{Shaded} + +\hypertarget{benefits-of-using-lintr}{% +\section{\texorpdfstring{Benefits of using +\texttt{\{lintr\}}}{Benefits of using \{lintr\}}}\label{benefits-of-using-lintr}} + +There are several benefits to using \texttt{\{lintr\}} to analyze and +improve R code. One of the most obvious is that it can help users +identify and fix problems in their code, which can save time and effort +during the development process. By catching issues early on, +\texttt{\{lintr\}} can help prevent bugs and other issues from creeping +into code, which can save time and effort when it comes to debugging and +testing. + +Another benefit of \texttt{\{lintr\}} is that it can help users write +more readable and maintainable code. By enforcing a consistent style and +highlighting potential issues, \texttt{\{lintr\}} can help users write +code that is easier to understand and work with. This is especially +important for larger projects or teams, where multiple contributors may +be working on the same codebase and it is important to ensure that code +is easy to follow and understand. + +Finally, \texttt{\{lintr\}} can be a useful tool for teaching and +learning R. By providing feedback on code style and potential issues, it +can help users learn good coding practices and improve their skills over +time. This can be especially useful for beginners, who may not yet be +familiar with all of the best practices for writing R code. + +\hypertarget{conclusion}{% +\section{Conclusion}\label{conclusion}} + +In conclusion, \texttt{\{lintr\}} is a valuable tool for R users to help +improve the quality and reliability of their code. Its static code +analysis capabilities, combined with its flexibility and ease of use, +make it relevant and valuable for a wide range of applications. + +\hypertarget{licensing-and-availability}{% +\section{Licensing and Availability}\label{licensing-and-availability}} + +\texttt{\{lintr\}} is licensed under the MIT License, with all source +code openly developed and stored on GitHub +(\url{https://github.com/r-lib/lintr}), along with a corresponding issue +tracker for bug reporting and feature enhancements. + +\hypertarget{acknowledgments}{% +\section{Acknowledgments}\label{acknowledgments}} + +\hypertarget{references}{% +\section*{References}\label{references}} +\addcontentsline{toc}{section}{References} + +\hypertarget{refs}{} +\begin{CSLReferences}{1}{0} +\leavevmode\vadjust pre{\hypertarget{ref-mcconnell2004code}{}}% +McConnell, S. (2004). \emph{Code complete}. Pearson Education. + +\leavevmode\vadjust pre{\hypertarget{ref-base2023}{}}% +R Core Team. (2023). \emph{{R}: A language and environment for +statistical computing}. R Foundation for Statistical Computing. +\url{https://www.R-project.org/} + +\leavevmode\vadjust pre{\hypertarget{ref-Wickham2019}{}}% +Wickham, H., Averick, M., Bryan, J., Chang, W., McGowan, L. D., +François, R., Grolemund, G., Hayes, A., Henry, L., Hester, J., Kuhn, M., +Pedersen, T. L., Miller, E., Bache, S. M., Müller, K., Ooms, J., +Robinson, D., Seidel, D. P., Spinu, V., \ldots{} Yutani, H. (2019). +Welcome to the {tidyverse}. \emph{Journal of Open Source Software}, +\emph{4}(43), 1686. \url{https://doi.org/10.21105/joss.01686} + +\end{CSLReferences} + +\end{document} From 7bbc6934631603dc3075d60f7926fe451b0b176a Mon Sep 17 00:00:00 2001 From: Indrajeet Patil Date: Thu, 19 Jan 2023 08:07:11 +0100 Subject: [PATCH 11/41] address Jim's comment [skip ci] --- paper/paper.Rmd | 4 +++- paper/paper.log | 2 +- paper/paper.md | 6 ++++-- paper/paper.pdf | Bin 144374 -> 144670 bytes paper/paper.tex | 16 +++++++++++----- 5 files changed, 19 insertions(+), 9 deletions(-) diff --git a/paper/paper.Rmd b/paper/paper.Rmd index bf3af98d0..c478366e2 100644 --- a/paper/paper.Rmd +++ b/paper/paper.Rmd @@ -132,7 +132,9 @@ There are several benefits to using `{lintr}` to analyze and improve R code. One Another benefit of `{lintr}` is that it can help users write more readable and maintainable code. By enforcing a consistent style and highlighting potential issues, `{lintr}` can help users write code that is easier to understand and work with. This is especially important for larger projects or teams, where multiple contributors may be working on the same codebase and it is important to ensure that code is easy to follow and understand. -Finally, `{lintr}` can be a useful tool for teaching and learning R. By providing feedback on code style and potential issues, it can help users learn good coding practices and improve their skills over time. This can be especially useful for beginners, who may not yet be familiar with all of the best practices for writing R code. +`{lintr}` can be a useful tool for teaching and learning R. By providing feedback on code style and potential issues, it can help users learn good coding practices and improve their skills over time. This can be especially useful for beginners, who may not yet be familiar with all of the best practices for writing R code. + +Finally, `{lintr}` has had a large and active user community since its birth in 2014 which has contributed to its rapid development, maintenance, and adoption. At the time of writing, `{lintr}` is in a mature and stable state and therefore provides a reliable API that is unlikely to feature any breaking changes. # Conclusion diff --git a/paper/paper.log b/paper/paper.log index 921635a8e..6e6cf07bf 100644 --- a/paper/paper.log +++ b/paper/paper.log @@ -1,4 +1,4 @@ -This is XeTeX, Version 3.141592653-2.6-0.999994 (TeX Live 2022) (preloaded format=xelatex 2023.1.2) 5 JAN 2023 18:16 +This is XeTeX, Version 3.141592653-2.6-0.999994 (TeX Live 2022) (preloaded format=xelatex 2023.1.2) 19 JAN 2023 08:06 entering extended mode restricted \write18 enabled. %&-line parsing enabled. diff --git a/paper/paper.md b/paper/paper.md index 11dc92976..4284b27b5 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -1,6 +1,6 @@ --- title: "Static Code Analysis for R" -date: "2023-01-05" +date: "2023-01-19" tags: ["R", "linter", "tidyverse"] authors: @@ -127,7 +127,9 @@ There are several benefits to using `{lintr}` to analyze and improve R code. One Another benefit of `{lintr}` is that it can help users write more readable and maintainable code. By enforcing a consistent style and highlighting potential issues, `{lintr}` can help users write code that is easier to understand and work with. This is especially important for larger projects or teams, where multiple contributors may be working on the same codebase and it is important to ensure that code is easy to follow and understand. -Finally, `{lintr}` can be a useful tool for teaching and learning R. By providing feedback on code style and potential issues, it can help users learn good coding practices and improve their skills over time. This can be especially useful for beginners, who may not yet be familiar with all of the best practices for writing R code. +`{lintr}` can be a useful tool for teaching and learning R. By providing feedback on code style and potential issues, it can help users learn good coding practices and improve their skills over time. This can be especially useful for beginners, who may not yet be familiar with all of the best practices for writing R code. + +Finally, `{lintr}` has had a large and active user community since its birth in 2014 which has contributed to its rapid development, maintenance, and adoption. At the time of writing, `{lintr}` is in a mature and stable state and therefore provides a reliable API that is unlikely to feature any breaking changes. # Conclusion diff --git a/paper/paper.pdf b/paper/paper.pdf index 94f50a7f398822f61b64e0f21071c02c593b4509..ffe12cbc8400d421e0a4aeaa6ff126d217cac013 100644 GIT binary patch delta 13250 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 delta 12970 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

KrB%Hn1)(m-w66E_MwF4?pfZDfXT*2BYy(x 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 diff --git a/paper/paper.tex b/paper/paper.tex index f877b40c2..819698f86 100644 --- a/paper/paper.tex +++ b/paper/paper.tex @@ -455,11 +455,17 @@ \section{\texorpdfstring{Benefits of using be working on the same codebase and it is important to ensure that code is easy to follow and understand. -Finally, \texttt{\{lintr\}} can be a useful tool for teaching and -learning R. By providing feedback on code style and potential issues, it -can help users learn good coding practices and improve their skills over -time. This can be especially useful for beginners, who may not yet be -familiar with all of the best practices for writing R code. +\texttt{\{lintr\}} can be a useful tool for teaching and learning R. By +providing feedback on code style and potential issues, it can help users +learn good coding practices and improve their skills over time. This can +be especially useful for beginners, who may not yet be familiar with all +of the best practices for writing R code. + +Finally, \texttt{\{lintr\}} has had a large and active user community +since its birth in 2014 which has contributed to its rapid development, +maintenance, and adoption. At the time of writing, \texttt{\{lintr\}} is +in a mature and stable state and therefore provides a reliable API that +is unlikely to feature any breaking changes. \hypertarget{conclusion}{% \section{Conclusion}\label{conclusion}} From 539b46af97a6475f7b3eacd91fbc8f5cbf7ecf14 Mon Sep 17 00:00:00 2001 From: Indrajeet Patil Date: Sat, 2 Dec 2023 21:10:13 +0530 Subject: [PATCH 12/41] Update paper/paper.Rmd Co-authored-by: Michael Chirico --- paper/paper.Rmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/paper/paper.Rmd b/paper/paper.Rmd index c478366e2..5eb66eea7 100644 --- a/paper/paper.Rmd +++ b/paper/paper.Rmd @@ -38,7 +38,7 @@ The R programming language [@base2023] is a popular choice for statistical analy # Features -There are over 85 linters offered by `{lintr}`! +As of this writing, `{lintr}` offers 85 linters. ```{r} library(lintr) From d982058e3f2c8f6e9434c6b5c632000ffba63438 Mon Sep 17 00:00:00 2001 From: Indrajeet Patil Date: Sat, 2 Dec 2023 18:52:22 +0100 Subject: [PATCH 13/41] mention tidyverse style guide up front --- paper/paper.Rmd | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/paper/paper.Rmd b/paper/paper.Rmd index 5eb66eea7..5eb7cd3b6 100644 --- a/paper/paper.Rmd +++ b/paper/paper.Rmd @@ -29,16 +29,18 @@ knitr::opts_chunk$set( comment = "#>" ) -options(width = 60) +library(lintr) + +withr::local_options(lintr.format_width = 60L) ``` # Statement of Need -The R programming language [@base2023] is a popular choice for statistical analysis and visualization, and is used by a wide range of researchers and data scientists. The `{lintr}` package is an open-source R package that provides static code analysis to check for a variety of common problems related to readability, efficiency, consistency, style, etc. It is designed to be easy to use and integrate into existing workflows, and can be run from the command line or used as part of an automated build or continuous integration process. `{lintr}` also integrates with a number of popular IDEs and text editors, such as RStudio and Visual Studio Code, making it convenient for users to run `{lintr}` checks on their code as they work. +R is an interpreted, dynamically typed programming language [@base2023]. It is a popular choice for statistical analysis and visualization, and is used by a wide range of researchers and data scientists. The `{lintr}` package is an open-source R package that provides static code analysis to check for a variety of common problems related to readability, efficiency, consistency, style, etc. In particular, it enforces the [tidyverse style guide]((https://style.tidyverse.org/index.html)). It is designed to be easy to use and integrate into existing workflows, and can be run from the command line or used as part of an automated build or continuous integration process. `{lintr}` also integrates with a number of popular IDEs and text editors, such as RStudio and Visual Studio Code, making it convenient for users to run `{lintr}` checks on their code as they work. # Features -As of this writing, `{lintr}` offers 85 linters. +As of this writing, `{lintr}` offers `r length(all_linters())` linters. ```{r} library(lintr) From 1e406ecfb3f639fc3c89c1ebda7c3cc0a7276e02 Mon Sep 17 00:00:00 2001 From: Indrajeet Patil Date: Sat, 2 Dec 2023 20:54:01 +0100 Subject: [PATCH 14/41] we only need md document --- paper/paper.Rmd | 17 +- paper/paper.bib | 10 +- paper/paper.log | 999 ------------------------------------------------ paper/paper.md | 285 ++++++++------ paper/paper.pdf | Bin 144670 -> 0 bytes paper/paper.tex | 513 ------------------------- 6 files changed, 172 insertions(+), 1652 deletions(-) delete mode 100644 paper/paper.log delete mode 100644 paper/paper.pdf delete mode 100644 paper/paper.tex diff --git a/paper/paper.Rmd b/paper/paper.Rmd index 5eb7cd3b6..707a9bf2e 100644 --- a/paper/paper.Rmd +++ b/paper/paper.Rmd @@ -2,22 +2,16 @@ title: "Static Code Analysis for R" date: "`r Sys.Date()`" tags: ["R", "linter", "tidyverse"] - authors: - name: Jim Hester affiliation: 1 orcid: ~ - affiliations: - index: 1 name: Netflix - -output: - rticles::joss_article: - keep_tex: true +output: md_document bibliography: paper.bib csl: apa.csl -journal: JOSS link-citations: yes --- @@ -25,13 +19,14 @@ link-citations: yes knitr::opts_chunk$set( collapse = TRUE, out.width = "100%", - dpi = 300, comment = "#>" ) library(lintr) -withr::local_options(lintr.format_width = 60L) +withr::local_options(list( + lintr.format_width = 60L +)) ``` # Statement of Need @@ -146,6 +141,10 @@ In conclusion, `{lintr}` is a valuable tool for R users to help improve the qual `{lintr}` is licensed under the MIT License, with all source code openly developed and stored on GitHub (), along with a corresponding issue tracker for bug reporting and feature enhancements. +# Conflicts of interest + +The authors declare no conflict of interest. + # Acknowledgments # References diff --git a/paper/paper.bib b/paper/paper.bib index 905692556..dd58dcf26 100644 --- a/paper/paper.bib +++ b/paper/paper.bib @@ -19,8 +19,8 @@ @Manual{base2023 } @book{mcconnell2004code, - title={Code Complete}, - author={McConnell, Steve}, - year={2004}, - publisher={Pearson Education} -} + title={Code Complete}, + author={McConnell, Steve}, + year={2004}, + publisher={Pearson Education} + } diff --git a/paper/paper.log b/paper/paper.log deleted file mode 100644 index 6e6cf07bf..000000000 --- a/paper/paper.log +++ /dev/null @@ -1,999 +0,0 @@ -This is XeTeX, Version 3.141592653-2.6-0.999994 (TeX Live 2022) (preloaded format=xelatex 2023.1.2) 19 JAN 2023 08:06 -entering extended mode - restricted \write18 enabled. - %&-line parsing enabled. -**paper.tex -(./paper.tex -LaTeX2e <2022-11-01> patch level 1 -L3 programming layer <2022-12-17> (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/base/article.cls -Document Class: article 2022/07/02 v1.4n Standard LaTeX document class -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/base/size10.clo -File: size10.clo 2022/07/02 v1.4n Standard LaTeX file (size option) -) -\c@part=\count181 -\c@section=\count182 -\c@subsection=\count183 -\c@subsubsection=\count184 -\c@paragraph=\count185 -\c@subparagraph=\count186 -\c@figure=\count187 -\c@table=\count188 -\abovecaptionskip=\skip48 -\belowcaptionskip=\skip49 -\bibindent=\dimen140 -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/marginnote/marginnote.sty -Package: marginnote 2018/08/09 v1.4b non floating margin notes for LaTeX -\c@mn@abspage=\count189 -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/graphics/graphicx.sty -Package: graphicx 2021/09/16 v1.2d Enhanced LaTeX Graphics (DPC,SPQR) -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/graphics/keyval.sty -Package: keyval 2022/05/29 v1.15 key=value parser (DPC) -\KV@toks@=\toks16 -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/graphics/graphics.sty -Package: graphics 2022/03/10 v1.4e Standard LaTeX Graphics (DPC,SPQR) -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/graphics/trig.sty -Package: trig 2021/08/11 v1.11 sin cos tan (DPC) -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/graphics-cfg/graphics.cfg -File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration -) -Package graphics Info: Driver file: xetex.def on input line 107. -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/graphics-def/xetex.def -File: xetex.def 2022/09/22 v5.0n Graphics/color driver for xetex -)) -\Gin@req@height=\dimen141 -\Gin@req@width=\dimen142 -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/xcolor/xcolor.sty -Package: xcolor 2022/06/12 v2.14 LaTeX color extensions (UK) -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/graphics-cfg/color.cfg -File: color.cfg 2016/01/02 v1.6 sample color configuration -) -Package xcolor Info: Driver file: xetex.def on input line 227. -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/graphics/mathcolor.ltx) -Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1353. -Package xcolor Info: Model `RGB' extended on input line 1369. -Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1371. -Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1372. -Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1373. -Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1374. -Package xcolor Info: Model `Gray' substituted by `gray' on input line 1375. -Package xcolor Info: Model `wave' substituted by `hsb' on input line 1376. -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/preprint/authblk.sty -Package: authblk 2001/02/27 1.3 (PWD) -\affilsep=\skip50 -\@affilsep=\skip51 -\c@Maxaffil=\count190 -\c@authors=\count191 -\c@affil=\count192 -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/etoolbox/etoolbox.sty -Package: etoolbox 2020/10/05 v2.5k e-TeX tools for LaTeX (JAW) -\etb@tempcnta=\count193 -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/titlesec/titlesec.sty -Package: titlesec 2021/07/05 v2.14 Sectioning titles -\ttl@box=\box51 -\beforetitleunit=\skip52 -\aftertitleunit=\skip53 -\ttl@plus=\dimen143 -\ttl@minus=\dimen144 -\ttl@toksa=\toks17 -\titlewidth=\dimen145 -\titlewidthlast=\dimen146 -\titlewidthfirst=\dimen147 -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/tools/calc.sty -Package: calc 2017/05/25 v4.3 Infix arithmetic (KKT,FJ) -\calc@Acount=\count194 -\calc@Bcount=\count195 -\calc@Adimen=\dimen148 -\calc@Bdimen=\dimen149 -\calc@Askip=\skip54 -\calc@Bskip=\skip55 -LaTeX Info: Redefining \setlength on input line 80. -LaTeX Info: Redefining \addtolength on input line 81. -\calc@Ccount=\count196 -\calc@Cskip=\skip56 -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.tex -\pgfutil@everybye=\toks18 -\pgfutil@tempdima=\dimen150 -\pgfutil@tempdimb=\dimen151 -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/utilities/pgfutil-common-lists.tex)) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def -\pgfutil@abb=\box52 -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/pgf.revision.tex) -Package: pgfrcs 2021/05/15 v3.1.9a (3.1.9a) -)) -Package: pgf 2021/05/15 v3.1.9a (3.1.9a) -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex -Package: pgfsys 2021/05/15 v3.1.9a (3.1.9a) -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex -\pgfkeys@pathtoks=\toks19 -\pgfkeys@temptoks=\toks20 -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/utilities/pgfkeysfiltered.code.tex -\pgfkeys@tmptoks=\toks21 -)) -\pgf@x=\dimen152 -\pgf@y=\dimen153 -\pgf@xa=\dimen154 -\pgf@ya=\dimen155 -\pgf@xb=\dimen156 -\pgf@yb=\dimen157 -\pgf@xc=\dimen158 -\pgf@yc=\dimen159 -\pgf@xd=\dimen160 -\pgf@yd=\dimen161 -\w@pgf@writea=\write3 -\r@pgf@reada=\read2 -\c@pgf@counta=\count197 -\c@pgf@countb=\count198 -\c@pgf@countc=\count199 -\c@pgf@countd=\count266 -\t@pgf@toka=\toks22 -\t@pgf@tokb=\toks23 -\t@pgf@tokc=\toks24 -\pgf@sys@id@count=\count267 -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/systemlayer/pgf.cfg -File: pgf.cfg 2021/05/15 v3.1.9a (3.1.9a) -) -Driver file for pgf: pgfsys-xetex.def -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-xetex.def -File: pgfsys-xetex.def 2021/05/15 v3.1.9a (3.1.9a) -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-dvipdfmx.def -File: pgfsys-dvipdfmx.def 2021/05/15 v3.1.9a (3.1.9a) -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-pdf.def -File: pgfsys-common-pdf.def 2021/05/15 v3.1.9a (3.1.9a) -) -\pgfsys@objnum=\count268 -))) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex -File: pgfsyssoftpath.code.tex 2021/05/15 v3.1.9a (3.1.9a) -\pgfsyssoftpath@smallbuffer@items=\count269 -\pgfsyssoftpath@bigbuffer@items=\count270 -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code.tex -File: pgfsysprotocol.code.tex 2021/05/15 v3.1.9a (3.1.9a) -)) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex -Package: pgfcore 2021/05/15 v3.1.9a (3.1.9a) -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/math/pgfmathcalc.code.tex (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/math/pgfmathutil.code.tex) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/math/pgfmathparser.code.tex -\pgfmath@dimen=\dimen162 -\pgfmath@count=\count271 -\pgfmath@box=\box53 -\pgfmath@toks=\toks25 -\pgfmath@stack@operand=\toks26 -\pgfmath@stack@operation=\toks27 -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.tex (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.basic.code.tex) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.trigonometric.code.tex) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.random.code.tex) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.comparison.code.tex) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.base.code.tex) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.round.code.tex) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.misc.code.tex) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.integerarithmetics.code.tex))) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex -\c@pgfmathroundto@lastzeros=\count272 -)) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/math/pgfint.code.tex) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepoints.code.tex -File: pgfcorepoints.code.tex 2021/05/15 v3.1.9a (3.1.9a) -\pgf@picminx=\dimen163 -\pgf@picmaxx=\dimen164 -\pgf@picminy=\dimen165 -\pgf@picmaxy=\dimen166 -\pgf@pathminx=\dimen167 -\pgf@pathmaxx=\dimen168 -\pgf@pathminy=\dimen169 -\pgf@pathmaxy=\dimen170 -\pgf@xx=\dimen171 -\pgf@xy=\dimen172 -\pgf@yx=\dimen173 -\pgf@yy=\dimen174 -\pgf@zx=\dimen175 -\pgf@zy=\dimen176 -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathconstruct.code.tex -File: pgfcorepathconstruct.code.tex 2021/05/15 v3.1.9a (3.1.9a) -\pgf@path@lastx=\dimen177 -\pgf@path@lasty=\dimen178 -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathusage.code.tex -File: pgfcorepathusage.code.tex 2021/05/15 v3.1.9a (3.1.9a) -\pgf@shorten@end@additional=\dimen179 -\pgf@shorten@start@additional=\dimen180 -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/basiclayer/pgfcorescopes.code.tex -File: pgfcorescopes.code.tex 2021/05/15 v3.1.9a (3.1.9a) -\pgfpic=\box54 -\pgf@hbox=\box55 -\pgf@layerbox@main=\box56 -\pgf@picture@serial@count=\count273 -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/basiclayer/pgfcoregraphicstate.code.tex -File: pgfcoregraphicstate.code.tex 2021/05/15 v3.1.9a (3.1.9a) -\pgflinewidth=\dimen181 -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransformations.code.tex -File: pgfcoretransformations.code.tex 2021/05/15 v3.1.9a (3.1.9a) -\pgf@pt@x=\dimen182 -\pgf@pt@y=\dimen183 -\pgf@pt@temp=\dimen184 -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/basiclayer/pgfcorequick.code.tex -File: pgfcorequick.code.tex 2021/05/15 v3.1.9a (3.1.9a) -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreobjects.code.tex -File: pgfcoreobjects.code.tex 2021/05/15 v3.1.9a (3.1.9a) -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathprocessing.code.tex -File: pgfcorepathprocessing.code.tex 2021/05/15 v3.1.9a (3.1.9a) -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/basiclayer/pgfcorearrows.code.tex -File: pgfcorearrows.code.tex 2021/05/15 v3.1.9a (3.1.9a) -\pgfarrowsep=\dimen185 -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex -File: pgfcoreshade.code.tex 2021/05/15 v3.1.9a (3.1.9a) -\pgf@max=\dimen186 -\pgf@sys@shading@range@num=\count274 -\pgf@shadingcount=\count275 -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreimage.code.tex -File: pgfcoreimage.code.tex 2021/05/15 v3.1.9a (3.1.9a) -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreexternal.code.tex -File: pgfcoreexternal.code.tex 2021/05/15 v3.1.9a (3.1.9a) -\pgfexternal@startupbox=\box57 -)) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/basiclayer/pgfcorelayers.code.tex -File: pgfcorelayers.code.tex 2021/05/15 v3.1.9a (3.1.9a) -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransparency.code.tex -File: pgfcoretransparency.code.tex 2021/05/15 v3.1.9a (3.1.9a) -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepatterns.code.tex -File: pgfcorepatterns.code.tex 2021/05/15 v3.1.9a (3.1.9a) -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/basiclayer/pgfcorerdf.code.tex -File: pgfcorerdf.code.tex 2021/05/15 v3.1.9a (3.1.9a) -))) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/modules/pgfmoduleshapes.code.tex -File: pgfmoduleshapes.code.tex 2021/05/15 v3.1.9a (3.1.9a) -\pgfnodeparttextbox=\box58 -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.code.tex -File: pgfmoduleplot.code.tex 2021/05/15 v3.1.9a (3.1.9a) -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65.sty -Package: pgfcomp-version-0-65 2021/05/15 v3.1.9a (3.1.9a) -\pgf@nodesepstart=\dimen187 -\pgf@nodesepend=\dimen188 -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18.sty -Package: pgfcomp-version-1-18 2021/05/15 v3.1.9a (3.1.9a) -)) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/pgf/utilities/pgffor.sty (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex)) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/pgf/math/pgfmath.sty (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex)) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex -Package: pgffor 2021/05/15 v3.1.9a (3.1.9a) -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex) -\pgffor@iter=\dimen189 -\pgffor@skip=\dimen190 -\pgffor@stack=\toks28 -\pgffor@toks=\toks29 -)) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex -Package: tikz 2021/05/15 v3.1.9a (3.1.9a) -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothandlers.code.tex -File: pgflibraryplothandlers.code.tex 2021/05/15 v3.1.9a (3.1.9a) -\pgf@plot@mark@count=\count276 -\pgfplotmarksize=\dimen191 -) -\tikz@lastx=\dimen192 -\tikz@lasty=\dimen193 -\tikz@lastxsaved=\dimen194 -\tikz@lastysaved=\dimen195 -\tikz@lastmovetox=\dimen196 -\tikz@lastmovetoy=\dimen197 -\tikzleveldistance=\dimen198 -\tikzsiblingdistance=\dimen199 -\tikz@figbox=\box59 -\tikz@figbox@bg=\box60 -\tikz@tempbox=\box61 -\tikz@tempbox@bg=\box62 -\tikztreelevel=\count277 -\tikznumberofchildren=\count278 -\tikznumberofcurrentchild=\count279 -\tikz@fig@count=\count280 -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/modules/pgfmodulematrix.code.tex -File: pgfmodulematrix.code.tex 2021/05/15 v3.1.9a (3.1.9a) -\pgfmatrixcurrentrow=\count281 -\pgfmatrixcurrentcolumn=\count282 -\pgf@matrix@numberofcolumns=\count283 -) -\tikz@expandcount=\count284 -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarytopaths.code.tex -File: tikzlibrarytopaths.code.tex 2021/05/15 v3.1.9a (3.1.9a) -))) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/hyperref/hyperref.sty -Package: hyperref 2022-11-13 v7.00u Hypertext links for LaTeX -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty -Package: ltxcmds 2020-05-10 v1.25 LaTeX kernel commands for general use (HO) -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/iftex/iftex.sty -Package: iftex 2022/02/03 v1.0f TeX engine tests -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty -Package: pdftexcmds 2020-06-27 v0.33 Utility functions of pdfTeX for LuaTeX (HO) -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/infwarerr/infwarerr.sty -Package: infwarerr 2019/12/03 v1.5 Providing info/warning/error messages (HO) -) -Package pdftexcmds Info: \pdf@primitive is available. -Package pdftexcmds Info: \pdf@ifprimitive is available. -Package pdftexcmds Info: \pdfdraftmode not found. -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/kvsetkeys/kvsetkeys.sty -Package: kvsetkeys 2022-10-05 v1.19 Key value parser (HO) -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty -Package: kvdefinekeys 2019-12-19 v1.6 Define keys (HO) -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/pdfescape/pdfescape.sty -Package: pdfescape 2019/12/09 v1.15 Implements pdfTeX's escape features (HO) -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/hycolor/hycolor.sty -Package: hycolor 2020-01-27 v1.10 Color options for hyperref/bookmark (HO) -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty -Package: letltxmacro 2019/12/03 v1.6 Let assignment for LaTeX macros (HO) -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/auxhook/auxhook.sty -Package: auxhook 2019-12-17 v1.6 Hooks for auxiliary files (HO) -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/hyperref/nameref.sty -Package: nameref 2022-05-17 v2.50 Cross-referencing by name of section -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/refcount/refcount.sty -Package: refcount 2019/12/15 v3.6 Data extraction from label references (HO) -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty -Package: gettitlestring 2019/12/15 v1.6 Cleanup title references (HO) -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/kvoptions/kvoptions.sty -Package: kvoptions 2022-06-15 v3.15 Key value format for package options (HO) -)) -\c@section@level=\count285 -) -\@linkdim=\dimen256 -\Hy@linkcounter=\count286 -\Hy@pagecounter=\count287 -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/hyperref/pd1enc.def -File: pd1enc.def 2022-11-13 v7.00u Hyperref: PDFDocEncoding definition (HO) -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/intcalc/intcalc.sty -Package: intcalc 2019/12/15 v1.3 Expandable calculations with integers (HO) -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/etexcmds/etexcmds.sty -Package: etexcmds 2019/12/15 v1.7 Avoid name clashes with e-TeX commands (HO) -) -\Hy@SavedSpaceFactor=\count288 -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/hyperref/puenc.def -File: puenc.def 2022-11-13 v7.00u Hyperref: PDF Unicode definition (HO) -) -Package hyperref Info: Hyper figures OFF on input line 4162. -Package hyperref Info: Link nesting OFF on input line 4167. -Package hyperref Info: Hyper index ON on input line 4170. -Package hyperref Info: Plain pages OFF on input line 4177. -Package hyperref Info: Backreferencing OFF on input line 4182. -Package hyperref Info: Implicit mode ON; LaTeX internals redefined. -Package hyperref Info: Bookmarks ON on input line 4410. -\c@Hy@tempcnt=\count289 -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/url/url.sty -\Urlmuskip=\muskip16 -Package: url 2013/09/16 ver 3.4 Verb mode for urls, etc. -) -LaTeX Info: Redefining \url on input line 4748. -\XeTeXLinkMargin=\dimen257 -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/bitset/bitset.sty -Package: bitset 2019/12/09 v1.3 Handle bit-vector datatype (HO) -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty -Package: bigintcalc 2019/12/15 v1.5 Expandable calculations on big integers (HO) -)) -\Fld@menulength=\count290 -\Field@Width=\dimen258 -\Fld@charsize=\dimen259 -Package hyperref Info: Hyper figures OFF on input line 6027. -Package hyperref Info: Link nesting OFF on input line 6032. -Package hyperref Info: Hyper index ON on input line 6035. -Package hyperref Info: backreferencing OFF on input line 6042. -Package hyperref Info: Link coloring OFF on input line 6047. -Package hyperref Info: Link coloring with OCG OFF on input line 6052. -Package hyperref Info: PDF/A mode OFF on input line 6057. -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/base/atbegshi-ltx.sty -Package: atbegshi-ltx 2021/01/10 v1.0c Emulation of the original atbegshi -package with kernel methods -) -\Hy@abspage=\count291 -\c@Item=\count292 -\c@Hfootnote=\count293 -) -Package hyperref Info: Driver (autodetected): hxetex. -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/hyperref/hxetex.def -File: hxetex.def 2022-11-13 v7.00u Hyperref driver for XeTeX -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/stringenc/stringenc.sty -Package: stringenc 2019/11/29 v1.12 Convert strings between diff. encodings (HO) -) -\pdfm@box=\box63 -\c@Hy@AnnotLevel=\count294 -\HyField@AnnotCount=\count295 -\Fld@listcount=\count296 -\c@bookmark@seq@number=\count297 -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty -Package: rerunfilecheck 2022-07-10 v1.10 Rerun checks for auxiliary files (HO) -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/base/atveryend-ltx.sty -Package: atveryend-ltx 2020/08/19 v1.0a Emulation of the original atveryend package -with kernel methods -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty -Package: uniquecounter 2019/12/15 v1.4 Provide unlimited unique counter (HO) -) -Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 285. -) -\Hy@SectionHShift=\skip57 -) -Package hyperref Info: Option `colorlinks' set `true' on input line 12. -Package hyperref Info: Option `breaklinks' set `true' on input line 12. -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/caption/caption.sty -Package: caption 2022/03/01 v3.6b Customizing captions (AR) -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/caption/caption3.sty -Package: caption3 2022/03/17 v2.3b caption3 kernel (AR) -\caption@tempdima=\dimen260 -\captionmargin=\dimen261 -\caption@leftmargin=\dimen262 -\caption@rightmargin=\dimen263 -\caption@width=\dimen264 -\caption@indent=\dimen265 -\caption@parindent=\dimen266 -\caption@hangindent=\dimen267 -Package caption Info: Standard document class detected. -) -\c@caption@flags=\count298 -\c@continuedfloat=\count299 -Package caption Info: hyperref package is loaded. -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/tcolorbox/tcolorbox.sty -Package: tcolorbox 2022/06/24 version 5.1.1 text color boxes -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/tools/verbatim.sty -Package: verbatim 2022-07-02 v1.5u LaTeX2e package for verbatim enhancements -\every@verbatim=\toks30 -\verbatim@line=\toks31 -\verbatim@in@stream=\read3 -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/environ/environ.sty -Package: environ 2014/05/04 v0.3 A new way to define environments -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/trimspaces/trimspaces.sty -Package: trimspaces 2009/09/17 v1.1 Trim spaces around a token list -) -\@envbody=\toks32 -) -\tcb@titlebox=\box64 -\tcb@upperbox=\box65 -\tcb@lowerbox=\box66 -\tcb@phantombox=\box67 -\c@tcbbreakpart=\count300 -\c@tcblayer=\count301 -\c@tcolorbox@number=\count302 -\tcb@temp=\box68 -\tcb@temp=\box69 -\tcb@temp=\box70 -\tcb@temp=\box71 -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/amsfonts/amssymb.sty -Package: amssymb 2013/01/14 v3.01 AMS font symbols -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/amsfonts/amsfonts.sty -Package: amsfonts 2013/01/14 v3.01 Basic AMSFonts support -\@emptytoks=\toks33 -\symAMSa=\mathgroup4 -\symAMSb=\mathgroup5 -LaTeX Font Info: Redeclaring math symbol \hbar on input line 98. -LaTeX Font Info: Overwriting math alphabet `\mathfrak' in version `bold' -(Font) U/euf/m/n --> U/euf/b/n on input line 106. -)) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/amsmath/amsmath.sty -Package: amsmath 2022/04/08 v2.17n AMS math features -\@mathmargin=\skip58 -For additional information on amsmath, use the `?' option. -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/amsmath/amstext.sty -Package: amstext 2021/08/26 v2.01 AMS text -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/amsmath/amsgen.sty -File: amsgen.sty 1999/11/30 v2.0 generic functions -\@emptytoks=\toks34 -\ex@=\dimen268 -)) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/amsmath/amsbsy.sty -Package: amsbsy 1999/11/29 v1.2d Bold Symbols -\pmbraise@=\dimen269 -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/amsmath/amsopn.sty -Package: amsopn 2022/04/08 v2.04 operator names -) -\inf@bad=\count303 -LaTeX Info: Redefining \frac on input line 234. -\uproot@=\count304 -\leftroot@=\count305 -LaTeX Info: Redefining \overline on input line 399. -LaTeX Info: Redefining \colon on input line 410. -\classnum@=\count306 -\DOTSCASE@=\count307 -LaTeX Info: Redefining \ldots on input line 496. -LaTeX Info: Redefining \dots on input line 499. -LaTeX Info: Redefining \cdots on input line 620. -\Mathstrutbox@=\box72 -\strutbox@=\box73 -LaTeX Info: Redefining \big on input line 722. -LaTeX Info: Redefining \Big on input line 723. -LaTeX Info: Redefining \bigg on input line 724. -LaTeX Info: Redefining \Bigg on input line 725. -\big@size=\dimen270 -LaTeX Font Info: Redeclaring font encoding OML on input line 743. -LaTeX Font Info: Redeclaring font encoding OMS on input line 744. -\macc@depth=\count308 -LaTeX Info: Redefining \bmod on input line 905. -LaTeX Info: Redefining \pmod on input line 910. -LaTeX Info: Redefining \smash on input line 940. -LaTeX Info: Redefining \relbar on input line 970. -LaTeX Info: Redefining \Relbar on input line 971. -\c@MaxMatrixCols=\count309 -\dotsspace@=\muskip17 -\c@parentequation=\count310 -\dspbrk@lvl=\count311 -\tag@help=\toks35 -\row@=\count312 -\column@=\count313 -\maxfields@=\count314 -\andhelp@=\toks36 -\eqnshift@=\dimen271 -\alignsep@=\dimen272 -\tagshift@=\dimen273 -\tagwidth@=\dimen274 -\totwidth@=\dimen275 -\lineht@=\dimen276 -\@envbody=\toks37 -\multlinegap=\skip59 -\multlinetaggap=\skip60 -\mathdisplay@stack=\toks38 -LaTeX Info: Redefining \[ on input line 2953. -LaTeX Info: Redefining \] on input line 2954. -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/iftex/ifxetex.sty -Package: ifxetex 2019/10/25 v0.7 ifxetex legacy package. Use iftex instead. -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/iftex/ifluatex.sty -Package: ifluatex 2019/10/25 v1.5 ifluatex legacy package. Use iftex instead. -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/seqsplit/seqsplit.sty -Package: seqsplit 2006/08/07 v0.1 Splitting long sequences (DNA, RNA, proteins, etc.) -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/base/fixltx2e.sty -Package: fixltx2e 2016/12/29 v2.1a fixes to LaTeX (obsolete) -Applying: [2015/01/01] Old fixltx2e package on input line 46. - -Package fixltx2e Warning: fixltx2e is not required with releases after 2015 -(fixltx2e) All fixes are now in the LaTeX kernel. -(fixltx2e) See the latexrelease package for details. - -Already applied: [0000/00/00] Old fixltx2e package on input line 53. -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/biblatex/biblatex.sty -Package: biblatex 2022/07/12 v3.18b programmable bibliographies (PK/MW) -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/logreq/logreq.sty -Package: logreq 2010/08/04 v1.0 xml request logger -\lrq@indent=\count315 -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/logreq/logreq.def -File: logreq.def 2010/08/04 v1.0 logreq spec v1.0 -)) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/base/ifthen.sty -Package: ifthen 2022/04/13 v1.1d Standard LaTeX ifthen package (DPC) -) -\c@tabx@nest=\count316 -\c@listtotal=\count317 -\c@listcount=\count318 -\c@liststart=\count319 -\c@liststop=\count320 -\c@citecount=\count321 -\c@citetotal=\count322 -\c@multicitecount=\count323 -\c@multicitetotal=\count324 -\c@instcount=\count325 -\c@maxnames=\count326 -\c@minnames=\count327 -\c@maxitems=\count328 -\c@minitems=\count329 -\c@citecounter=\count330 -\c@maxcitecounter=\count331 -\c@savedcitecounter=\count332 -\c@uniquelist=\count333 -\c@uniquename=\count334 -\c@refsection=\count335 -\c@refsegment=\count336 -\c@maxextratitle=\count337 -\c@maxextratitleyear=\count338 -\c@maxextraname=\count339 -\c@maxextradate=\count340 -\c@maxextraalpha=\count341 -\c@abbrvpenalty=\count342 -\c@highnamepenalty=\count343 -\c@lownamepenalty=\count344 -\c@maxparens=\count345 -\c@parenlevel=\count346 -\blx@tempcnta=\count347 -\blx@tempcntb=\count348 -\blx@tempcntc=\count349 -\c@blx@maxsection=\count350 -\blx@maxsegment@0=\count351 -\blx@notetype=\count352 -\blx@parenlevel@text=\count353 -\blx@parenlevel@foot=\count354 -\blx@sectionciteorder@0=\count355 -\blx@sectionciteorderinternal@0=\count356 -\blx@entrysetcounter=\count357 -\blx@biblioinstance=\count358 -\labelnumberwidth=\skip61 -\labelalphawidth=\skip62 -\biblabelsep=\skip63 -\bibitemsep=\skip64 -\bibnamesep=\skip65 -\bibinitsep=\skip66 -\bibparsep=\skip67 -\bibhang=\skip68 -\blx@bcfin=\read4 -\blx@bcfout=\write4 -\blx@langwohyphens=\language3 -\c@mincomprange=\count359 -\c@maxcomprange=\count360 -\c@mincompwidth=\count361 -Package biblatex Info: Trying to load biblatex default data model... -Package biblatex Info: ... file 'blx-dm.def' found. -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/biblatex/blx-dm.def -File: blx-dm.def 2022/07/12 v3.18b biblatex localization (PK/MW) -) -Package biblatex Info: Trying to load biblatex custom data model... -Package biblatex Info: ... file 'biblatex-dm.cfg' not found. -\c@afterword=\count362 -\c@savedafterword=\count363 -\c@annotator=\count364 -\c@savedannotator=\count365 -\c@author=\count366 -\c@savedauthor=\count367 -\c@bookauthor=\count368 -\c@savedbookauthor=\count369 -\c@commentator=\count370 -\c@savedcommentator=\count371 -\c@editor=\count372 -\c@savededitor=\count373 -\c@editora=\count374 -\c@savededitora=\count375 -\c@editorb=\count376 -\c@savededitorb=\count377 -\c@editorc=\count378 -\c@savededitorc=\count379 -\c@foreword=\count380 -\c@savedforeword=\count381 -\c@holder=\count382 -\c@savedholder=\count383 -\c@introduction=\count384 -\c@savedintroduction=\count385 -\c@namea=\count386 -\c@savednamea=\count387 -\c@nameb=\count388 -\c@savednameb=\count389 -\c@namec=\count390 -\c@savednamec=\count391 -\c@translator=\count392 -\c@savedtranslator=\count393 -\c@shortauthor=\count394 -\c@savedshortauthor=\count395 -\c@shorteditor=\count396 -\c@savedshorteditor=\count397 -\c@labelname=\count398 -\c@savedlabelname=\count399 -\c@institution=\count400 -\c@savedinstitution=\count401 -\c@lista=\count402 -\c@savedlista=\count403 -\c@listb=\count404 -\c@savedlistb=\count405 -\c@listc=\count406 -\c@savedlistc=\count407 -\c@listd=\count408 -\c@savedlistd=\count409 -\c@liste=\count410 -\c@savedliste=\count411 -\c@listf=\count412 -\c@savedlistf=\count413 -\c@location=\count414 -\c@savedlocation=\count415 -\c@organization=\count416 -\c@savedorganization=\count417 -\c@origlocation=\count418 -\c@savedoriglocation=\count419 -\c@origpublisher=\count420 -\c@savedorigpublisher=\count421 -\c@publisher=\count422 -\c@savedpublisher=\count423 -\c@language=\count424 -\c@savedlanguage=\count425 -\c@origlanguage=\count426 -\c@savedoriglanguage=\count427 -\c@pageref=\count428 -\c@savedpageref=\count429 -\shorthandwidth=\skip69 -\shortjournalwidth=\skip70 -\shortserieswidth=\skip71 -\shorttitlewidth=\skip72 -\shortauthorwidth=\skip73 -\shorteditorwidth=\skip74 -\locallabelnumberwidth=\skip75 -\locallabelalphawidth=\skip76 -\localshorthandwidth=\skip77 -\localshortjournalwidth=\skip78 -\localshortserieswidth=\skip79 -\localshorttitlewidth=\skip80 -\localshortauthorwidth=\skip81 -\localshorteditorwidth=\skip82 -Package biblatex Info: Trying to load enhanced support for Unicode engines... -Package biblatex Info: ... file 'blx-unicode.def' found. -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/biblatex/blx-unicode.def) -Package biblatex Info: Trying to load compatibility code... -Package biblatex Info: ... file 'blx-compat.def' found. -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/biblatex/blx-compat.def -File: blx-compat.def 2022/07/12 v3.18b biblatex compatibility (PK/MW) -) -Package biblatex Info: Trying to load generic definitions... -Package biblatex Info: ... file 'biblatex.def' found. -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/biblatex/biblatex.def -File: biblatex.def 2022/07/12 v3.18b biblatex compatibility (PK/MW) -\c@textcitecount=\count430 -\c@textcitetotal=\count431 -\c@textcitemaxnames=\count432 -\c@biburlbigbreakpenalty=\count433 -\c@biburlbreakpenalty=\count434 -\c@biburlnumpenalty=\count435 -\c@biburlucpenalty=\count436 -\c@biburllcpenalty=\count437 -\biburlbigskip=\muskip18 -\biburlnumskip=\muskip19 -\biburlucskip=\muskip20 -\biburllcskip=\muskip21 -\c@smartand=\count438 -) -Package biblatex Info: Trying to load bibliography style 'numeric'... -Package biblatex Info: ... file 'numeric.bbx' found. -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/biblatex/bbx/numeric.bbx -File: numeric.bbx 2022/07/12 v3.18b biblatex bibliography style (PK/MW) -Package biblatex Info: Trying to load bibliography style 'standard'... -Package biblatex Info: ... file 'standard.bbx' found. -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/biblatex/bbx/standard.bbx -File: standard.bbx 2022/07/12 v3.18b biblatex bibliography style (PK/MW) -\c@bbx:relatedcount=\count439 -\c@bbx:relatedtotal=\count440 -)) -Package biblatex Info: Trying to load citation style 'numeric'... -Package biblatex Info: ... file 'numeric.cbx' found. -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/biblatex/cbx/numeric.cbx -File: numeric.cbx 2022/07/12 v3.18b biblatex citation style (PK/MW) -Package biblatex Info: Redefining '\cite'. -Package biblatex Info: Redefining '\parencite'. -Package biblatex Info: Redefining '\footcite'. -Package biblatex Info: Redefining '\footcitetext'. -Package biblatex Info: Redefining '\smartcite'. -Package biblatex Info: Redefining '\supercite'. -Package biblatex Info: Redefining '\textcite'. -Package biblatex Info: Redefining '\textcites'. -Package biblatex Info: Redefining '\cites'. -Package biblatex Info: Redefining '\parencites'. -Package biblatex Info: Redefining '\smartcites'. -) -Package biblatex Info: Trying to load configuration file... -Package biblatex Info: ... file 'biblatex.cfg' found. -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/biblatex/biblatex.cfg -File: biblatex.cfg -) -Package biblatex Info: XeTeX detected. -(biblatex) Assuming input encoding 'utf8'. -Package biblatex Info: Document encoding is UTF8 .... -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/l3kernel/expl3.sty -Package: expl3 2022-12-17 L3 programming layer (loader) -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/l3backend/l3backend-xetex.def -File: l3backend-xetex.def 2022-10-26 L3 backend support: XeTeX -\g__graphics_track_int=\count441 -\l__pdf_internal_box=\box74 -\g__pdf_backend_object_int=\count442 -\g__pdf_backend_annotation_int=\count443 -\g__pdf_backend_link_int=\count444 -)) -Package biblatex Info: ... and expl3 -(biblatex) 2022-12-17 L3 programming layer (loader) -(biblatex) is new enough (at least 2020/04/06), -(biblatex) setting 'casechanger=expl3'. -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/biblatex/blx-case-expl3.sty (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/l3packages/xparse/xparse.sty -Package: xparse 2022-12-17 L3 Experimental document command parser -) -Package: blx-case-expl3 2022/07/12 v3.18b expl3 case changing code for biblatex -)) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/geometry/geometry.sty -Package: geometry 2020/01/02 v5.9 Page Geometry -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/iftex/ifvtex.sty -Package: ifvtex 2019/10/25 v1.7 ifvtex legacy package. Use iftex instead. -) -\Gm@cnth=\count445 -\Gm@cntv=\count446 -\c@Gm@tempcnt=\count447 -\Gm@bindingoffset=\dimen277 -\Gm@wd@mp=\dimen278 -\Gm@odd@mp=\dimen279 -\Gm@even@mp=\dimen280 -\Gm@layoutwidth=\dimen281 -\Gm@layoutheight=\dimen282 -\Gm@layouthoffset=\dimen283 -\Gm@layoutvoffset=\dimen284 -\Gm@dimlist=\toks39 -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty -Package: fancyhdr 2022/11/09 v4.1 Extensive control of page headers and footers -\f@nch@headwidth=\skip83 -\f@nch@O@elh=\skip84 -\f@nch@O@erh=\skip85 -\f@nch@O@olh=\skip86 -\f@nch@O@orh=\skip87 -\f@nch@O@elf=\skip88 -\f@nch@O@erf=\skip89 -\f@nch@O@olf=\skip90 -\f@nch@O@orf=\skip91 -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/xelatex/mathspec/mathspec.sty -Package: mathspec 2016/12/22 v0.2b LaTeX Package (Mathematics font selection for XeLaTeX) -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/fontspec/fontspec.sty -Package: fontspec 2022/01/15 v2.8a Font selection for XeLaTeX and LuaLaTeX -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/fontspec/fontspec-xetex.sty -Package: fontspec-xetex 2022/01/15 v2.8a Font selection for XeLaTeX and LuaLaTeX -\l__fontspec_script_int=\count448 -\l__fontspec_language_int=\count449 -\l__fontspec_strnum_int=\count450 -\l__fontspec_tmp_int=\count451 -\l__fontspec_tmpa_int=\count452 -\l__fontspec_tmpb_int=\count453 -\l__fontspec_tmpc_int=\count454 -\l__fontspec_em_int=\count455 -\l__fontspec_emdef_int=\count456 -\l__fontspec_strong_int=\count457 -\l__fontspec_strongdef_int=\count458 -\l__fontspec_tmpa_dim=\dimen285 -\l__fontspec_tmpb_dim=\dimen286 -\l__fontspec_tmpc_dim=\dimen287 -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/base/fontenc.sty -Package: fontenc 2021/04/29 v2.0v Standard LaTeX package -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/fontspec/fontspec.cfg))) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/xkeyval/xkeyval.sty -Package: xkeyval 2022/06/16 v2.9 package option processing (HA) -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/xkeyval/xkeyval.tex (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/generic/xkeyval/xkvutils.tex -\XKV@toks=\toks40 -\XKV@tempa@toks=\toks41 -) -\XKV@depth=\count459 -File: xkeyval.tex 2014/12/03 v2.7a key=value parser (HA) -)) -\c@eu@=\count460 -\c@eu@i=\count461 -\c@mkern=\count462 -) -Package hyperref Info: Option `unicode' set `true' on input line 150. -Package hyperref Info: Option `breaklinks' set `true' on input line 150. -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/grffile/grffile.sty -Package: grffile 2019/11/11 v2.1 Extended file name support for graphics (legacy) -Package grffile Info: This package is an empty stub for compatibility on input line 40. -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/fancyvrb/fancyvrb.sty -Package: fancyvrb 2022/06/06 4.5 verbatim text (tvz,hv) -\FV@CodeLineNo=\count463 -\FV@InFile=\read5 -\FV@TabBox=\box75 -\c@FancyVerbLine=\count464 -\FV@StepNumber=\count465 -\FV@OutFile=\write5 -) (/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/framed/framed.sty -Package: framed 2011/10/22 v 0.96: framed or shaded text with page breaks -\OuterFrameSep=\skip92 -\fb@frw=\dimen288 -\fb@frh=\dimen289 -\FrameRule=\dimen290 -\FrameSep=\dimen291 -) -\cslhangindent=\skip93 -\csllabelwidth=\skip94 -\cslentryspacingunit=\skip95 -\@quotelevel=\count466 -\@quotereset=\count467 -(./paper.aux) -\openout1 = `paper.aux'. - -LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 264. -LaTeX Font Info: ... okay on input line 264. -LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 264. -LaTeX Font Info: ... okay on input line 264. -LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 264. -LaTeX Font Info: ... okay on input line 264. -LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 264. -LaTeX Font Info: ... okay on input line 264. -LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 264. -LaTeX Font Info: Trying to load font information for TS1+cmr on input line 264. -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/base/ts1cmr.fd -File: ts1cmr.fd 2022/07/10 v2.5l Standard LaTeX font definitions -) -LaTeX Font Info: ... okay on input line 264. -LaTeX Font Info: Checking defaults for TU/lmr/m/n on input line 264. -LaTeX Font Info: ... okay on input line 264. -LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 264. -LaTeX Font Info: ... okay on input line 264. -LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 264. -LaTeX Font Info: ... okay on input line 264. -LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 264. -LaTeX Font Info: ... okay on input line 264. -LaTeX Font Info: Checking defaults for PU/pdf/m/n on input line 264. -LaTeX Font Info: ... okay on input line 264. -Package hyperref Info: Link coloring ON on input line 264. -(./paper.out) (./paper.out) -\@outlinefile=\write6 -\openout6 = `paper.out'. - -Package caption Info: Begin \AtBeginDocument code. -Package caption Info: End \AtBeginDocument code. -Package biblatex Info: Trying to load language 'english'... -Package biblatex Info: ... file 'english.lbx' found. -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/biblatex/lbx/english.lbx -File: english.lbx 2022/07/12 v3.18b biblatex localization (PK/MW) -) -Package biblatex Info: XeTeX detected. -(biblatex) Assuming input encoding 'utf8'. -Package biblatex Info: Automatic encoding selection. -(biblatex) Assuming data encoding 'utf8'. -\openout4 = `paper.bcf'. - -Package biblatex Info: Trying to load bibliographic data... -Package biblatex Info: ... file 'paper.bbl' not found. -No file paper.bbl. -Package biblatex Info: Reference section=0 on input line 264. -Package biblatex Info: Reference segment=0 on input line 264. -*geometry* driver: auto-detecting -*geometry* detected driver: xetex -*geometry* verbose mode - [ preamble ] result: -* driver: xetex -* paper: a4paper -* layout: -* layoutoffset:(h,v)=(0.0pt,0.0pt) -* modes: includemp -* h-part:(L,W,R)=(28.45274pt, 526.376pt, 42.67912pt) -* v-part:(T,H,B)=(99.58464pt, 660.10394pt, 85.35826pt) -* \paperwidth=597.50787pt -* \paperheight=845.04684pt -* \textwidth=387.33861pt -* \textheight=660.10394pt -* \oddsidemargin=95.22015pt -* \evensidemargin=95.22015pt -* \topmargin=-60.28131pt -* \headheight=62.59596pt -* \headsep=25.0pt -* \topskip=10.0pt -* \footskip=30.0pt -* \marginparwidth=128.0374pt -* \marginparsep=11.0pt -* \columnsep=10.0pt -* \skip\footins=9.0pt plus 4.0pt minus 2.0pt -* \hoffset=0.0pt -* \voffset=0.0pt -* \mag=1000 -* \@twocolumnfalse -* \@twosidefalse -* \@mparswitchfalse -* \@reversemargintrue -* (1in=72.27pt=25.4mm, 1cm=28.453pt) - -LaTeX Font Info: Trying to load font information for U+msa on input line 265. -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/amsfonts/umsa.fd -File: umsa.fd 2013/01/14 v3.01 AMS symbols A -) -LaTeX Font Info: Trying to load font information for U+msb on input line 265. -(/Users/indrajeetpatil/Library/TinyTeX/texmf-dist/tex/latex/amsfonts/umsb.fd -File: umsb.fd 2013/01/14 v3.01 AMS symbols B -) - -Package hyperref Warning: Suppressing link with empty target on input line 291. - - -Package hyperref Warning: Suppressing link with empty target on input line 291. - - -Package hyperref Warning: Suppressing link with empty target on input line 291. - - -Underfull \hbox (badness 1163) in paragraph at lines 323--326 -\TU/lmr/m/n/10 ters, we encourage readers to see [][]$[][][][][] [] [] [] [][][][][] [] [][][][][][] [] [][][] [] [][][] [] [][][][][][][][][] [] [][][][][] [] [][][][] [] - [] - -File: /Library/Frameworks/R.framework/Versions/4.2-arm64/Resources/library/rticles/rmarkdown/templates/joss/resources/JOSS-logo.png Graphic file (type bmp) - - -Package fancyhdr Warning: \headheight is too small (62.59596pt): -(fancyhdr) Make it at least 63.55022pt, for example: -(fancyhdr) \setlength{\headheight}{63.55022pt}. -(fancyhdr) You might also make \topmargin smaller to compensate: -(fancyhdr) \addtolength{\topmargin}{-0.95425pt}. - -LaTeX Font Info: Font shape `TU/lmss/m/it' in size <8> not available -(Font) Font shape `TU/lmss/m/sl' tried instead on input line 362. -[1 - -] -LaTeX Font Info: Font shape `TU/lmtt/bx/n' in size <14.4> not available -(Font) Font shape `TU/lmtt/b/n' tried instead on input line 440. -File: /Library/Frameworks/R.framework/Versions/4.2-arm64/Resources/library/rticles/rmarkdown/templates/joss/resources/JOSS-logo.png Graphic file (type bmp) - - -Package fancyhdr Warning: \headheight is too small (62.59596pt): -(fancyhdr) Make it at least 63.55022pt, for example: -(fancyhdr) \setlength{\headheight}{63.55022pt}. -(fancyhdr) You might also make \topmargin smaller to compensate: -(fancyhdr) \addtolength{\topmargin}{-0.95425pt}. - -[2] -File: /Library/Frameworks/R.framework/Versions/4.2-arm64/Resources/library/rticles/rmarkdown/templates/joss/resources/JOSS-logo.png Graphic file (type bmp) - - -Package fancyhdr Warning: \headheight is too small (62.59596pt): -(fancyhdr) Make it at least 63.55022pt, for example: -(fancyhdr) \setlength{\headheight}{63.55022pt}. -(fancyhdr) You might also make \topmargin smaller to compensate: -(fancyhdr) \addtolength{\topmargin}{-0.95425pt}. - -[3] (./paper.aux) -Package rerunfilecheck Info: File `paper.out' has not changed. -(rerunfilecheck) Checksum: A08114F4345DD143667A1F23B4C87D3C;890. -Package logreq Info: Writing requests to 'paper.run.xml'. -\openout1 = `paper.run.xml'. - - ) -Here is how much of TeX's memory you used: - 34908 strings out of 478777 - 721537 string characters out of 5849397 - 1866979 words of memory out of 5000000 - 54411 multiletter control sequences out of 15000+600000 - 519159 words of font info for 80 fonts, out of 8000000 for 9000 - 14 hyphenation exceptions out of 8191 - 84i,12n,81p,678b,848s stack positions out of 10000i,1000n,20000p,200000b,200000s - -Output written on paper.pdf (3 pages). diff --git a/paper/paper.md b/paper/paper.md index 4284b27b5..cd55706ca 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -1,144 +1,177 @@ ---- -title: "Static Code Analysis for R" -date: "2023-01-19" -tags: ["R", "linter", "tidyverse"] - -authors: - - name: Jim Hester - affiliation: 1 - orcid: ~ - -affiliations: - - index: 1 - name: Netflix - -output: - rticles::joss_article: - keep_tex: true -bibliography: paper.bib -csl: apa.csl -journal: JOSS -link-citations: yes ---- - - - # Statement of Need -The R programming language [@base2023] is a popular choice for statistical analysis and visualization, and is used by a wide range of researchers and data scientists. The `{lintr}` package is an open-source R package that provides static code analysis to check for a variety of common problems related to readability, efficiency, consistency, style, etc. It is designed to be easy to use and integrate into existing workflows, and can be run from the command line or used as part of an automated build or continuous integration process. `{lintr}` also integrates with a number of popular IDEs and text editors, such as RStudio and Visual Studio Code, making it convenient for users to run `{lintr}` checks on their code as they work. +R is an interpreted, dynamically typed programming language ([R Core +Team, 2023](#ref-base2023)). It is a popular choice for statistical +analysis and visualization, and is used by a wide range of researchers +and data scientists. The `{lintr}` package is an open-source R package +that provides static code analysis to check for a variety of common +problems related to readability, efficiency, consistency, style, etc. In +particular, it enforces the [tidyverse style +guide]((https://style.tidyverse.org/index.html)). It is designed to be +easy to use and integrate into existing workflows, and can be run from +the command line or used as part of an automated build or continuous +integration process. `{lintr}` also integrates with a number of popular +IDEs and text editors, such as RStudio and Visual Studio Code, making it +convenient for users to run `{lintr}` checks on their code as they work. # Features -There are over 85 linters offered by `{lintr}`! - - -```r -library(lintr) - -length(all_linters()) -#> [1] 87 -``` - -Naturally, we can't discuss all of them here. To see details about all available linters, we encourage readers to see . - -We will showcase one linter for each kind of common problem found in R code. - -- **Best practices** - -`{lintr}` offers linters that can detect problematic antipatterns and suggest alternative patterns that follow best practices. - -For example, usage of vectorized `&` and `|` logical operators in conditional statements is error-prone, and scalar `&&` and `||`, respectively, are to be preferred. The `vector_logic_linter()` linter detects such problematic usages. - - -```r -lint( - text = "if (x & y) 1", - linters = vector_logic_linter() -) -#> :1:7: warning: [vector_logic_linter] Conditional expressions require scalar logical operators (&& and ||) -#> if (x & y) 1 -#> ^ -``` - - - -- **Efficiency** - -Sometimes the users might not be aware of a more efficient way offered by R for carrying out a computation. `{lintr}` offers linters to provide suggestions to improve code efficiency. - - -```r -lint( - text = "any(is.na(x), na.rm = TRUE)", - linters = any_is_na_linter() -) -#> :1:1: warning: [any_is_na_linter] anyNA(x) is better than any(is.na(x)). -#> any(is.na(x), na.rm = TRUE) -#> ^~~~~~~~~~~~~~~~~~~~~~~~~~~ -``` - - - -- **Readability** - -Coders spend significantly more time reading compared to writing code [@mcconnell2004code]. Thus, writing readable code makes the code more maintainable and reduces the possibility of introducing bugs stemming from a poor understanding of the code. - -`{lintr}` provides a number of linters that suggest more readable alternatives. For example, `function_left_parentheses_linter()`. - - -```r -lint( - text = "stats::sd (c (x, y, z))", - linters = function_left_parentheses_linter() -) -#> :1:10: style: [function_left_parentheses_linter] Remove spaces before the left parenthesis in a function call. -#> stats::sd (c (x, y, z)) -#> ^ -#> :1:13: style: [function_left_parentheses_linter] Remove spaces before the left parenthesis in a function call. -#> stats::sd (c (x, y, z)) -#> ^ -``` - - - -- **Tidyverse style** - -`{lintr}` also provides linters to enforce the style used throughout the `{tidyverse}` [@Wickham2019] ecosystem of R packages. This style of coding has been outlined in the tidyverse style guide (https://style.tidyverse.org/index.html). - - -```r -lint( - text = "1:3 %>% mean %>% as.character", - linters = pipe_call_linter() -) -#> :1:9: warning: [pipe_call_linter] Use explicit calls in magrittr pipes, i.e., `a %>% foo` should be `a %>% foo()`. -#> 1:3 %>% mean %>% as.character -#> ^~~~ -#> :1:18: warning: [pipe_call_linter] Use explicit calls in magrittr pipes, i.e., `a %>% foo` should be `a %>% foo()`. -#> 1:3 %>% mean %>% as.character -#> ^~~~~~~~~~~~ -``` - - +As of this writing, `{lintr}` offers 115 linters. + + library(lintr) + + length(all_linters()) + #> [1] 115 + +Naturally, we can’t discuss all of them here. To see details about all +available linters, we encourage readers to see +. + +We will showcase one linter for each kind of common problem found in R +code. + +- **Best practices** + +`{lintr}` offers linters that can detect problematic antipatterns and +suggest alternative patterns that follow best practices. + +For example, usage of vectorized `&` and `|` logical operators in +conditional statements is error-prone, and scalar `&&` and `||`, +respectively, are to be preferred. The `vector_logic_linter()` linter +detects such problematic usages. + + lint( + text = "if (x & y) 1", + linters = vector_logic_linter() + ) + #> :1:7: warning: [vector_logic_linter] Conditional + #> expressions require scalar logical operators (&& and + #> ||) + #> if (x & y) 1 + #> ^ + +- **Efficiency** + +Sometimes the users might not be aware of a more efficient way offered +by R for carrying out a computation. `{lintr}` offers linters to provide +suggestions to improve code efficiency. + + lint( + text = "any(is.na(x), na.rm = TRUE)", + linters = any_is_na_linter() + ) + #> :1:1: warning: [any_is_na_linter] anyNA(x) is better + #> than any(is.na(x)). + #> any(is.na(x), na.rm = TRUE) + #> ^~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- **Readability** + +Coders spend significantly more time reading compared to writing code +([McConnell, 2004](#ref-mcconnell2004code)). Thus, writing readable code +makes the code more maintainable and reduces the possibility of +introducing bugs stemming from a poor understanding of the code. + +`{lintr}` provides a number of linters that suggest more readable +alternatives. For example, `function_left_parentheses_linter()`. + + lint( + text = "stats::sd (c (x, y, z))", + linters = function_left_parentheses_linter() + ) + #> :1:10: style: [function_left_parentheses_linter] + #> Remove spaces before the left parenthesis in a function + #> call. + #> stats::sd (c (x, y, z)) + #> ^ + #> :1:13: style: [function_left_parentheses_linter] + #> Remove spaces before the left parenthesis in a function + #> call. + #> stats::sd (c (x, y, z)) + #> ^ + +- **Tidyverse style** + +`{lintr}` also provides linters to enforce the style used throughout the +`{tidyverse}` ([Wickham et al., 2019](#ref-Wickham2019)) ecosystem of R +packages. This style of coding has been outlined in the tidyverse style +guide (). + + lint( + text = "1:3 %>% mean %>% as.character", + linters = pipe_call_linter() + ) + #> :1:9: warning: [pipe_call_linter] Use explicit calls + #> in magrittr pipes, i.e., `a %>% foo` should be `a %>% + #> foo()`. + #> 1:3 %>% mean %>% as.character + #> ^~~~ + #> :1:18: warning: [pipe_call_linter] Use explicit calls + #> in magrittr pipes, i.e., `a %>% foo` should be `a %>% + #> foo()`. + #> 1:3 %>% mean %>% as.character + #> ^~~~~~~~~~~~ # Benefits of using `{lintr}` -There are several benefits to using `{lintr}` to analyze and improve R code. One of the most obvious is that it can help users identify and fix problems in their code, which can save time and effort during the development process. By catching issues early on, `{lintr}` can help prevent bugs and other issues from creeping into code, which can save time and effort when it comes to debugging and testing. - -Another benefit of `{lintr}` is that it can help users write more readable and maintainable code. By enforcing a consistent style and highlighting potential issues, `{lintr}` can help users write code that is easier to understand and work with. This is especially important for larger projects or teams, where multiple contributors may be working on the same codebase and it is important to ensure that code is easy to follow and understand. - -`{lintr}` can be a useful tool for teaching and learning R. By providing feedback on code style and potential issues, it can help users learn good coding practices and improve their skills over time. This can be especially useful for beginners, who may not yet be familiar with all of the best practices for writing R code. - -Finally, `{lintr}` has had a large and active user community since its birth in 2014 which has contributed to its rapid development, maintenance, and adoption. At the time of writing, `{lintr}` is in a mature and stable state and therefore provides a reliable API that is unlikely to feature any breaking changes. +There are several benefits to using `{lintr}` to analyze and improve R +code. One of the most obvious is that it can help users identify and fix +problems in their code, which can save time and effort during the +development process. By catching issues early on, `{lintr}` can help +prevent bugs and other issues from creeping into code, which can save +time and effort when it comes to debugging and testing. + +Another benefit of `{lintr}` is that it can help users write more +readable and maintainable code. By enforcing a consistent style and +highlighting potential issues, `{lintr}` can help users write code that +is easier to understand and work with. This is especially important for +larger projects or teams, where multiple contributors may be working on +the same codebase and it is important to ensure that code is easy to +follow and understand. + +`{lintr}` can be a useful tool for teaching and learning R. By providing +feedback on code style and potential issues, it can help users learn +good coding practices and improve their skills over time. This can be +especially useful for beginners, who may not yet be familiar with all of +the best practices for writing R code. + +Finally, `{lintr}` has had a large and active user community since its +birth in 2014 which has contributed to its rapid development, +maintenance, and adoption. At the time of writing, `{lintr}` is in a +mature and stable state and therefore provides a reliable API that is +unlikely to feature any breaking changes. # Conclusion -In conclusion, `{lintr}` is a valuable tool for R users to help improve the quality and reliability of their code. Its static code analysis capabilities, combined with its flexibility and ease of use, make it relevant and valuable for a wide range of applications. +In conclusion, `{lintr}` is a valuable tool for R users to help improve +the quality and reliability of their code. Its static code analysis +capabilities, combined with its flexibility and ease of use, make it +relevant and valuable for a wide range of applications. # Licensing and Availability -`{lintr}` is licensed under the MIT License, with all source code openly developed and stored on GitHub (), along with a corresponding issue tracker for bug reporting and feature enhancements. +`{lintr}` is licensed under the MIT License, with all source code openly +developed and stored on GitHub (), along +with a corresponding issue tracker for bug reporting and feature +enhancements. + +# Conflicts of interest + +The authors declare no conflict of interest. # Acknowledgments # References + +McConnell, S. (2004). *Code complete*. Pearson Education. + +R Core Team. (2023). *R: A language and environment for statistical +computing*. R Foundation for Statistical Computing. + + +Wickham, H., Averick, M., Bryan, J., Chang, W., McGowan, L. D., +François, R., Grolemund, G., Hayes, A., Henry, L., Hester, J., Kuhn, M., +Pedersen, T. L., Miller, E., Bache, S. M., Müller, K., Ooms, J., +Robinson, D., Seidel, D. P., Spinu, V., … Yutani, H. (2019). Welcome to +the tidyverse. *Journal of Open Source +Software*, *4*(43), 1686. diff --git a/paper/paper.pdf b/paper/paper.pdf deleted file mode 100644 index ffe12cbc8400d421e0a4aeaa6ff126d217cac013..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 144670 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 diff --git a/paper/paper.tex b/paper/paper.tex deleted file mode 100644 index 819698f86..000000000 --- a/paper/paper.tex +++ /dev/null @@ -1,513 +0,0 @@ -\documentclass[10pt,a4paper,onecolumn]{article} -\usepackage{marginnote} -\usepackage{graphicx} -\usepackage{xcolor} -\usepackage{authblk,etoolbox} -\usepackage{titlesec} -\usepackage{calc} -\usepackage{tikz} -\usepackage{hyperref} -\hypersetup{colorlinks,breaklinks, - urlcolor=[rgb]{0.0, 0.5, 1.0}, - linkcolor=[rgb]{0.0, 0.5, 1.0}} -\usepackage{caption} -\usepackage{tcolorbox} -\usepackage{amssymb,amsmath} -\usepackage{ifxetex,ifluatex} -\usepackage{seqsplit} -\usepackage{fixltx2e} % provides \textsubscript -\usepackage[ - backend=biber, -% style=alphabetic, -% citestyle=numeric -]{biblatex} -\bibliography{paper.bib} - - -% --- Page layout ------------------------------------------------------------- -\usepackage[top=3.5cm, bottom=3cm, right=1.5cm, left=1.0cm, - headheight=2.2cm, reversemp, includemp, marginparwidth=4.5cm]{geometry} - -% --- Default font ------------------------------------------------------------ -% \renewcommand\familydefault{\sfdefault} - -% --- Style ------------------------------------------------------------------- -\renewcommand{\bibfont}{\small \sffamily} -\renewcommand{\captionfont}{\small\sffamily} -\renewcommand{\captionlabelfont}{\bfseries} - -% --- Section/SubSection/SubSubSection ---------------------------------------- -\titleformat{\section} - {\normalfont\sffamily\Large\bfseries} - {}{0pt}{} -\titleformat{\subsection} - {\normalfont\sffamily\large\bfseries} - {}{0pt}{} -\titleformat{\subsubsection} - {\normalfont\sffamily\bfseries} - {}{0pt}{} -\titleformat*{\paragraph} - {\sffamily\normalsize} - - -% --- Header / Footer --------------------------------------------------------- -\usepackage{fancyhdr} -\pagestyle{fancy} -\fancyhf{} -%\renewcommand{\headrulewidth}{0.50pt} -\renewcommand{\headrulewidth}{0pt} -\fancyhead[L]{\hspace{-0.75cm}\includegraphics[width=5.5cm]{/Library/Frameworks/R.framework/Versions/4.2-arm64/Resources/library/rticles/rmarkdown/templates/joss/resources/JOSS-logo.png}} -\fancyhead[C]{} -\fancyhead[R]{} -\renewcommand{\footrulewidth}{0.25pt} - -\fancyfoot[L]{\footnotesize{\sffamily , (). Static Code Analysis for -R. \textit{Journal of Open Source Software}, (), . \href{https://doi.org/}{https://doi.org/}}} - - -\fancyfoot[R]{\sffamily \thepage} -\makeatletter -\let\ps@plain\ps@fancy -\fancyheadoffset[L]{4.5cm} -\fancyfootoffset[L]{4.5cm} - -% --- Macros --------- - -\definecolor{linky}{rgb}{0.0, 0.5, 1.0} - -\newtcolorbox{repobox} - {colback=red, colframe=red!75!black, - boxrule=0.5pt, arc=2pt, left=6pt, right=6pt, top=3pt, bottom=3pt} - -\newcommand{\ExternalLink}{% - \tikz[x=1.2ex, y=1.2ex, baseline=-0.05ex]{% - \begin{scope}[x=1ex, y=1ex] - \clip (-0.1,-0.1) - --++ (-0, 1.2) - --++ (0.6, 0) - --++ (0, -0.6) - --++ (0.6, 0) - --++ (0, -1); - \path[draw, - line width = 0.5, - rounded corners=0.5] - (0,0) rectangle (1,1); - \end{scope} - \path[draw, line width = 0.5] (0.5, 0.5) - -- (1, 1); - \path[draw, line width = 0.5] (0.6, 1) - -- (1, 1) -- (1, 0.6); - } - } - -% --- Title / Authors --------------------------------------------------------- -% patch \maketitle so that it doesn't center -\patchcmd{\@maketitle}{center}{flushleft}{}{} -\patchcmd{\@maketitle}{center}{flushleft}{}{} -% patch \maketitle so that the font size for the title is normal -\patchcmd{\@maketitle}{\LARGE}{\LARGE\sffamily}{}{} -% patch the patch by authblk so that the author block is flush left -\def\maketitle{{% - \renewenvironment{tabular}[2][] - {\begin{flushleft}} - {\end{flushleft}} - \AB@maketitle}} -\makeatletter -\renewcommand\AB@affilsepx{ \protect\Affilfont} -%\renewcommand\AB@affilnote[1]{{\bfseries #1}\hspace{2pt}} -\renewcommand\AB@affilnote[1]{{\bfseries #1}\hspace{3pt}} -\makeatother -\renewcommand\Authfont{\sffamily\bfseries} -\renewcommand\Affilfont{\sffamily\small\mdseries} -\setlength{\affilsep}{1em} - - -\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex - \usepackage[T1]{fontenc} - \usepackage[utf8]{inputenc} - -\else % if luatex or xelatex - \ifxetex - \usepackage{mathspec} - \else - \usepackage{fontspec} - \fi - \defaultfontfeatures{Ligatures=TeX,Scale=MatchLowercase} - -\fi -% use upquote if available, for straight quotes in verbatim environments -\IfFileExists{upquote.sty}{\usepackage{upquote}}{} -% use microtype if available -\IfFileExists{microtype.sty}{% -\usepackage{microtype} -\UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts -}{} - -\usepackage{hyperref} -\hypersetup{unicode=true, - pdftitle={Static Code Analysis for R}, - pdfborder={0 0 0}, - breaklinks=true} -\urlstyle{same} % don't use monospace font for urls -\usepackage{graphicx,grffile} -\makeatletter -\def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi} -\def\maxheight{\ifdim\Gin@nat@height>\textheight\textheight\else\Gin@nat@height\fi} -\makeatother -% Scale images if necessary, so that they will not overflow the page -% margins by default, and it is still possible to overwrite the defaults -% using explicit options in \includegraphics[width, height, ...]{} -\setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio} -\IfFileExists{parskip.sty}{% -\usepackage{parskip} -}{% else -\setlength{\parindent}{0pt} -\setlength{\parskip}{6pt plus 2pt minus 1pt} -} -\setlength{\emergencystretch}{3em} % prevent overfull lines -\setcounter{secnumdepth}{0} -% Redefines (sub)paragraphs to behave more like sections -\ifx\paragraph\undefined\else -\let\oldparagraph\paragraph -\renewcommand{\paragraph}[1]{\oldparagraph{#1}\mbox{}} -\fi -\ifx\subparagraph\undefined\else -\let\oldsubparagraph\subparagraph -\renewcommand{\subparagraph}[1]{\oldsubparagraph{#1}\mbox{}} -\fi - -% Pandoc syntax highlighting -\usepackage{color} -\usepackage{fancyvrb} -\newcommand{\VerbBar}{|} -\newcommand{\VERB}{\Verb[commandchars=\\\{\}]} -\DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\{\}} -% Add ',fontsize=\small' for more characters per line -\usepackage{framed} -\definecolor{shadecolor}{RGB}{248,248,248} -\newenvironment{Shaded}{\begin{snugshade}}{\end{snugshade}} -\newcommand{\AlertTok}[1]{\textcolor[rgb]{0.94,0.16,0.16}{#1}} -\newcommand{\AnnotationTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textbf{\textit{#1}}}} -\newcommand{\AttributeTok}[1]{\textcolor[rgb]{0.77,0.63,0.00}{#1}} -\newcommand{\BaseNTok}[1]{\textcolor[rgb]{0.00,0.00,0.81}{#1}} -\newcommand{\BuiltInTok}[1]{#1} -\newcommand{\CharTok}[1]{\textcolor[rgb]{0.31,0.60,0.02}{#1}} -\newcommand{\CommentTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textit{#1}}} -\newcommand{\CommentVarTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textbf{\textit{#1}}}} -\newcommand{\ConstantTok}[1]{\textcolor[rgb]{0.00,0.00,0.00}{#1}} -\newcommand{\ControlFlowTok}[1]{\textcolor[rgb]{0.13,0.29,0.53}{\textbf{#1}}} -\newcommand{\DataTypeTok}[1]{\textcolor[rgb]{0.13,0.29,0.53}{#1}} -\newcommand{\DecValTok}[1]{\textcolor[rgb]{0.00,0.00,0.81}{#1}} -\newcommand{\DocumentationTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textbf{\textit{#1}}}} -\newcommand{\ErrorTok}[1]{\textcolor[rgb]{0.64,0.00,0.00}{\textbf{#1}}} -\newcommand{\ExtensionTok}[1]{#1} -\newcommand{\FloatTok}[1]{\textcolor[rgb]{0.00,0.00,0.81}{#1}} -\newcommand{\FunctionTok}[1]{\textcolor[rgb]{0.00,0.00,0.00}{#1}} -\newcommand{\ImportTok}[1]{#1} -\newcommand{\InformationTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textbf{\textit{#1}}}} -\newcommand{\KeywordTok}[1]{\textcolor[rgb]{0.13,0.29,0.53}{\textbf{#1}}} -\newcommand{\NormalTok}[1]{#1} -\newcommand{\OperatorTok}[1]{\textcolor[rgb]{0.81,0.36,0.00}{\textbf{#1}}} -\newcommand{\OtherTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{#1}} -\newcommand{\PreprocessorTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textit{#1}}} -\newcommand{\RegionMarkerTok}[1]{#1} -\newcommand{\SpecialCharTok}[1]{\textcolor[rgb]{0.00,0.00,0.00}{#1}} -\newcommand{\SpecialStringTok}[1]{\textcolor[rgb]{0.31,0.60,0.02}{#1}} -\newcommand{\StringTok}[1]{\textcolor[rgb]{0.31,0.60,0.02}{#1}} -\newcommand{\VariableTok}[1]{\textcolor[rgb]{0.00,0.00,0.00}{#1}} -\newcommand{\VerbatimStringTok}[1]{\textcolor[rgb]{0.31,0.60,0.02}{#1}} -\newcommand{\WarningTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textbf{\textit{#1}}}} - -% tightlist command for lists without linebreak -\providecommand{\tightlist}{% - \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} - - -% Pandoc citation processing -\newlength{\cslhangindent} -\setlength{\cslhangindent}{1.5em} -\newlength{\csllabelwidth} -\setlength{\csllabelwidth}{3em} -\newlength{\cslentryspacingunit} % times entry-spacing -\setlength{\cslentryspacingunit}{\parskip} -% for Pandoc 2.8 to 2.10.1 -\newenvironment{cslreferences}% - {}% - {\par} -% For Pandoc 2.11+ -\newenvironment{CSLReferences}[2] % #1 hanging-ident, #2 entry spacing - {% don't indent paragraphs - \setlength{\parindent}{0pt} - % turn on hanging indent if param 1 is 1 - \ifodd #1 - \let\oldpar\par - \def\par{\hangindent=\cslhangindent\oldpar} - \fi - % set entry spacing - \setlength{\parskip}{#2\cslentryspacingunit} - }% - {} -\usepackage{calc} -\newcommand{\CSLBlock}[1]{#1\hfill\break} -\newcommand{\CSLLeftMargin}[1]{\parbox[t]{\csllabelwidth}{#1}} -\newcommand{\CSLRightInline}[1]{\parbox[t]{\linewidth - \csllabelwidth}{#1}\break} -\newcommand{\CSLIndent}[1]{\hspace{\cslhangindent}#1} - - -\title{Static Code Analysis for R} - - \author[1]{Jim Hester} - - \affil[1]{Netflix} - \date{\vspace{-5ex}} - -\begin{document} -\maketitle - -\marginpar{ - %\hrule - \sffamily\small - - {\bfseries DOI:} \href{https://doi.org/}{\color{linky}{}} - - \vspace{2mm} - - {\bfseries Software} - \begin{itemize} - \setlength\itemsep{0em} - \item \href{}{\color{linky}{Review}} \ExternalLink - \item \href{}{\color{linky}{Repository}} \ExternalLink - \item \href{}{\color{linky}{Archive}} \ExternalLink - \end{itemize} - - \vspace{2mm} - - {\bfseries Submitted:} \\ - {\bfseries Published:} - - \vspace{2mm} - {\bfseries License}\\ - Authors of papers retain copyright and release the work under a Creative Commons Attribution 4.0 International License (\href{http://creativecommons.org/licenses/by/4.0/}{\color{linky}{CC-BY}}). -} - -\hypertarget{statement-of-need}{% -\section{Statement of Need}\label{statement-of-need}} - -The R programming language (\protect\hyperlink{ref-base2023}{R Core -Team, 2023}) is a popular choice for statistical analysis and -visualization, and is used by a wide range of researchers and data -scientists. The \texttt{\{lintr\}} package is an open-source R package -that provides static code analysis to check for a variety of common -problems related to readability, efficiency, consistency, style, etc. It -is designed to be easy to use and integrate into existing workflows, and -can be run from the command line or used as part of an automated build -or continuous integration process. \texttt{\{lintr\}} also integrates -with a number of popular IDEs and text editors, such as RStudio and -Visual Studio Code, making it convenient for users to run -\texttt{\{lintr\}} checks on their code as they work. - -\hypertarget{features}{% -\section{Features}\label{features}} - -There are over 85 linters offered by \texttt{\{lintr\}}! - -\begin{Shaded} -\begin{Highlighting}[] -\FunctionTok{library}\NormalTok{(lintr)} - -\FunctionTok{length}\NormalTok{(}\FunctionTok{all\_linters}\NormalTok{())} -\CommentTok{\#\textgreater{} [1] 87} -\end{Highlighting} -\end{Shaded} - -Naturally, we can't discuss all of them here. To see details about all -available linters, we encourage readers to see -\url{https://lintr.r-lib.org/dev/reference/index.html\#individual-linters}. - -We will showcase one linter for each kind of common problem found in R -code. - -\begin{itemize} -\tightlist -\item - \textbf{Best practices} -\end{itemize} - -\texttt{\{lintr\}} offers linters that can detect problematic -antipatterns and suggest alternative patterns that follow best -practices. - -For example, usage of vectorized \texttt{\&} and \texttt{\textbar{}} -logical operators in conditional statements is error-prone, and scalar -\texttt{\&\&} and \texttt{\textbar{}\textbar{}}, respectively, are to be -preferred. The \texttt{vector\_logic\_linter()} linter detects such -problematic usages. - -\begin{Shaded} -\begin{Highlighting}[] -\FunctionTok{lint}\NormalTok{(} - \AttributeTok{text =} \StringTok{"if (x \& y) 1"}\NormalTok{,} - \AttributeTok{linters =} \FunctionTok{vector\_logic\_linter}\NormalTok{()} -\NormalTok{)} -\CommentTok{\#\textgreater{} \textless{}text\textgreater{}:1:7: warning: [vector\_logic\_linter] Conditional expressions require scalar logical operators (\&\& and ||)} -\CommentTok{\#\textgreater{} if (x \& y) 1} -\CommentTok{\#\textgreater{} \^{}} -\end{Highlighting} -\end{Shaded} - -\begin{itemize} -\tightlist -\item - \textbf{Efficiency} -\end{itemize} - -Sometimes the users might not be aware of a more efficient way offered -by R for carrying out a computation. \texttt{\{lintr\}} offers linters -to provide suggestions to improve code efficiency. - -\begin{Shaded} -\begin{Highlighting}[] -\FunctionTok{lint}\NormalTok{(} - \AttributeTok{text =} \StringTok{"any(is.na(x), na.rm = TRUE)"}\NormalTok{,} - \AttributeTok{linters =} \FunctionTok{any\_is\_na\_linter}\NormalTok{()} -\NormalTok{)} -\CommentTok{\#\textgreater{} \textless{}text\textgreater{}:1:1: warning: [any\_is\_na\_linter] anyNA(x) is better than any(is.na(x)).} -\CommentTok{\#\textgreater{} any(is.na(x), na.rm = TRUE)} -\CommentTok{\#\textgreater{} \^{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}} -\end{Highlighting} -\end{Shaded} - -\begin{itemize} -\tightlist -\item - \textbf{Readability} -\end{itemize} - -Coders spend significantly more time reading compared to writing code -(\protect\hyperlink{ref-mcconnell2004code}{McConnell, 2004}). Thus, -writing readable code makes the code more maintainable and reduces the -possibility of introducing bugs stemming from a poor understanding of -the code. - -\texttt{\{lintr\}} provides a number of linters that suggest more -readable alternatives. For example, -\texttt{function\_left\_parentheses\_linter()}. - -\begin{Shaded} -\begin{Highlighting}[] -\FunctionTok{lint}\NormalTok{(} - \AttributeTok{text =} \StringTok{"stats::sd (c (x, y, z))"}\NormalTok{,} - \AttributeTok{linters =} \FunctionTok{function\_left\_parentheses\_linter}\NormalTok{()} -\NormalTok{)} -\CommentTok{\#\textgreater{} \textless{}text\textgreater{}:1:10: style: [function\_left\_parentheses\_linter] Remove spaces before the left parenthesis in a function call.} -\CommentTok{\#\textgreater{} stats::sd (c (x, y, z))} -\CommentTok{\#\textgreater{} \^{}} -\CommentTok{\#\textgreater{} \textless{}text\textgreater{}:1:13: style: [function\_left\_parentheses\_linter] Remove spaces before the left parenthesis in a function call.} -\CommentTok{\#\textgreater{} stats::sd (c (x, y, z))} -\CommentTok{\#\textgreater{} \^{}} -\end{Highlighting} -\end{Shaded} - -\begin{itemize} -\tightlist -\item - \textbf{Tidyverse style} -\end{itemize} - -\texttt{\{lintr\}} also provides linters to enforce the style used -throughout the \texttt{\{tidyverse\}} -(\protect\hyperlink{ref-Wickham2019}{Wickham et al., 2019}) ecosystem of -R packages. This style of coding has been outlined in the tidyverse -style guide (\url{https://style.tidyverse.org/index.html}). - -\begin{Shaded} -\begin{Highlighting}[] -\FunctionTok{lint}\NormalTok{(} - \AttributeTok{text =} \StringTok{"1:3 \%\textgreater{}\% mean \%\textgreater{}\% as.character"}\NormalTok{,} - \AttributeTok{linters =} \FunctionTok{pipe\_call\_linter}\NormalTok{()} -\NormalTok{)} -\CommentTok{\#\textgreater{} \textless{}text\textgreater{}:1:9: warning: [pipe\_call\_linter] Use explicit calls in magrittr pipes, i.e., \textasciigrave{}a \%\textgreater{}\% foo\textasciigrave{} should be \textasciigrave{}a \%\textgreater{}\% foo()\textasciigrave{}.} -\CommentTok{\#\textgreater{} 1:3 \%\textgreater{}\% mean \%\textgreater{}\% as.character} -\CommentTok{\#\textgreater{} \^{}\textasciitilde{}\textasciitilde{}\textasciitilde{}} -\CommentTok{\#\textgreater{} \textless{}text\textgreater{}:1:18: warning: [pipe\_call\_linter] Use explicit calls in magrittr pipes, i.e., \textasciigrave{}a \%\textgreater{}\% foo\textasciigrave{} should be \textasciigrave{}a \%\textgreater{}\% foo()\textasciigrave{}.} -\CommentTok{\#\textgreater{} 1:3 \%\textgreater{}\% mean \%\textgreater{}\% as.character} -\CommentTok{\#\textgreater{} \^{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}} -\end{Highlighting} -\end{Shaded} - -\hypertarget{benefits-of-using-lintr}{% -\section{\texorpdfstring{Benefits of using -\texttt{\{lintr\}}}{Benefits of using \{lintr\}}}\label{benefits-of-using-lintr}} - -There are several benefits to using \texttt{\{lintr\}} to analyze and -improve R code. One of the most obvious is that it can help users -identify and fix problems in their code, which can save time and effort -during the development process. By catching issues early on, -\texttt{\{lintr\}} can help prevent bugs and other issues from creeping -into code, which can save time and effort when it comes to debugging and -testing. - -Another benefit of \texttt{\{lintr\}} is that it can help users write -more readable and maintainable code. By enforcing a consistent style and -highlighting potential issues, \texttt{\{lintr\}} can help users write -code that is easier to understand and work with. This is especially -important for larger projects or teams, where multiple contributors may -be working on the same codebase and it is important to ensure that code -is easy to follow and understand. - -\texttt{\{lintr\}} can be a useful tool for teaching and learning R. By -providing feedback on code style and potential issues, it can help users -learn good coding practices and improve their skills over time. This can -be especially useful for beginners, who may not yet be familiar with all -of the best practices for writing R code. - -Finally, \texttt{\{lintr\}} has had a large and active user community -since its birth in 2014 which has contributed to its rapid development, -maintenance, and adoption. At the time of writing, \texttt{\{lintr\}} is -in a mature and stable state and therefore provides a reliable API that -is unlikely to feature any breaking changes. - -\hypertarget{conclusion}{% -\section{Conclusion}\label{conclusion}} - -In conclusion, \texttt{\{lintr\}} is a valuable tool for R users to help -improve the quality and reliability of their code. Its static code -analysis capabilities, combined with its flexibility and ease of use, -make it relevant and valuable for a wide range of applications. - -\hypertarget{licensing-and-availability}{% -\section{Licensing and Availability}\label{licensing-and-availability}} - -\texttt{\{lintr\}} is licensed under the MIT License, with all source -code openly developed and stored on GitHub -(\url{https://github.com/r-lib/lintr}), along with a corresponding issue -tracker for bug reporting and feature enhancements. - -\hypertarget{acknowledgments}{% -\section{Acknowledgments}\label{acknowledgments}} - -\hypertarget{references}{% -\section*{References}\label{references}} -\addcontentsline{toc}{section}{References} - -\hypertarget{refs}{} -\begin{CSLReferences}{1}{0} -\leavevmode\vadjust pre{\hypertarget{ref-mcconnell2004code}{}}% -McConnell, S. (2004). \emph{Code complete}. Pearson Education. - -\leavevmode\vadjust pre{\hypertarget{ref-base2023}{}}% -R Core Team. (2023). \emph{{R}: A language and environment for -statistical computing}. R Foundation for Statistical Computing. -\url{https://www.R-project.org/} - -\leavevmode\vadjust pre{\hypertarget{ref-Wickham2019}{}}% -Wickham, H., Averick, M., Bryan, J., Chang, W., McGowan, L. D., -François, R., Grolemund, G., Hayes, A., Henry, L., Hester, J., Kuhn, M., -Pedersen, T. L., Miller, E., Bache, S. M., Müller, K., Ooms, J., -Robinson, D., Seidel, D. P., Spinu, V., \ldots{} Yutani, H. (2019). -Welcome to the {tidyverse}. \emph{Journal of Open Source Software}, -\emph{4}(43), 1686. \url{https://doi.org/10.21105/joss.01686} - -\end{CSLReferences} - -\end{document} From b313632ffbfb13c9a25b96ff978483bb8414f4e5 Mon Sep 17 00:00:00 2001 From: Indrajeet Patil Date: Sat, 2 Dec 2023 20:57:17 +0100 Subject: [PATCH 15/41] Update draft-pdf.yml --- .github/workflows/draft-pdf.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/draft-pdf.yml b/.github/workflows/draft-pdf.yml index 338e4cefd..35c5f4922 100644 --- a/.github/workflows/draft-pdf.yml +++ b/.github/workflows/draft-pdf.yml @@ -1,6 +1,8 @@ on: push: branches: [main, master] + pull_request: + branches: [main, master] jobs: paper: @@ -8,14 +10,14 @@ jobs: name: Paper Draft steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Build draft PDF uses: openjournals/openjournals-draft-action@master with: journal: joss # This should be the path to the paper within your repo. - paper-path: paper.md + paper-path: paper/paper.md - name: Upload uses: actions/upload-artifact@v1 @@ -24,4 +26,4 @@ jobs: # This is the output path where Pandoc will write the compiled # PDF. Note, this should be the same directory as the input # paper.md - path: paper.pdf + path: paper/paper.pdf From ae302396ade64c70438875240f96604bae67b43a Mon Sep 17 00:00:00 2001 From: Indrajeet Patil Date: Sat, 2 Dec 2023 21:10:05 +0100 Subject: [PATCH 16/41] preserve YAML; add initial list of authors --- paper/paper.Rmd | 21 +++++- paper/paper.md | 187 ++++++++++++++++++++++++++++-------------------- 2 files changed, 130 insertions(+), 78 deletions(-) diff --git a/paper/paper.Rmd b/paper/paper.Rmd index 707a9bf2e..95a7963ba 100644 --- a/paper/paper.Rmd +++ b/paper/paper.Rmd @@ -6,10 +6,29 @@ authors: - name: Jim Hester affiliation: 1 orcid: ~ + - name: Michael Chirico + affiliation: 2 + orcid: ~ + - name: Alexander Rosenstock + affiliation: 3 + orcid: ~ + - name: Indrajeet Patil + orcid: 0000-0003-1995-6531 + affiliation: 4 affiliations: - index: 1 name: Netflix -output: md_document + - index: 2 + name: Google + - index: 3 + name: Mathematisches Institut der Heinrich-Heine-Universität Düsseldorf + - index: 4 + name: Center for Humans and Machines, Max Planck Institute for Human Development, Berlin, Germany +output: + md_document: + variant: "markdown" + preserve_yaml: true + standalone: true bibliography: paper.bib csl: apa.csl link-citations: yes diff --git a/paper/paper.md b/paper/paper.md index cd55706ca..7434979db 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -1,12 +1,48 @@ +--- +title: "Static Code Analysis for R" +date: "2023-12-02" +tags: ["R", "linter", "tidyverse"] +authors: + - name: Jim Hester + affiliation: 1 + orcid: ~ + - name: Michael Chirico + affiliation: 2 + orcid: ~ + - name: Alexander Rosenstock + affiliation: 3 + orcid: ~ + - name: Indrajeet Patil + orcid: 0000-0003-1995-6531 + affiliation: 4 +affiliations: + - index: 1 + name: Netflix + - index: 2 + name: Google + - index: 3 + name: Mathematisches Institut der Heinrich-Heine-Universität Düsseldorf + - index: 4 + name: Center for Humans and Machines, Max Planck Institute for Human Development, Berlin, Germany +output: + md_document: + variant: "markdown" + preserve_yaml: true + standalone: true +bibliography: paper.bib +csl: apa.csl +link-citations: yes +--- + # Statement of Need -R is an interpreted, dynamically typed programming language ([R Core -Team, 2023](#ref-base2023)). It is a popular choice for statistical -analysis and visualization, and is used by a wide range of researchers -and data scientists. The `{lintr}` package is an open-source R package -that provides static code analysis to check for a variety of common -problems related to readability, efficiency, consistency, style, etc. In -particular, it enforces the [tidyverse style +R is an interpreted, dynamically typed programming language [@base2023]. +It is a popular choice for statistical analysis and visualization, and +is used by a wide range of researchers and data scientists. The +`{lintr}` package is an open-source R package that provides static code +analysis to check for a variety of common problems related to +readability, efficiency, consistency, style, etc. In particular, it +enforces the [tidyverse style guide]((https://style.tidyverse.org/index.html)). It is designed to be easy to use and integrate into existing workflows, and can be run from the command line or used as part of an automated build or continuous @@ -18,12 +54,14 @@ convenient for users to run `{lintr}` checks on their code as they work. As of this writing, `{lintr}` offers 115 linters. - library(lintr) +``` r +library(lintr) - length(all_linters()) - #> [1] 115 +length(all_linters()) +#> [1] 115 +``` -Naturally, we can’t discuss all of them here. To see details about all +Naturally, we can't discuss all of them here. To see details about all available linters, we encourage readers to see . @@ -40,15 +78,17 @@ conditional statements is error-prone, and scalar `&&` and `||`, respectively, are to be preferred. The `vector_logic_linter()` linter detects such problematic usages. - lint( - text = "if (x & y) 1", - linters = vector_logic_linter() - ) - #> :1:7: warning: [vector_logic_linter] Conditional - #> expressions require scalar logical operators (&& and - #> ||) - #> if (x & y) 1 - #> ^ +``` r +lint( + text = "if (x & y) 1", + linters = vector_logic_linter() +) +#> :1:7: warning: [vector_logic_linter] Conditional +#> expressions require scalar logical operators (&& and +#> ||) +#> if (x & y) 1 +#> ^ +``` - **Efficiency** @@ -56,61 +96,67 @@ Sometimes the users might not be aware of a more efficient way offered by R for carrying out a computation. `{lintr}` offers linters to provide suggestions to improve code efficiency. - lint( - text = "any(is.na(x), na.rm = TRUE)", - linters = any_is_na_linter() - ) - #> :1:1: warning: [any_is_na_linter] anyNA(x) is better - #> than any(is.na(x)). - #> any(is.na(x), na.rm = TRUE) - #> ^~~~~~~~~~~~~~~~~~~~~~~~~~~ +``` r +lint( + text = "any(is.na(x), na.rm = TRUE)", + linters = any_is_na_linter() +) +#> :1:1: warning: [any_is_na_linter] anyNA(x) is better +#> than any(is.na(x)). +#> any(is.na(x), na.rm = TRUE) +#> ^~~~~~~~~~~~~~~~~~~~~~~~~~~ +``` - **Readability** Coders spend significantly more time reading compared to writing code -([McConnell, 2004](#ref-mcconnell2004code)). Thus, writing readable code -makes the code more maintainable and reduces the possibility of -introducing bugs stemming from a poor understanding of the code. +[@mcconnell2004code]. Thus, writing readable code makes the code more +maintainable and reduces the possibility of introducing bugs stemming +from a poor understanding of the code. `{lintr}` provides a number of linters that suggest more readable alternatives. For example, `function_left_parentheses_linter()`. - lint( - text = "stats::sd (c (x, y, z))", - linters = function_left_parentheses_linter() - ) - #> :1:10: style: [function_left_parentheses_linter] - #> Remove spaces before the left parenthesis in a function - #> call. - #> stats::sd (c (x, y, z)) - #> ^ - #> :1:13: style: [function_left_parentheses_linter] - #> Remove spaces before the left parenthesis in a function - #> call. - #> stats::sd (c (x, y, z)) - #> ^ +``` r +lint( + text = "stats::sd (c (x, y, z))", + linters = function_left_parentheses_linter() +) +#> :1:10: style: [function_left_parentheses_linter] +#> Remove spaces before the left parenthesis in a function +#> call. +#> stats::sd (c (x, y, z)) +#> ^ +#> :1:13: style: [function_left_parentheses_linter] +#> Remove spaces before the left parenthesis in a function +#> call. +#> stats::sd (c (x, y, z)) +#> ^ +``` - **Tidyverse style** `{lintr}` also provides linters to enforce the style used throughout the -`{tidyverse}` ([Wickham et al., 2019](#ref-Wickham2019)) ecosystem of R -packages. This style of coding has been outlined in the tidyverse style -guide (). - - lint( - text = "1:3 %>% mean %>% as.character", - linters = pipe_call_linter() - ) - #> :1:9: warning: [pipe_call_linter] Use explicit calls - #> in magrittr pipes, i.e., `a %>% foo` should be `a %>% - #> foo()`. - #> 1:3 %>% mean %>% as.character - #> ^~~~ - #> :1:18: warning: [pipe_call_linter] Use explicit calls - #> in magrittr pipes, i.e., `a %>% foo` should be `a %>% - #> foo()`. - #> 1:3 %>% mean %>% as.character - #> ^~~~~~~~~~~~ +`{tidyverse}` [@Wickham2019] ecosystem of R packages. This style of +coding has been outlined in the tidyverse style guide +(). + +``` r +lint( + text = "1:3 %>% mean %>% as.character", + linters = pipe_call_linter() +) +#> :1:9: warning: [pipe_call_linter] Use explicit calls +#> in magrittr pipes, i.e., `a %>% foo` should be `a %>% +#> foo()`. +#> 1:3 %>% mean %>% as.character +#> ^~~~ +#> :1:18: warning: [pipe_call_linter] Use explicit calls +#> in magrittr pipes, i.e., `a %>% foo` should be `a %>% +#> foo()`. +#> 1:3 %>% mean %>% as.character +#> ^~~~~~~~~~~~ +``` # Benefits of using `{lintr}` @@ -161,17 +207,4 @@ The authors declare no conflict of interest. # Acknowledgments -# References - -McConnell, S. (2004). *Code complete*. Pearson Education. - -R Core Team. (2023). *R: A language and environment for statistical -computing*. R Foundation for Statistical Computing. - - -Wickham, H., Averick, M., Bryan, J., Chang, W., McGowan, L. D., -François, R., Grolemund, G., Hayes, A., Henry, L., Hester, J., Kuhn, M., -Pedersen, T. L., Miller, E., Bache, S. M., Müller, K., Ooms, J., -Robinson, D., Seidel, D. P., Spinu, V., … Yutani, H. (2019). Welcome to -the tidyverse. *Journal of Open Source -Software*, *4*(43), 1686. +# References {#references .unnumbered} From f9ed2afb65ed72e1549d848eeddb6291bfc4d009 Mon Sep 17 00:00:00 2001 From: Indrajeet Patil Date: Sat, 2 Dec 2023 21:13:13 +0100 Subject: [PATCH 17/41] initial acknowledgments --- paper/paper.Rmd | 2 ++ 1 file changed, 2 insertions(+) diff --git a/paper/paper.Rmd b/paper/paper.Rmd index 95a7963ba..e21958e4a 100644 --- a/paper/paper.Rmd +++ b/paper/paper.Rmd @@ -166,4 +166,6 @@ The authors declare no conflict of interest. # Acknowledgments +The `{lintr}` would not be possible without the immense work of the [R-core team](https://www.r-project.org/contributors.html) who maintain the R language and we are deeply indebted to them. We are also grateful to all contributors to the `{lintr}` package. + # References From 2169c6c97d83c3980716215898a4e0d55ad156fe Mon Sep 17 00:00:00 2001 From: Indrajeet Patil Date: Sat, 2 Dec 2023 21:24:28 +0100 Subject: [PATCH 18/41] change example for best practices --- paper/paper.Rmd | 10 +++++----- paper/paper.md | 27 ++++++++++++++++----------- 2 files changed, 21 insertions(+), 16 deletions(-) diff --git a/paper/paper.Rmd b/paper/paper.Rmd index e21958e4a..5820d657f 100644 --- a/paper/paper.Rmd +++ b/paper/paper.Rmd @@ -70,19 +70,19 @@ We will showcase one linter for each kind of common problem found in R code. `{lintr}` offers linters that can detect problematic antipatterns and suggest alternative patterns that follow best practices. -For example, usage of vectorized `&` and `|` logical operators in conditional statements is error-prone, and scalar `&&` and `||`, respectively, are to be preferred. The `vector_logic_linter()` linter detects such problematic usages. +For example, expressions like `ifelse(x, TRUE, FALSE)` and `ifelse(x, FALSE, TRUE)` are redundant; just `x` or `!x` suffice in R code where logical vectors are a core data structure. The `vector_logic_linter()` linter detects such problematic usages. ```{r} lint( - text = "if (x & y) 1", - linters = vector_logic_linter() + text = "ifelse(x >= 2.5, TRUE, FALSE)", + linters = redundant_ifelse_linter() ) ``` ```{r, eval=FALSE, echo=FALSE} lint( - text = "if (x & y) 1", - linters = vector_logic_linter() + text = "ifelse(x >= 2.5, TRUE, FALSE)", + linters = redundant_ifelse_linter() ) ``` diff --git a/paper/paper.md b/paper/paper.md index 7434979db..91ce12825 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -73,21 +73,21 @@ code. `{lintr}` offers linters that can detect problematic antipatterns and suggest alternative patterns that follow best practices. -For example, usage of vectorized `&` and `|` logical operators in -conditional statements is error-prone, and scalar `&&` and `||`, -respectively, are to be preferred. The `vector_logic_linter()` linter -detects such problematic usages. +For example, expressions like `ifelse(x, TRUE, FALSE)` and +`ifelse(x, FALSE, TRUE)` are redundant; just `x` or `!x` suffice in R +code where logical vectors are a core data structure. The +`vector_logic_linter()` linter detects such problematic usages. ``` r lint( - text = "if (x & y) 1", - linters = vector_logic_linter() + text = "ifelse(x >= 2.5, TRUE, FALSE)", + linters = redundant_ifelse_linter() ) -#> :1:7: warning: [vector_logic_linter] Conditional -#> expressions require scalar logical operators (&& and -#> ||) -#> if (x & y) 1 -#> ^ +#> :1:1: warning: [redundant_ifelse_linter] Just use the +#> logical condition (or its negation) directly instead of +#> calling ifelse(x, TRUE, FALSE) +#> ifelse(x >= 2.5, TRUE, FALSE) +#> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ``` - **Efficiency** @@ -207,4 +207,9 @@ The authors declare no conflict of interest. # Acknowledgments +The `{lintr}` would not be possible without the immense work of the +[R-core team](https://www.r-project.org/contributors.html) who maintain +the R language and we are deeply indebted to them. We are also grateful +to all contributors to the `{lintr}` package. + # References {#references .unnumbered} From 78dfa5f7fa3b45590c51516316cba0fb42adce6b Mon Sep 17 00:00:00 2001 From: Indrajeet Patil Date: Sat, 2 Dec 2023 21:27:11 +0100 Subject: [PATCH 19/41] also add example that doesn't lint --- paper/paper.Rmd | 4 ++-- paper/paper.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/paper/paper.Rmd b/paper/paper.Rmd index 5820d657f..a5f51a163 100644 --- a/paper/paper.Rmd +++ b/paper/paper.Rmd @@ -70,7 +70,7 @@ We will showcase one linter for each kind of common problem found in R code. `{lintr}` offers linters that can detect problematic antipatterns and suggest alternative patterns that follow best practices. -For example, expressions like `ifelse(x, TRUE, FALSE)` and `ifelse(x, FALSE, TRUE)` are redundant; just `x` or `!x` suffice in R code where logical vectors are a core data structure. The `vector_logic_linter()` linter detects such problematic usages. +For example, expressions like `ifelse(x, TRUE, FALSE)` and `ifelse(x, FALSE, TRUE)` are redundant; just `x` or `!x` suffice in R code where logical vectors are a core data structure. The `redundant_ifelse_linter()` linter detects such problematic usages. ```{r} lint( @@ -81,7 +81,7 @@ lint( ```{r, eval=FALSE, echo=FALSE} lint( - text = "ifelse(x >= 2.5, TRUE, FALSE)", + text = "ifelse(x >= 2.5)", linters = redundant_ifelse_linter() ) ``` diff --git a/paper/paper.md b/paper/paper.md index 91ce12825..6343ba7f2 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -76,7 +76,7 @@ suggest alternative patterns that follow best practices. For example, expressions like `ifelse(x, TRUE, FALSE)` and `ifelse(x, FALSE, TRUE)` are redundant; just `x` or `!x` suffice in R code where logical vectors are a core data structure. The -`vector_logic_linter()` linter detects such problematic usages. +`redundant_ifelse_linter()` linter detects such problematic usages. ``` r lint( From bec8cd618519b679f9c2401728fe7b23f1b8bc43 Mon Sep 17 00:00:00 2001 From: Indrajeet Patil Date: Wed, 6 Dec 2023 10:45:08 +0530 Subject: [PATCH 20/41] Update paper/paper.Rmd [skip ci] Co-authored-by: Michael Chirico --- paper/paper.Rmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/paper/paper.Rmd b/paper/paper.Rmd index a5f51a163..e08f87a59 100644 --- a/paper/paper.Rmd +++ b/paper/paper.Rmd @@ -68,7 +68,7 @@ We will showcase one linter for each kind of common problem found in R code. - **Best practices** -`{lintr}` offers linters that can detect problematic antipatterns and suggest alternative patterns that follow best practices. +`{lintr}` offers linters that can detect problematic antipatterns and suggest alternatives that follow best practices. For example, expressions like `ifelse(x, TRUE, FALSE)` and `ifelse(x, FALSE, TRUE)` are redundant; just `x` or `!x` suffice in R code where logical vectors are a core data structure. The `redundant_ifelse_linter()` linter detects such problematic usages. From 221d87256884a10d752cd75b6d2555511b9f7f46 Mon Sep 17 00:00:00 2001 From: Indrajeet Patil Date: Wed, 6 Dec 2023 10:45:42 +0530 Subject: [PATCH 21/41] Update paper/paper.Rmd [skip ci] Co-authored-by: Michael Chirico --- paper/paper.Rmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/paper/paper.Rmd b/paper/paper.Rmd index e08f87a59..4efa1eb44 100644 --- a/paper/paper.Rmd +++ b/paper/paper.Rmd @@ -88,7 +88,7 @@ lint( - **Efficiency** -Sometimes the users might not be aware of a more efficient way offered by R for carrying out a computation. `{lintr}` offers linters to provide suggestions to improve code efficiency. +Sometimes the users might not be aware of a more efficient way offered by R for carrying out a computation. `{lintr}` offers linters to improve code efficiency by avoiding common inefficient patterns. ```{r} lint( From 16cc711db5afe249df4fe34436959fa9207f8f6a Mon Sep 17 00:00:00 2001 From: Indrajeet Patil Date: Wed, 6 Dec 2023 10:46:07 +0530 Subject: [PATCH 22/41] Update paper/paper.Rmd [skip ci] Co-authored-by: Michael Chirico --- paper/paper.Rmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/paper/paper.Rmd b/paper/paper.Rmd index 4efa1eb44..01820c770 100644 --- a/paper/paper.Rmd +++ b/paper/paper.Rmd @@ -106,7 +106,7 @@ lint( - **Readability** -Coders spend significantly more time reading compared to writing code [@mcconnell2004code]. Thus, writing readable code makes the code more maintainable and reduces the possibility of introducing bugs stemming from a poor understanding of the code. +Coders spend significantly more time reading than writing code [@mcconnell2004code]. Thus, writing readable code makes the code more maintainable and reduces the possibility of introducing bugs stemming from a poor understanding of the code. `{lintr}` provides a number of linters that suggest more readable alternatives. For example, `function_left_parentheses_linter()`. From 0022aaa3741830ac496807d2b45b15186894c3fb Mon Sep 17 00:00:00 2001 From: Indrajeet Patil Date: Wed, 6 Dec 2023 06:37:05 +0100 Subject: [PATCH 23/41] update ignore regex; update workflow --- .Rbuildignore | 2 +- .github/workflows/draft-pdf.yml | 5 +++-- paper/paper.Rmd | 23 +---------------------- 3 files changed, 5 insertions(+), 25 deletions(-) diff --git a/.Rbuildignore b/.Rbuildignore index 9c89fa4b6..57e054722 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -28,4 +28,4 @@ ^vignettes/[^-]+.gif$ ^CRAN-SUBMISSION$ ^CODE_OF_CONDUCT\.md$ -^paper.*$ +^paper$ diff --git a/.github/workflows/draft-pdf.yml b/.github/workflows/draft-pdf.yml index 35c5f4922..ef1b55151 100644 --- a/.github/workflows/draft-pdf.yml +++ b/.github/workflows/draft-pdf.yml @@ -1,8 +1,9 @@ +# TODO: delete this file once the paper is published on: push: - branches: [main, master] + branches: [main] pull_request: - branches: [main, master] + branches: [main] jobs: paper: diff --git a/paper/paper.Rmd b/paper/paper.Rmd index 01820c770..12eb9c9a3 100644 --- a/paper/paper.Rmd +++ b/paper/paper.Rmd @@ -79,13 +79,6 @@ lint( ) ``` -```{r, eval=FALSE, echo=FALSE} -lint( - text = "ifelse(x >= 2.5)", - linters = redundant_ifelse_linter() -) -``` - - **Efficiency** Sometimes the users might not be aware of a more efficient way offered by R for carrying out a computation. `{lintr}` offers linters to improve code efficiency by avoiding common inefficient patterns. @@ -97,7 +90,7 @@ lint( ) ``` -```{r, echo=FALSE, eval=FALSE} +```{r} lint( text = "anyNA(x)", linters = any_is_na_linter() @@ -117,13 +110,6 @@ lint( ) ``` -```{r, echo=FALSE, eval=FALSE} -lint( - text = "stats::sd(c(x, y, z))", - linters = function_left_parentheses_linter() -) -``` - - **Tidyverse style** `{lintr}` also provides linters to enforce the style used throughout the `{tidyverse}` [@Wickham2019] ecosystem of R packages. This style of coding has been outlined in the tidyverse style guide (https://style.tidyverse.org/index.html). @@ -135,13 +121,6 @@ lint( ) ``` -```{r, echo=FALSE, eval=FALSE} -lint( - text = "1:3 %>% mean() %>% as.character()", - linters = pipe_call_linter() -) -``` - # Benefits of using `{lintr}` There are several benefits to using `{lintr}` to analyze and improve R code. One of the most obvious is that it can help users identify and fix problems in their code, which can save time and effort during the development process. By catching issues early on, `{lintr}` can help prevent bugs and other issues from creeping into code, which can save time and effort when it comes to debugging and testing. From 13cbce0bfcfe6e62cc6b4df186f6a8c29ab358f1 Mon Sep 17 00:00:00 2001 From: Indrajeet Patil Date: Wed, 6 Dec 2023 06:46:49 +0100 Subject: [PATCH 24/41] add bib entry for style guide --- paper/paper.Rmd | 6 ++++-- paper/paper.bib | 7 +++++++ paper/paper.md | 37 +++++++++++++++++++++++-------------- 3 files changed, 34 insertions(+), 16 deletions(-) diff --git a/paper/paper.Rmd b/paper/paper.Rmd index 12eb9c9a3..ebf032a15 100644 --- a/paper/paper.Rmd +++ b/paper/paper.Rmd @@ -50,7 +50,7 @@ withr::local_options(list( # Statement of Need -R is an interpreted, dynamically typed programming language [@base2023]. It is a popular choice for statistical analysis and visualization, and is used by a wide range of researchers and data scientists. The `{lintr}` package is an open-source R package that provides static code analysis to check for a variety of common problems related to readability, efficiency, consistency, style, etc. In particular, it enforces the [tidyverse style guide]((https://style.tidyverse.org/index.html)). It is designed to be easy to use and integrate into existing workflows, and can be run from the command line or used as part of an automated build or continuous integration process. `{lintr}` also integrates with a number of popular IDEs and text editors, such as RStudio and Visual Studio Code, making it convenient for users to run `{lintr}` checks on their code as they work. +R is an interpreted, dynamically typed programming language [@base2023]. It is a popular choice for statistical analysis and visualization, and is used by a wide range of researchers and data scientists. The `{lintr}` package is an open-source R package that provides static code analysis to check for a variety of common problems related to readability, efficiency, consistency, style, etc. In particular, it enforces the tidyverse style guide [@Wickham2023]. It is designed to be easy to use and integrate into existing workflows, and can be used as part of an automated build or continuous integration process. `{lintr}` also integrates with a number of popular IDEs and text editors, such as RStudio and Visual Studio Code, making it convenient for users to run `{lintr}` checks on their code as they work. # Features @@ -83,6 +83,8 @@ lint( Sometimes the users might not be aware of a more efficient way offered by R for carrying out a computation. `{lintr}` offers linters to improve code efficiency by avoiding common inefficient patterns. +For example, the `any_is_na_linter()` linter detects usages of `any(is.na(x))` and suggests `anyNA(x)` as a more efficient alternative to detect presence *any* of missing values. + ```{r} lint( text = "any(is.na(x), na.rm = TRUE)", @@ -112,7 +114,7 @@ lint( - **Tidyverse style** -`{lintr}` also provides linters to enforce the style used throughout the `{tidyverse}` [@Wickham2019] ecosystem of R packages. This style of coding has been outlined in the tidyverse style guide (https://style.tidyverse.org/index.html). +`{lintr}` also provides linters to enforce the style used throughout the `{tidyverse}` [@Wickham2019] ecosystem of R packages. This style of coding has been outlined in the tidyverse style guide [@Wickham2023]. ```{r} lint( diff --git a/paper/paper.bib b/paper/paper.bib index dd58dcf26..ff78d6c64 100644 --- a/paper/paper.bib +++ b/paper/paper.bib @@ -9,6 +9,13 @@ @Article{Wickham2019 doi = {10.21105/joss.01686}, } +@Manual{Wickham2023, + title = {The Tidyverse Style Guide}, + author = {Hadley Wickham}, + year = {2023}, + url = {https://style.tidyverse.org/index.html}, + } + @Manual{base2023, title = {{R}: A Language and Environment for Statistical Computing}, author = {{R Core Team}}, diff --git a/paper/paper.md b/paper/paper.md index 6343ba7f2..28e6e9101 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -1,6 +1,6 @@ --- title: "Static Code Analysis for R" -date: "2023-12-02" +date: "2023-12-06" tags: ["R", "linter", "tidyverse"] authors: - name: Jim Hester @@ -42,13 +42,12 @@ is used by a wide range of researchers and data scientists. The `{lintr}` package is an open-source R package that provides static code analysis to check for a variety of common problems related to readability, efficiency, consistency, style, etc. In particular, it -enforces the [tidyverse style -guide]((https://style.tidyverse.org/index.html)). It is designed to be -easy to use and integrate into existing workflows, and can be run from -the command line or used as part of an automated build or continuous -integration process. `{lintr}` also integrates with a number of popular -IDEs and text editors, such as RStudio and Visual Studio Code, making it -convenient for users to run `{lintr}` checks on their code as they work. +enforces the tidyverse style guide [@Wickham2023]. It is designed to be +easy to use and integrate into existing workflows, and can be used as +part of an automated build or continuous integration process. `{lintr}` +also integrates with a number of popular IDEs and text editors, such as +RStudio and Visual Studio Code, making it convenient for users to run +`{lintr}` checks on their code as they work. # Features @@ -71,7 +70,7 @@ code. - **Best practices** `{lintr}` offers linters that can detect problematic antipatterns and -suggest alternative patterns that follow best practices. +suggest alternatives that follow best practices. For example, expressions like `ifelse(x, TRUE, FALSE)` and `ifelse(x, FALSE, TRUE)` are redundant; just `x` or `!x` suffice in R @@ -93,8 +92,12 @@ lint( - **Efficiency** Sometimes the users might not be aware of a more efficient way offered -by R for carrying out a computation. `{lintr}` offers linters to provide -suggestions to improve code efficiency. +by R for carrying out a computation. `{lintr}` offers linters to improve +code efficiency by avoiding common inefficient patterns. + +For example, the `any_is_na_linter()` linter detects usages of +`any(is.na(x))` and suggests `anyNA(x)` as a more efficient alternative +to detect presence *any* of missing values. ``` r lint( @@ -107,9 +110,16 @@ lint( #> ^~~~~~~~~~~~~~~~~~~~~~~~~~~ ``` +``` r +lint( + text = "anyNA(x)", + linters = any_is_na_linter() +) +``` + - **Readability** -Coders spend significantly more time reading compared to writing code +Coders spend significantly more time reading than writing code [@mcconnell2004code]. Thus, writing readable code makes the code more maintainable and reduces the possibility of introducing bugs stemming from a poor understanding of the code. @@ -138,8 +148,7 @@ lint( `{lintr}` also provides linters to enforce the style used throughout the `{tidyverse}` [@Wickham2019] ecosystem of R packages. This style of -coding has been outlined in the tidyverse style guide -(). +coding has been outlined in the tidyverse style guide [@Wickham2023]. ``` r lint( From 2b25a1609d5a49296b6aea378771ba3a8e0239a6 Mon Sep 17 00:00:00 2001 From: Indrajeet Patil Date: Wed, 6 Dec 2023 07:00:03 +0100 Subject: [PATCH 25/41] change a couple of examples --- paper/paper.Rmd | 21 +++++++++++++++++---- paper/paper.md | 41 +++++++++++++++++++++++++++-------------- 2 files changed, 44 insertions(+), 18 deletions(-) diff --git a/paper/paper.Rmd b/paper/paper.Rmd index ebf032a15..489325d1c 100644 --- a/paper/paper.Rmd +++ b/paper/paper.Rmd @@ -92,6 +92,8 @@ lint( ) ``` +`anyNA()` in R is more efficient than `any(is.na())` because it stops execution once a missing value is found, while `is.na()` evaluates the entire vector. + ```{r} lint( text = "anyNA(x)", @@ -103,12 +105,21 @@ lint( Coders spend significantly more time reading than writing code [@mcconnell2004code]. Thus, writing readable code makes the code more maintainable and reduces the possibility of introducing bugs stemming from a poor understanding of the code. -`{lintr}` provides a number of linters that suggest more readable alternatives. For example, `function_left_parentheses_linter()`. +`{lintr}` provides a number of linters that suggest more readable alternatives. For example, `comparison_negation_linter()` blocks usages like `!(x == y)` where a direct relational operator is appropriate. + +```{r} +lint( + text = "!x == 2", + linters = comparison_negation_linter() +) +``` + +The more readable alternative here uses `!=`: ```{r} lint( - text = "stats::sd (c (x, y, z))", - linters = function_left_parentheses_linter() + text = "x != 2", + linters = comparison_negation_linter() ) ``` @@ -129,7 +140,9 @@ There are several benefits to using `{lintr}` to analyze and improve R code. One Another benefit of `{lintr}` is that it can help users write more readable and maintainable code. By enforcing a consistent style and highlighting potential issues, `{lintr}` can help users write code that is easier to understand and work with. This is especially important for larger projects or teams, where multiple contributors may be working on the same codebase and it is important to ensure that code is easy to follow and understand. -`{lintr}` can be a useful tool for teaching and learning R. By providing feedback on code style and potential issues, it can help users learn good coding practices and improve their skills over time. This can be especially useful for beginners, who may not yet be familiar with all of the best practices for writing R code. +`{lintr}` is designed for extensibility by allowing users to easily create custom linting rules, enabling flexible and tailored code analysis to suit specific coding conventions, style guides, and project requirements. + +It can also be a useful tool for teaching and learning R. By providing feedback on code style and potential issues, it can help users learn good coding practices and improve their skills over time. This can be especially useful for beginners, who may not yet be familiar with all of the best practices for writing R code. Finally, `{lintr}` has had a large and active user community since its birth in 2014 which has contributed to its rapid development, maintenance, and adoption. At the time of writing, `{lintr}` is in a mature and stable state and therefore provides a reliable API that is unlikely to feature any breaking changes. diff --git a/paper/paper.md b/paper/paper.md index 28e6e9101..fa91593ec 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -110,6 +110,10 @@ lint( #> ^~~~~~~~~~~~~~~~~~~~~~~~~~~ ``` +`anyNA()` in R is more efficient than `any(is.na())` because it stops +execution once a missing value is found, while `is.na()` evaluates the +entire vector. + ``` r lint( text = "anyNA(x)", @@ -125,23 +129,27 @@ maintainable and reduces the possibility of introducing bugs stemming from a poor understanding of the code. `{lintr}` provides a number of linters that suggest more readable -alternatives. For example, `function_left_parentheses_linter()`. +alternatives. For example, `comparison_negation_linter()` blocks usages +like `!(x == y)` where a direct relational operator is appropriate. + +``` r +lint( + text = "!x == 2", + linters = comparison_negation_linter() +) +#> :1:1: warning: [comparison_negation_linter] Use x != +#> y, not !(x == y). +#> !x == 2 +#> ^~~~~~~ +``` + +The more readable alternative here uses `!=`: ``` r lint( - text = "stats::sd (c (x, y, z))", - linters = function_left_parentheses_linter() + text = "x != 2", + linters = comparison_negation_linter() ) -#> :1:10: style: [function_left_parentheses_linter] -#> Remove spaces before the left parenthesis in a function -#> call. -#> stats::sd (c (x, y, z)) -#> ^ -#> :1:13: style: [function_left_parentheses_linter] -#> Remove spaces before the left parenthesis in a function -#> call. -#> stats::sd (c (x, y, z)) -#> ^ ``` - **Tidyverse style** @@ -184,7 +192,12 @@ larger projects or teams, where multiple contributors may be working on the same codebase and it is important to ensure that code is easy to follow and understand. -`{lintr}` can be a useful tool for teaching and learning R. By providing +`{lintr}` is designed for extensibility by allowing users to easily +create custom linting rules, enabling flexible and tailored code +analysis to suit specific coding conventions, style guides, and project +requirements. + +It can also be a useful tool for teaching and learning R. By providing feedback on code style and potential issues, it can help users learn good coding practices and improve their skills over time. This can be especially useful for beginners, who may not yet be familiar with all of From d76dc957b4e518ecacc47aa4bc53982f8cca90ad Mon Sep 17 00:00:00 2001 From: Indrajeet Patil Date: Wed, 6 Dec 2023 08:45:49 +0100 Subject: [PATCH 26/41] add common mistakes section --- paper/paper.Rmd | 56 +++++++++++++++++++++++++++++-- paper/paper.md | 87 +++++++++++++++++++++++++++++++++++++++++-------- 2 files changed, 127 insertions(+), 16 deletions(-) diff --git a/paper/paper.Rmd b/paper/paper.Rmd index 489325d1c..6bc7a97b2 100644 --- a/paper/paper.Rmd +++ b/paper/paper.Rmd @@ -23,7 +23,7 @@ affiliations: - index: 3 name: Mathematisches Institut der Heinrich-Heine-Universität Düsseldorf - index: 4 - name: Center for Humans and Machines, Max Planck Institute for Human Development, Berlin, Germany + name: Preisenergie GmbH, Munich, Germany output: md_document: variant: "markdown" @@ -127,13 +127,59 @@ lint( `{lintr}` also provides linters to enforce the style used throughout the `{tidyverse}` [@Wickham2019] ecosystem of R packages. This style of coding has been outlined in the tidyverse style guide [@Wickham2023]. +For example, the style guide recommends using snake_case for identifiers: + +```{r} +lint( + text = "MyVar <- 1L", + linters = object_name_linter() +) +``` + +But, as with other linters in this category, the linter can be customized for any other style guide: + +```{r} +lint( + text = "my.var <- 1L", + linters = object_name_linter(styles = "dotted.case") +) +``` + +- **Common mistakes** + +One category of linters help you detect some common mistakes statically and provide early feedback. + +For example, duplicate arguments in function calls can sometimes cause errors: + +```{r, error=TRUE} +mean(x = 1:5, x = 2:3) +``` + +But `duplicate_argument_linter()` can check for this statically: + ```{r} lint( - text = "1:3 %>% mean %>% as.character", - linters = pipe_call_linter() + text = "mean(x = 1:5, x = 2:3)", + linters = duplicate_argument_linter() ) ``` +Even for cases where there will not be a run-time error, this linter explicitly discourages duplicate arguments. + +```{r} +lint( + text = "list(x = TRUE, x = FALSE)", + linters = duplicate_argument_linter() +) +``` + +This is because duplicate-named objects can be hard to work with programmatically and should typically be avoided. + +```{r} +l <- list(x = TRUE, x = FALSE) +l[["x"]] +``` + # Benefits of using `{lintr}` There are several benefits to using `{lintr}` to analyze and improve R code. One of the most obvious is that it can help users identify and fix problems in their code, which can save time and effort during the development process. By catching issues early on, `{lintr}` can help prevent bugs and other issues from creeping into code, which can save time and effort when it comes to debugging and testing. @@ -158,6 +204,10 @@ In conclusion, `{lintr}` is a valuable tool for R users to help improve the qual The authors declare no conflict of interest. +# Funding + +This work was not financially supported by any of the affiliated institutions of the authors. + # Acknowledgments The `{lintr}` would not be possible without the immense work of the [R-core team](https://www.r-project.org/contributors.html) who maintain the R language and we are deeply indebted to them. We are also grateful to all contributors to the `{lintr}` package. diff --git a/paper/paper.md b/paper/paper.md index fa91593ec..73be7dac5 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -23,7 +23,7 @@ affiliations: - index: 3 name: Mathematisches Institut der Heinrich-Heine-Universität Düsseldorf - index: 4 - name: Center for Humans and Machines, Max Planck Institute for Human Development, Berlin, Germany + name: Preisenergie GmbH, Munich, Germany output: md_document: variant: "markdown" @@ -158,21 +158,77 @@ lint( `{tidyverse}` [@Wickham2019] ecosystem of R packages. This style of coding has been outlined in the tidyverse style guide [@Wickham2023]. +For example, the style guide recommends using snake_case for +identifiers: + +``` r +lint( + text = "MyVar <- 1L", + linters = object_name_linter() +) +#> :1:1: style: [object_name_linter] Variable and +#> function name style should match snake_case or symbols. +#> MyVar <- 1L +#> ^~~~~ +``` + +But, as with other linters in this category, the linter can be +customized for any other style guide: + ``` r lint( - text = "1:3 %>% mean %>% as.character", - linters = pipe_call_linter() + text = "my.var <- 1L", + linters = object_name_linter(styles = "dotted.case") ) -#> :1:9: warning: [pipe_call_linter] Use explicit calls -#> in magrittr pipes, i.e., `a %>% foo` should be `a %>% -#> foo()`. -#> 1:3 %>% mean %>% as.character -#> ^~~~ -#> :1:18: warning: [pipe_call_linter] Use explicit calls -#> in magrittr pipes, i.e., `a %>% foo` should be `a %>% -#> foo()`. -#> 1:3 %>% mean %>% as.character -#> ^~~~~~~~~~~~ +``` + +- **Common mistakes** + +One category of linters help you detect some common mistakes statically +and provide early feedback. + +For example, duplicate arguments in function calls can sometimes cause +errors: + +``` r +mean(x = 1:5, x = 2:3) +#> Error in mean(x = 1:5, x = 2:3): formal argument "x" matched by multiple actual arguments +``` + +But `duplicate_argument_linter()` can check for this statically: + +``` r +lint( + text = "mean(x = 1:5, x = 2:3)", + linters = duplicate_argument_linter() +) +#> :1:15: warning: [duplicate_argument_linter] Duplicate +#> arguments in function call. +#> mean(x = 1:5, x = 2:3) +#> ^ +``` + +Even for cases where there will not be a run-time error, this linter +explicitly discourages duplicate arguments. + +``` r +lint( + text = "list(x = TRUE, x = FALSE)", + linters = duplicate_argument_linter() +) +#> :1:16: warning: [duplicate_argument_linter] Duplicate +#> arguments in function call. +#> list(x = TRUE, x = FALSE) +#> ^ +``` + +This is because duplicate-named objects can be hard to work with +programmatically and should typically be avoided. + +``` r +l <- list(x = TRUE, x = FALSE) +l[["x"]] +#> [1] TRUE ``` # Benefits of using `{lintr}` @@ -227,6 +283,11 @@ enhancements. The authors declare no conflict of interest. +# Funding + +This work was not financially supported by any of the affiliated +institutions of the authors. + # Acknowledgments The `{lintr}` would not be possible without the immense work of the From eca00b1adfba21271750fc00d55d1fea2346f62b Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Thu, 2 May 2024 08:59:28 -0700 Subject: [PATCH 27/41] michael has an orcid somehow :) --- paper/paper.Rmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/paper/paper.Rmd b/paper/paper.Rmd index 6bc7a97b2..9a6db96e7 100644 --- a/paper/paper.Rmd +++ b/paper/paper.Rmd @@ -8,7 +8,7 @@ authors: orcid: ~ - name: Michael Chirico affiliation: 2 - orcid: ~ + orcid: 0000-0003-0787-087X - name: Alexander Rosenstock affiliation: 3 orcid: ~ From e900fbcf5163d7414771c98ba67791b5b325ee7d Mon Sep 17 00:00:00 2001 From: Indrajeet Patil Date: Thu, 2 May 2024 23:49:30 +0530 Subject: [PATCH 28/41] Apply Michael's suggestions from code review Co-authored-by: Michael Chirico --- paper/paper.Rmd | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/paper/paper.Rmd b/paper/paper.Rmd index 9a6db96e7..66fff4a67 100644 --- a/paper/paper.Rmd +++ b/paper/paper.Rmd @@ -50,7 +50,7 @@ withr::local_options(list( # Statement of Need -R is an interpreted, dynamically typed programming language [@base2023]. It is a popular choice for statistical analysis and visualization, and is used by a wide range of researchers and data scientists. The `{lintr}` package is an open-source R package that provides static code analysis to check for a variety of common problems related to readability, efficiency, consistency, style, etc. In particular, it enforces the tidyverse style guide [@Wickham2023]. It is designed to be easy to use and integrate into existing workflows, and can be used as part of an automated build or continuous integration process. `{lintr}` also integrates with a number of popular IDEs and text editors, such as RStudio and Visual Studio Code, making it convenient for users to run `{lintr}` checks on their code as they work. +R is an interpreted, dynamically-typed programming language [@base2023]. It is a popular choice for statistical analysis and visualization, and is used by a wide range of researchers and data scientists. The `{lintr}` package is an open-source R package that provides static code analysis to check for a variety of common problems related to readability, efficiency, consistency, style, etc. In particular, by default it enforces the tidyverse style guide [@Wickham2023]. It is designed to be easy to use and integrate into existing workflows, and can be used as part of an automated build or continuous integration process. `{lintr}` also integrates with a number of popular IDEs and text editors, such as RStudio and Visual Studio Code, making it convenient for users to run `{lintr}` checks on their code as they work. # Features @@ -70,7 +70,7 @@ We will showcase one linter for each kind of common problem found in R code. `{lintr}` offers linters that can detect problematic antipatterns and suggest alternatives that follow best practices. -For example, expressions like `ifelse(x, TRUE, FALSE)` and `ifelse(x, FALSE, TRUE)` are redundant; just `x` or `!x` suffice in R code where logical vectors are a core data structure. The `redundant_ifelse_linter()` linter detects such problematic usages. +For example, expressions like `ifelse(x, TRUE, FALSE)` and `ifelse(x, FALSE, TRUE)` are redundant; just `x` or `!x` suffice in R code where logical vectors are a core data structure. The `redundant_ifelse_linter()` linter detects such discouraged usages. ```{r} lint( @@ -83,7 +83,7 @@ lint( Sometimes the users might not be aware of a more efficient way offered by R for carrying out a computation. `{lintr}` offers linters to improve code efficiency by avoiding common inefficient patterns. -For example, the `any_is_na_linter()` linter detects usages of `any(is.na(x))` and suggests `anyNA(x)` as a more efficient alternative to detect presence *any* of missing values. +For example, the `any_is_na_linter()` linter detects usages of `any(is.na(x))` and suggests `anyNA(x)` as a more efficient alternative to detect presence of *any* missing values. ```{r} lint( @@ -147,9 +147,9 @@ lint( - **Common mistakes** -One category of linters help you detect some common mistakes statically and provide early feedback. +One category of linters helps you detect some common mistakes statically and provide early feedback. -For example, duplicate arguments in function calls can sometimes cause errors: +For example, duplicate arguments in function calls can sometimes cause run-time errors: ```{r, error=TRUE} mean(x = 1:5, x = 2:3) @@ -164,7 +164,7 @@ lint( ) ``` -Even for cases where there will not be a run-time error, this linter explicitly discourages duplicate arguments. +Even for cases where duplicate arguments are not an error, this linter explicitly discourages duplicate arguments. ```{r} lint( @@ -173,7 +173,7 @@ lint( ) ``` -This is because duplicate-named objects can be hard to work with programmatically and should typically be avoided. +This is because objects with duplicated names objects can be hard to work with programmatically and should typically be avoided. ```{r} l <- list(x = TRUE, x = FALSE) @@ -184,13 +184,13 @@ l[["x"]] There are several benefits to using `{lintr}` to analyze and improve R code. One of the most obvious is that it can help users identify and fix problems in their code, which can save time and effort during the development process. By catching issues early on, `{lintr}` can help prevent bugs and other issues from creeping into code, which can save time and effort when it comes to debugging and testing. -Another benefit of `{lintr}` is that it can help users write more readable and maintainable code. By enforcing a consistent style and highlighting potential issues, `{lintr}` can help users write code that is easier to understand and work with. This is especially important for larger projects or teams, where multiple contributors may be working on the same codebase and it is important to ensure that code is easy to follow and understand. +Another benefit of `{lintr}` is that it can help users write more readable and maintainable code. By enforcing a consistent style and highlighting potential issues, `{lintr}` can help users write code that is easier to understand and work with. This is especially important for larger projects or teams, where multiple contributors may be working on the same codebase and it is important to ensure that code is easy to follow and understand, particularly when frequently switching context among code primarily authored by different people. `{lintr}` is designed for extensibility by allowing users to easily create custom linting rules, enabling flexible and tailored code analysis to suit specific coding conventions, style guides, and project requirements. It can also be a useful tool for teaching and learning R. By providing feedback on code style and potential issues, it can help users learn good coding practices and improve their skills over time. This can be especially useful for beginners, who may not yet be familiar with all of the best practices for writing R code. -Finally, `{lintr}` has had a large and active user community since its birth in 2014 which has contributed to its rapid development, maintenance, and adoption. At the time of writing, `{lintr}` is in a mature and stable state and therefore provides a reliable API that is unlikely to feature any breaking changes. +Finally, `{lintr}` has had a large and active user community since its birth in 2014 which has contributed to its rapid development, maintenance, and adoption. At the time of writing, `{lintr}` is in a mature and stable state and therefore provides a reliable API that is unlikely to feature fundamental breaking changes. # Conclusion From 02621e283d5c2fef658476f1befbd7eb423ac39b Mon Sep 17 00:00:00 2001 From: Indrajeet Patil Date: Thu, 2 May 2024 20:20:36 +0200 Subject: [PATCH 29/41] reknit --- paper/paper.md | 51 +++++++++++++++++++++++++------------------------- 1 file changed, 26 insertions(+), 25 deletions(-) diff --git a/paper/paper.md b/paper/paper.md index 73be7dac5..3f611be26 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -1,6 +1,6 @@ --- title: "Static Code Analysis for R" -date: "2023-12-06" +date: "2024-05-02" tags: ["R", "linter", "tidyverse"] authors: - name: Jim Hester @@ -8,7 +8,7 @@ authors: orcid: ~ - name: Michael Chirico affiliation: 2 - orcid: ~ + orcid: 0000-0003-0787-087X - name: Alexander Rosenstock affiliation: 3 orcid: ~ @@ -36,28 +36,28 @@ link-citations: yes # Statement of Need -R is an interpreted, dynamically typed programming language [@base2023]. +R is an interpreted, dynamically-typed programming language [@base2023]. It is a popular choice for statistical analysis and visualization, and is used by a wide range of researchers and data scientists. The `{lintr}` package is an open-source R package that provides static code analysis to check for a variety of common problems related to -readability, efficiency, consistency, style, etc. In particular, it -enforces the tidyverse style guide [@Wickham2023]. It is designed to be -easy to use and integrate into existing workflows, and can be used as -part of an automated build or continuous integration process. `{lintr}` -also integrates with a number of popular IDEs and text editors, such as -RStudio and Visual Studio Code, making it convenient for users to run -`{lintr}` checks on their code as they work. +readability, efficiency, consistency, style, etc. In particular, by +default it enforces the tidyverse style guide [@Wickham2023]. It is +designed to be easy to use and integrate into existing workflows, and +can be used as part of an automated build or continuous integration +process. `{lintr}` also integrates with a number of popular IDEs and +text editors, such as RStudio and Visual Studio Code, making it +convenient for users to run `{lintr}` checks on their code as they work. # Features -As of this writing, `{lintr}` offers 115 linters. +As of this writing, `{lintr}` offers 113 linters. ``` r library(lintr) length(all_linters()) -#> [1] 115 +#> [1] 113 ``` Naturally, we can't discuss all of them here. To see details about all @@ -75,7 +75,7 @@ suggest alternatives that follow best practices. For example, expressions like `ifelse(x, TRUE, FALSE)` and `ifelse(x, FALSE, TRUE)` are redundant; just `x` or `!x` suffice in R code where logical vectors are a core data structure. The -`redundant_ifelse_linter()` linter detects such problematic usages. +`redundant_ifelse_linter()` linter detects such discouraged usages. ``` r lint( @@ -97,7 +97,7 @@ code efficiency by avoiding common inefficient patterns. For example, the `any_is_na_linter()` linter detects usages of `any(is.na(x))` and suggests `anyNA(x)` as a more efficient alternative -to detect presence *any* of missing values. +to detect presence of *any* missing values. ``` r lint( @@ -184,11 +184,11 @@ lint( - **Common mistakes** -One category of linters help you detect some common mistakes statically +One category of linters helps you detect some common mistakes statically and provide early feedback. For example, duplicate arguments in function calls can sometimes cause -errors: +run-time errors: ``` r mean(x = 1:5, x = 2:3) @@ -202,13 +202,13 @@ lint( text = "mean(x = 1:5, x = 2:3)", linters = duplicate_argument_linter() ) -#> :1:15: warning: [duplicate_argument_linter] Duplicate -#> arguments in function call. +#> :1:15: warning: [duplicate_argument_linter] Avoid +#> duplicate arguments in function calls. #> mean(x = 1:5, x = 2:3) #> ^ ``` -Even for cases where there will not be a run-time error, this linter +Even for cases where duplicate arguments are not an error, this linter explicitly discourages duplicate arguments. ``` r @@ -216,14 +216,14 @@ lint( text = "list(x = TRUE, x = FALSE)", linters = duplicate_argument_linter() ) -#> :1:16: warning: [duplicate_argument_linter] Duplicate -#> arguments in function call. +#> :1:16: warning: [duplicate_argument_linter] Avoid +#> duplicate arguments in function calls. #> list(x = TRUE, x = FALSE) #> ^ ``` -This is because duplicate-named objects can be hard to work with -programmatically and should typically be avoided. +This is because objects with duplicated names objects can be hard to +work with programmatically and should typically be avoided. ``` r l <- list(x = TRUE, x = FALSE) @@ -246,7 +246,8 @@ highlighting potential issues, `{lintr}` can help users write code that is easier to understand and work with. This is especially important for larger projects or teams, where multiple contributors may be working on the same codebase and it is important to ensure that code is easy to -follow and understand. +follow and understand, particularly when frequently switching context +among code primarily authored by different people. `{lintr}` is designed for extensibility by allowing users to easily create custom linting rules, enabling flexible and tailored code @@ -263,7 +264,7 @@ Finally, `{lintr}` has had a large and active user community since its birth in 2014 which has contributed to its rapid development, maintenance, and adoption. At the time of writing, `{lintr}` is in a mature and stable state and therefore provides a reliable API that is -unlikely to feature any breaking changes. +unlikely to feature fundamental breaking changes. # Conclusion From 754e0cc8dd8b5c6caf30201648a37113de154a84 Mon Sep 17 00:00:00 2001 From: Indrajeet Patil Date: Thu, 2 May 2024 20:45:35 +0200 Subject: [PATCH 30/41] add chunk labels --- paper/paper.Rmd | 29 +++++++++++++++-------------- paper/paper.md | 9 ++++++++- 2 files changed, 23 insertions(+), 15 deletions(-) diff --git a/paper/paper.Rmd b/paper/paper.Rmd index 66fff4a67..306f73f22 100644 --- a/paper/paper.Rmd +++ b/paper/paper.Rmd @@ -34,7 +34,7 @@ csl: apa.csl link-citations: yes --- -```{r, warning=FALSE, message=FALSE, echo=FALSE} +```{r setup, warning=FALSE, message=FALSE, echo=FALSE} knitr::opts_chunk$set( collapse = TRUE, out.width = "100%", @@ -56,7 +56,7 @@ R is an interpreted, dynamically-typed programming language [@base2023]. It is a As of this writing, `{lintr}` offers `r length(all_linters())` linters. -```{r} +```{r all_linters} library(lintr) length(all_linters()) @@ -72,7 +72,7 @@ We will showcase one linter for each kind of common problem found in R code. For example, expressions like `ifelse(x, TRUE, FALSE)` and `ifelse(x, FALSE, TRUE)` are redundant; just `x` or `!x` suffice in R code where logical vectors are a core data structure. The `redundant_ifelse_linter()` linter detects such discouraged usages. -```{r} +```{r redundant_ifelse_linter} lint( text = "ifelse(x >= 2.5, TRUE, FALSE)", linters = redundant_ifelse_linter() @@ -85,7 +85,7 @@ Sometimes the users might not be aware of a more efficient way offered by R for For example, the `any_is_na_linter()` linter detects usages of `any(is.na(x))` and suggests `anyNA(x)` as a more efficient alternative to detect presence of *any* missing values. -```{r} +```{r any_is_na_linter_with_lint} lint( text = "any(is.na(x), na.rm = TRUE)", linters = any_is_na_linter() @@ -94,7 +94,7 @@ lint( `anyNA()` in R is more efficient than `any(is.na())` because it stops execution once a missing value is found, while `is.na()` evaluates the entire vector. -```{r} +```{r any_is_na_linter_without_lint} lint( text = "anyNA(x)", linters = any_is_na_linter() @@ -107,7 +107,7 @@ Coders spend significantly more time reading than writing code [@mcconnell2004co `{lintr}` provides a number of linters that suggest more readable alternatives. For example, `comparison_negation_linter()` blocks usages like `!(x == y)` where a direct relational operator is appropriate. -```{r} +```{r comparison_negation_linter_with_lint} lint( text = "!x == 2", linters = comparison_negation_linter() @@ -116,7 +116,7 @@ lint( The more readable alternative here uses `!=`: -```{r} +```{r comparison_negation_linter_without_lint} lint( text = "x != 2", linters = comparison_negation_linter() @@ -129,7 +129,7 @@ lint( For example, the style guide recommends using snake_case for identifiers: -```{r} +```{r object_name_linter} lint( text = "MyVar <- 1L", linters = object_name_linter() @@ -138,7 +138,7 @@ lint( But, as with other linters in this category, the linter can be customized for any other style guide: -```{r} +```{r object_name_linter_with_custom_style} lint( text = "my.var <- 1L", linters = object_name_linter(styles = "dotted.case") @@ -151,13 +151,13 @@ One category of linters helps you detect some common mistakes statically and pro For example, duplicate arguments in function calls can sometimes cause run-time errors: -```{r, error=TRUE} +```{r duplicate_args_error_example, error=TRUE} mean(x = 1:5, x = 2:3) ``` But `duplicate_argument_linter()` can check for this statically: -```{r} +```{r duplicate_argument_linter_with_lint} lint( text = "mean(x = 1:5, x = 2:3)", linters = duplicate_argument_linter() @@ -166,7 +166,7 @@ lint( Even for cases where duplicate arguments are not an error, this linter explicitly discourages duplicate arguments. -```{r} +```{r duplicate_argument_linter_without_lint} lint( text = "list(x = TRUE, x = FALSE)", linters = duplicate_argument_linter() @@ -175,9 +175,10 @@ lint( This is because objects with duplicated names objects can be hard to work with programmatically and should typically be avoided. -```{r} +```{r duplicate_arguments_example} l <- list(x = TRUE, x = FALSE) -l[["x"]] +l["x"] +l[names(l) == "x"] ``` # Benefits of using `{lintr}` diff --git a/paper/paper.md b/paper/paper.md index 3f611be26..89fdb17fd 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -227,8 +227,15 @@ work with programmatically and should typically be avoided. ``` r l <- list(x = TRUE, x = FALSE) -l[["x"]] +l["x"] +#> $x #> [1] TRUE +l[names(l) == "x"] +#> $x +#> [1] TRUE +#> +#> $x +#> [1] FALSE ``` # Benefits of using `{lintr}` From eaddf190256c57a4953d81d9baf9b47441487491 Mon Sep 17 00:00:00 2001 From: Indrajeet Patil Date: Tue, 7 May 2024 21:03:37 +0200 Subject: [PATCH 31/41] move customizability segment to later --- paper/paper.Rmd | 22 ++++++++++------------ paper/paper.md | 39 +++++++++++++++++++-------------------- 2 files changed, 29 insertions(+), 32 deletions(-) diff --git a/paper/paper.Rmd b/paper/paper.Rmd index 306f73f22..33f6fee28 100644 --- a/paper/paper.Rmd +++ b/paper/paper.Rmd @@ -136,15 +136,6 @@ lint( ) ``` -But, as with other linters in this category, the linter can be customized for any other style guide: - -```{r object_name_linter_with_custom_style} -lint( - text = "my.var <- 1L", - linters = object_name_linter(styles = "dotted.case") -) -``` - - **Common mistakes** One category of linters helps you detect some common mistakes statically and provide early feedback. @@ -187,7 +178,14 @@ There are several benefits to using `{lintr}` to analyze and improve R code. One Another benefit of `{lintr}` is that it can help users write more readable and maintainable code. By enforcing a consistent style and highlighting potential issues, `{lintr}` can help users write code that is easier to understand and work with. This is especially important for larger projects or teams, where multiple contributors may be working on the same codebase and it is important to ensure that code is easy to follow and understand, particularly when frequently switching context among code primarily authored by different people. -`{lintr}` is designed for extensibility by allowing users to easily create custom linting rules, enabling flexible and tailored code analysis to suit specific coding conventions, style guides, and project requirements. +`{lintr}` is designed for extensibility by allowing users to easily create custom linting rules, enabling flexible and tailored code analysis to suit specific coding conventions, style guides, and project requirements. For example, although tidyverse style guide prefers snake_case for identifiers, if a project's conventions require it, the relevant linter can be customized to support it: + +```{r object_name_linter_with_custom_style} +lint( + text = "my.var <- 1L", + linters = object_name_linter(styles = "dotted.case") +) +``` It can also be a useful tool for teaching and learning R. By providing feedback on code style and potential issues, it can help users learn good coding practices and improve their skills over time. This can be especially useful for beginners, who may not yet be familiar with all of the best practices for writing R code. @@ -195,7 +193,7 @@ Finally, `{lintr}` has had a large and active user community since its birth in # Conclusion -In conclusion, `{lintr}` is a valuable tool for R users to help improve the quality and reliability of their code. Its static code analysis capabilities, combined with its flexibility and ease of use, make it relevant and valuable for a wide range of applications. +`{lintr}` is a valuable tool for R users to help improve the quality and reliability of their code. Its static code analysis capabilities, combined with its flexibility and ease of use, make it relevant and valuable for a wide range of applications. # Licensing and Availability @@ -211,6 +209,6 @@ This work was not financially supported by any of the affiliated institutions of # Acknowledgments -The `{lintr}` would not be possible without the immense work of the [R-core team](https://www.r-project.org/contributors.html) who maintain the R language and we are deeply indebted to them. We are also grateful to all contributors to the `{lintr}` package. +`{lintr}` would not be possible without the immense work of the [R-core team](https://www.r-project.org/contributors.html) who maintain the R language and we are deeply indebted to them. We are also grateful to all contributors to `{lintr}`. # References diff --git a/paper/paper.md b/paper/paper.md index 89fdb17fd..7a88e9eb9 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -1,6 +1,6 @@ --- title: "Static Code Analysis for R" -date: "2024-05-02" +date: "2024-05-07" tags: ["R", "linter", "tidyverse"] authors: - name: Jim Hester @@ -172,16 +172,6 @@ lint( #> ^~~~~ ``` -But, as with other linters in this category, the linter can be -customized for any other style guide: - -``` r -lint( - text = "my.var <- 1L", - linters = object_name_linter(styles = "dotted.case") -) -``` - - **Common mistakes** One category of linters helps you detect some common mistakes statically @@ -259,7 +249,16 @@ among code primarily authored by different people. `{lintr}` is designed for extensibility by allowing users to easily create custom linting rules, enabling flexible and tailored code analysis to suit specific coding conventions, style guides, and project -requirements. +requirements. For example, although tidyverse style guide prefers +snake_case for identifiers, if a project's conventions require it, the +relevant linter can be customized to support it: + +``` r +lint( + text = "my.var <- 1L", + linters = object_name_linter(styles = "dotted.case") +) +``` It can also be a useful tool for teaching and learning R. By providing feedback on code style and potential issues, it can help users learn @@ -275,10 +274,10 @@ unlikely to feature fundamental breaking changes. # Conclusion -In conclusion, `{lintr}` is a valuable tool for R users to help improve -the quality and reliability of their code. Its static code analysis -capabilities, combined with its flexibility and ease of use, make it -relevant and valuable for a wide range of applications. +`{lintr}` is a valuable tool for R users to help improve the quality and +reliability of their code. Its static code analysis capabilities, +combined with its flexibility and ease of use, make it relevant and +valuable for a wide range of applications. # Licensing and Availability @@ -298,9 +297,9 @@ institutions of the authors. # Acknowledgments -The `{lintr}` would not be possible without the immense work of the -[R-core team](https://www.r-project.org/contributors.html) who maintain -the R language and we are deeply indebted to them. We are also grateful -to all contributors to the `{lintr}` package. +`{lintr}` would not be possible without the immense work of the [R-core +team](https://www.r-project.org/contributors.html) who maintain the R +language and we are deeply indebted to them. We are also grateful to all +contributors to `{lintr}`. # References {#references .unnumbered} From 5bdc0e26729456a2369a0c10b4ea1cfa74f60eae Mon Sep 17 00:00:00 2001 From: Indrajeet Patil Date: Tue, 7 May 2024 21:33:47 +0200 Subject: [PATCH 32/41] Just create a new section to highlight extensibility --- paper/paper.Rmd | 13 ++++--------- paper/paper.md | 22 ++++++++-------------- 2 files changed, 12 insertions(+), 23 deletions(-) diff --git a/paper/paper.Rmd b/paper/paper.Rmd index 33f6fee28..a53cc4035 100644 --- a/paper/paper.Rmd +++ b/paper/paper.Rmd @@ -172,21 +172,16 @@ l["x"] l[names(l) == "x"] ``` +# Extensibility + +`{lintr}` is designed for extensibility by allowing users to easily create custom linting rules. By leveraging functions like `lintr::make_linter_from_xpath()`, users can tailor linters to match their project-specific coding standards, and not merely adhere to the tidyverse style guidelines. + # Benefits of using `{lintr}` There are several benefits to using `{lintr}` to analyze and improve R code. One of the most obvious is that it can help users identify and fix problems in their code, which can save time and effort during the development process. By catching issues early on, `{lintr}` can help prevent bugs and other issues from creeping into code, which can save time and effort when it comes to debugging and testing. Another benefit of `{lintr}` is that it can help users write more readable and maintainable code. By enforcing a consistent style and highlighting potential issues, `{lintr}` can help users write code that is easier to understand and work with. This is especially important for larger projects or teams, where multiple contributors may be working on the same codebase and it is important to ensure that code is easy to follow and understand, particularly when frequently switching context among code primarily authored by different people. -`{lintr}` is designed for extensibility by allowing users to easily create custom linting rules, enabling flexible and tailored code analysis to suit specific coding conventions, style guides, and project requirements. For example, although tidyverse style guide prefers snake_case for identifiers, if a project's conventions require it, the relevant linter can be customized to support it: - -```{r object_name_linter_with_custom_style} -lint( - text = "my.var <- 1L", - linters = object_name_linter(styles = "dotted.case") -) -``` - It can also be a useful tool for teaching and learning R. By providing feedback on code style and potential issues, it can help users learn good coding practices and improve their skills over time. This can be especially useful for beginners, who may not yet be familiar with all of the best practices for writing R code. Finally, `{lintr}` has had a large and active user community since its birth in 2014 which has contributed to its rapid development, maintenance, and adoption. At the time of writing, `{lintr}` is in a mature and stable state and therefore provides a reliable API that is unlikely to feature fundamental breaking changes. diff --git a/paper/paper.md b/paper/paper.md index 7a88e9eb9..e75c01766 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -228,6 +228,14 @@ l[names(l) == "x"] #> [1] FALSE ``` +# Extensibility + +`{lintr}` is designed for extensibility by allowing users to easily +create custom linting rules. By leveraging functions like +`lintr::make_linter_from_xpath()`, users can tailor linters to match +their project-specific coding standards, and not merely adhere to the +tidyverse style guidelines. + # Benefits of using `{lintr}` There are several benefits to using `{lintr}` to analyze and improve R @@ -246,20 +254,6 @@ the same codebase and it is important to ensure that code is easy to follow and understand, particularly when frequently switching context among code primarily authored by different people. -`{lintr}` is designed for extensibility by allowing users to easily -create custom linting rules, enabling flexible and tailored code -analysis to suit specific coding conventions, style guides, and project -requirements. For example, although tidyverse style guide prefers -snake_case for identifiers, if a project's conventions require it, the -relevant linter can be customized to support it: - -``` r -lint( - text = "my.var <- 1L", - linters = object_name_linter(styles = "dotted.case") -) -``` - It can also be a useful tool for teaching and learning R. By providing feedback on code style and potential issues, it can help users learn good coding practices and improve their skills over time. This can be From 2736b5270dff229beccd318b336fdb171a959d37 Mon Sep 17 00:00:00 2001 From: Indrajeet Patil Date: Tue, 7 May 2024 22:03:18 +0200 Subject: [PATCH 33/41] more on customization --- paper/paper.Rmd | 14 +++++++++++++- paper/paper.md | 21 +++++++++++++++++---- 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/paper/paper.Rmd b/paper/paper.Rmd index a53cc4035..ca4b6899b 100644 --- a/paper/paper.Rmd +++ b/paper/paper.Rmd @@ -174,7 +174,19 @@ l[names(l) == "x"] # Extensibility -`{lintr}` is designed for extensibility by allowing users to easily create custom linting rules. By leveraging functions like `lintr::make_linter_from_xpath()`, users can tailor linters to match their project-specific coding standards, and not merely adhere to the tidyverse style guidelines. +`{lintr}` is designed for extensibility by allowing users to easily create custom linting rules. +There are two main ways to customize it: + + - Use additional arguments in existing linters. For example, although tidyverse style guide prefers snake_case for identifiers, if a project's conventions require it, the relevant linter can be customized to support it: + + ```{r object_name_linter_with_custom_style} + lint( + text = "my.var <- 1L", + linters = object_name_linter(styles = "dotted.case") + ) + ``` + + - Create new linters (by leveraging functions like `lintr::make_linter_from_xpath()`) tailored to match project-specific coding standards. # Benefits of using `{lintr}` diff --git a/paper/paper.md b/paper/paper.md index e75c01766..d1ffef41d 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -231,10 +231,23 @@ l[names(l) == "x"] # Extensibility `{lintr}` is designed for extensibility by allowing users to easily -create custom linting rules. By leveraging functions like -`lintr::make_linter_from_xpath()`, users can tailor linters to match -their project-specific coding standards, and not merely adhere to the -tidyverse style guidelines. +create custom linting rules. There are two main ways to customize it: + +- Use additional arguments in existing linters. For example, although + tidyverse style guide prefers snake_case for identifiers, if a + project's conventions require it, the relevant linter can be + customized to support it: + +``` r +lint( + text = "my.var <- 1L", + linters = object_name_linter(styles = "dotted.case") +) +``` + +- Create new linters (by leveraging functions like + `lintr::make_linter_from_xpath()`) tailored to match + project-specific coding standards. # Benefits of using `{lintr}` From cba907b274f8368b6934d5929791aebe6f3a6dc7 Mon Sep 17 00:00:00 2001 From: Indrajeet Patil Date: Tue, 7 May 2024 22:40:17 +0200 Subject: [PATCH 34/41] add citation to wiki page --- paper/paper.Rmd | 2 +- paper/paper.bib | 8 ++++++++ paper/paper.md | 17 +++++++++-------- 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/paper/paper.Rmd b/paper/paper.Rmd index ca4b6899b..516837206 100644 --- a/paper/paper.Rmd +++ b/paper/paper.Rmd @@ -50,7 +50,7 @@ withr::local_options(list( # Statement of Need -R is an interpreted, dynamically-typed programming language [@base2023]. It is a popular choice for statistical analysis and visualization, and is used by a wide range of researchers and data scientists. The `{lintr}` package is an open-source R package that provides static code analysis to check for a variety of common problems related to readability, efficiency, consistency, style, etc. In particular, by default it enforces the tidyverse style guide [@Wickham2023]. It is designed to be easy to use and integrate into existing workflows, and can be used as part of an automated build or continuous integration process. `{lintr}` also integrates with a number of popular IDEs and text editors, such as RStudio and Visual Studio Code, making it convenient for users to run `{lintr}` checks on their code as they work. +R is an interpreted, dynamically-typed programming language [@base2023]. It is a popular choice for statistical analysis and visualization, and is used by a wide range of researchers and data scientists. The `{lintr}` package is an open-source R package that provides static code analysis [@enwiki:1218663830] to check for a variety of common problems related to readability, efficiency, consistency, style, etc. In particular, by default it enforces the tidyverse style guide [@Wickham2023]. It is designed to be easy to use and integrate into existing workflows, and can be used as part of an automated build or continuous integration process. `{lintr}` also integrates with a number of popular IDEs and text editors, such as RStudio and Visual Studio Code, making it convenient for users to run `{lintr}` checks on their code as they work. # Features diff --git a/paper/paper.bib b/paper/paper.bib index ff78d6c64..f9578f0c9 100644 --- a/paper/paper.bib +++ b/paper/paper.bib @@ -31,3 +31,11 @@ @book{mcconnell2004code year={2004}, publisher={Pearson Education} } + + @misc{ enwiki:1218663830, + author = "{Wikipedia contributors}", + title = "Static program analysis --- {Wikipedia}{,} The Free Encyclopedia", + year = "2024", + url = "https://en.wikipedia.org/w/index.php?title=Static_program_analysis&oldid=1218663830", + note = "[Online; accessed 7-May-2024]" + } diff --git a/paper/paper.md b/paper/paper.md index d1ffef41d..ce2cc9ecd 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -40,14 +40,15 @@ R is an interpreted, dynamically-typed programming language [@base2023]. It is a popular choice for statistical analysis and visualization, and is used by a wide range of researchers and data scientists. The `{lintr}` package is an open-source R package that provides static code -analysis to check for a variety of common problems related to -readability, efficiency, consistency, style, etc. In particular, by -default it enforces the tidyverse style guide [@Wickham2023]. It is -designed to be easy to use and integrate into existing workflows, and -can be used as part of an automated build or continuous integration -process. `{lintr}` also integrates with a number of popular IDEs and -text editors, such as RStudio and Visual Studio Code, making it -convenient for users to run `{lintr}` checks on their code as they work. +analysis [@enwiki:1218663830] to check for a variety of common problems +related to readability, efficiency, consistency, style, etc. In +particular, by default it enforces the tidyverse style guide +[@Wickham2023]. It is designed to be easy to use and integrate into +existing workflows, and can be used as part of an automated build or +continuous integration process. `{lintr}` also integrates with a number +of popular IDEs and text editors, such as RStudio and Visual Studio +Code, making it convenient for users to run `{lintr}` checks on their +code as they work. # Features From ab66e6f6315d2105dccfec6a158f17b9339d922f Mon Sep 17 00:00:00 2001 From: Indrajeet Patil Date: Wed, 8 May 2024 02:12:32 +0530 Subject: [PATCH 35/41] Update paper/paper.Rmd [skip ci] Co-authored-by: Michael Chirico --- paper/paper.Rmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/paper/paper.Rmd b/paper/paper.Rmd index 516837206..3c265ed3c 100644 --- a/paper/paper.Rmd +++ b/paper/paper.Rmd @@ -186,7 +186,7 @@ There are two main ways to customize it: ) ``` - - Create new linters (by leveraging functions like `lintr::make_linter_from_xpath()`) tailored to match project-specific coding standards. + - Create new linters (by leveraging functions like `lintr::make_linter_from_xpath()`) tailored to match project- or organization-specific coding standards. # Benefits of using `{lintr}` From eb9ddaeb6ecaba564999d292f047a8ac5a7349c9 Mon Sep 17 00:00:00 2001 From: Indrajeet Patil Date: Wed, 8 May 2024 02:12:50 +0530 Subject: [PATCH 36/41] Update paper/paper.Rmd [skip ci] Co-authored-by: Michael Chirico --- paper/paper.Rmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/paper/paper.Rmd b/paper/paper.Rmd index 3c265ed3c..675a2d1d9 100644 --- a/paper/paper.Rmd +++ b/paper/paper.Rmd @@ -114,7 +114,7 @@ lint( ) ``` -The more readable alternative here uses `!=`: +Note also the complicated operator precedence. The more readable alternative here uses `!=`: ```{r comparison_negation_linter_without_lint} lint( From eebfe78b8ad1a6424f6f404037efcfc596697715 Mon Sep 17 00:00:00 2001 From: Indrajeet Patil Date: Tue, 7 May 2024 22:50:23 +0200 Subject: [PATCH 37/41] consistently use with-without lint pairing [skip ci] --- paper/paper.Rmd | 18 ++++++++++++++++-- paper/paper.md | 21 ++++++++++++++++++--- 2 files changed, 34 insertions(+), 5 deletions(-) diff --git a/paper/paper.Rmd b/paper/paper.Rmd index 675a2d1d9..c9ab0a031 100644 --- a/paper/paper.Rmd +++ b/paper/paper.Rmd @@ -72,13 +72,20 @@ We will showcase one linter for each kind of common problem found in R code. For example, expressions like `ifelse(x, TRUE, FALSE)` and `ifelse(x, FALSE, TRUE)` are redundant; just `x` or `!x` suffice in R code where logical vectors are a core data structure. The `redundant_ifelse_linter()` linter detects such discouraged usages. -```{r redundant_ifelse_linter} +```{r redundant_ifelse_linter_with_lint} lint( text = "ifelse(x >= 2.5, TRUE, FALSE)", linters = redundant_ifelse_linter() ) ``` +```{r redundant_ifelse_linter_without_lint} +lint( + text = "x >= 2.5", + linters = redundant_ifelse_linter() +) +``` + - **Efficiency** Sometimes the users might not be aware of a more efficient way offered by R for carrying out a computation. `{lintr}` offers linters to improve code efficiency by avoiding common inefficient patterns. @@ -129,13 +136,20 @@ lint( For example, the style guide recommends using snake_case for identifiers: -```{r object_name_linter} +```{r object_name_linter_with_lint} lint( text = "MyVar <- 1L", linters = object_name_linter() ) ``` +```{r object_name_linter_without_lint} +lint( + text = "my_var <- 1L", + linters = object_name_linter() +) +``` + - **Common mistakes** One category of linters helps you detect some common mistakes statically and provide early feedback. diff --git a/paper/paper.md b/paper/paper.md index ce2cc9ecd..374b39796 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -90,6 +90,13 @@ lint( #> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ``` +``` r +lint( + text = "x >= 2.5", + linters = redundant_ifelse_linter() +) +``` + - **Efficiency** Sometimes the users might not be aware of a more efficient way offered @@ -144,7 +151,8 @@ lint( #> ^~~~~~~ ``` -The more readable alternative here uses `!=`: +Note also the complicated operator precedence. The more readable +alternative here uses `!=`: ``` r lint( @@ -173,6 +181,13 @@ lint( #> ^~~~~ ``` +``` r +lint( + text = "my_var <- 1L", + linters = object_name_linter() +) +``` + - **Common mistakes** One category of linters helps you detect some common mistakes statically @@ -247,8 +262,8 @@ lint( ``` - Create new linters (by leveraging functions like - `lintr::make_linter_from_xpath()`) tailored to match - project-specific coding standards. + `lintr::make_linter_from_xpath()`) tailored to match project- or + organization-specific coding standards. # Benefits of using `{lintr}` From a4151a1d5e71e22a332379eb86e29f723b5a46be Mon Sep 17 00:00:00 2001 From: Indrajeet Patil Date: Sat, 11 May 2024 07:41:46 +0200 Subject: [PATCH 38/41] use latest, blazingly fast upload artifact action --- .github/workflows/draft-pdf.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/draft-pdf.yml b/.github/workflows/draft-pdf.yml index ef1b55151..d72255cdc 100644 --- a/.github/workflows/draft-pdf.yml +++ b/.github/workflows/draft-pdf.yml @@ -21,7 +21,7 @@ jobs: paper-path: paper/paper.md - name: Upload - uses: actions/upload-artifact@v1 + uses: actions/upload-artifact@v4 with: name: paper # This is the output path where Pandoc will write the compiled From 96302a13604bdef7800f6ed06fe5d45e92ec45d5 Mon Sep 17 00:00:00 2001 From: Indrajeet Patil Date: Mon, 27 May 2024 21:07:33 +0200 Subject: [PATCH 39/41] authors: Jim first, everyone else alphabetical --- paper/paper.Rmd | 15 +++++++++++++-- paper/paper.md | 20 +++++++++++++++++--- 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/paper/paper.Rmd b/paper/paper.Rmd index c9ab0a031..a3ae24fb3 100644 --- a/paper/paper.Rmd +++ b/paper/paper.Rmd @@ -6,15 +6,24 @@ authors: - name: Jim Hester affiliation: 1 orcid: ~ + - name: Florent Angly + affiliation: ~ + orcid: ~ - name: Michael Chirico affiliation: 2 orcid: 0000-0003-0787-087X - - name: Alexander Rosenstock - affiliation: 3 + - name: Russ Hyde + affiliation: 5 + orcid: ~ + - name: Ren Kun + affiliation: ~ orcid: ~ - name: Indrajeet Patil orcid: 0000-0003-1995-6531 affiliation: 4 + - name: Alexander Rosenstock + affiliation: 3 + orcid: ~ affiliations: - index: 1 name: Netflix @@ -24,6 +33,8 @@ affiliations: name: Mathematisches Institut der Heinrich-Heine-Universität Düsseldorf - index: 4 name: Preisenergie GmbH, Munich, Germany + - index: 5 + name: Jumping Rivers output: md_document: variant: "markdown" diff --git a/paper/paper.md b/paper/paper.md index 374b39796..466f29d70 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -1,20 +1,29 @@ --- title: "Static Code Analysis for R" -date: "2024-05-07" +date: "2024-05-27" tags: ["R", "linter", "tidyverse"] authors: - name: Jim Hester affiliation: 1 orcid: ~ + - name: Florent Angly + affiliation: ~ + orcid: ~ - name: Michael Chirico affiliation: 2 orcid: 0000-0003-0787-087X - - name: Alexander Rosenstock - affiliation: 3 + - name: Russ Hyde + affiliation: 5 + orcid: ~ + - name: Ren Kun + affiliation: ~ orcid: ~ - name: Indrajeet Patil orcid: 0000-0003-1995-6531 affiliation: 4 + - name: Alexander Rosenstock + affiliation: 3 + orcid: ~ affiliations: - index: 1 name: Netflix @@ -24,6 +33,8 @@ affiliations: name: Mathematisches Institut der Heinrich-Heine-Universität Düsseldorf - index: 4 name: Preisenergie GmbH, Munich, Germany + - index: 5 + name: Jumping Rivers output: md_document: variant: "markdown" @@ -236,6 +247,9 @@ l <- list(x = TRUE, x = FALSE) l["x"] #> $x #> [1] TRUE +``` + +``` r l[names(l) == "x"] #> $x #> [1] TRUE From 8e768e05381a16ccdf93688308bbc3bdd05e5cad Mon Sep 17 00:00:00 2001 From: Indrajeet Patil Date: Tue, 11 Jun 2024 06:29:59 +0200 Subject: [PATCH 40/41] Update paper.md Co-authored-by: Jim Hester --- paper/paper.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/paper/paper.md b/paper/paper.md index 466f29d70..6b7ebc6d8 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -5,7 +5,7 @@ tags: ["R", "linter", "tidyverse"] authors: - name: Jim Hester affiliation: 1 - orcid: ~ + orcid: 0000-0002-2739-7082 - name: Florent Angly affiliation: ~ orcid: ~ From 5501154d78e24a03521322f733cc29072ea27f3d Mon Sep 17 00:00:00 2001 From: Indrajeet Patil Date: Fri, 21 Jun 2024 08:08:19 +0200 Subject: [PATCH 41/41] update Rmd file for Jim's ORCID --- paper/paper.Rmd | 2 +- paper/paper.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/paper/paper.Rmd b/paper/paper.Rmd index a3ae24fb3..4aa995404 100644 --- a/paper/paper.Rmd +++ b/paper/paper.Rmd @@ -5,7 +5,7 @@ tags: ["R", "linter", "tidyverse"] authors: - name: Jim Hester affiliation: 1 - orcid: ~ + orcid: 0000-0002-2739-7082 - name: Florent Angly affiliation: ~ orcid: ~ diff --git a/paper/paper.md b/paper/paper.md index 6b7ebc6d8..079b54841 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -1,6 +1,6 @@ --- title: "Static Code Analysis for R" -date: "2024-05-27" +date: "2024-06-21" tags: ["R", "linter", "tidyverse"] authors: - name: Jim Hester