Releases: etiennebacher/flir
flir 0.6.0
This release adds a few new features and fixes. flir is now presented as a
tool to refactor any type of code by detecting and rewriting custom patterns.
flir comes with a list of built-in rules and therefore can still be used as a linter,
but I now concentrate my efforts on a new R linter entirely written in Rust: Jarl.
Therefore, I will not add new rules in flir.
New features
-
New linters:
-
New vignette "Tips and tricks" that lists some solutions for problems one may
encounter when writing new rules (#94).
Bug fixes
-
When using external rules with the
with-<pkg>syntax, if the YAML file
contains several rules separated by "---", thenflirwould only use the
first one. This is now fixed (#95). -
list_linters()now usespath = "."by default (#99). -
lint_text()andfix_text()now work correctly with custom rules when the
working directory is neither an R package nor an RStudio project (#119).
Changes
flir 0.5.0
This is the first CRAN release.
Breaking changes
add_new_rule()now errors if the file already exists (#87).
New features
-
Most
fix_*()functions have a new argumentinteractive(FALSEby
default). When set toTRUE, it opens a Shiny app in the Viewer so that the
user can review fixes that would be applied to a file. It is therefore
possible to accept or skip fixes on a file-by-file basis (#76). -
In R packages, it is now possible to create a list of rules that will be
available to the users of the package. This can be useful to provide
automatic fixes for deprecated or superseded functions, for example. More
information is available in the vignette "Sharing rules across packages".
Thanks to @maelle and @Bisaloo for the suggestion and early feedback on the
implementation (#78, #84). -
add_new_rule()now accepts severalnames at once (#88).
Changes
-
unreachable_codeis deactivated by default. It can still be activated with
the argumentlintersor inflir/config.ymlafter runningsetup_flir()
(#75). -
T_and_F_symboldo not detect anymore the use ofFandTwhen those are
used in the:operation (#81). -
semicolon_linteris no longer used. It is a linter related to code
formatting only and therefore isn't in the scope offlir(and the current
implementation was buggy). It is also handled by theAirformatter (#93).
Bug fixes
lint_*()andfix_*()now work with relative paths to YAML files, for
examplelint(linters = "my_rule.yml")(#92).
flir 0.4.2
Changes
- Linters related to
testthat(such asexpect_named) are ignored if the
files that are parsed belong to a package that doesn't have atests/testthat
folder (for instance if you usetinytestinstead). (#74)
flir 0.4.1
Bug fixes
-
Changes were still directly applied to files that are unstaged
in Git while there should have been a warning. This is now fixed. -
Properly skip changes in the user picks "No" in the menu about
modifying unstaged files in Git.
flir 0.4.0
Breaking changes
setup_flir()no longer imports all built-in rules in theflir/rules
folder. Those are now directly read from the folder wherefliris
installed. Consequently,update_flir()has been removed as it has no
purpose anymore (#66).
Other changes
- New function
add_new_rule()to create the template for a new rule in
flir/rules/custom(#67).
Bug fixes
- Fix error in replacement in rule
sample_int-4.
flir 0.3.0
-
BREAKING:
flintis renamedflirto avoid namespace conflict with
the recentflintpackage
on CRAN. Thanks to Mikael Jagan for the warning (#63).Consequences:
setup_flint()is renamedsetup_flir()and creates a folder
namedflirinstead offlint;setup_flint_gha()is renamedsetup_flir_gha()and creates a
YAML file namedflir.ymlinstead offlint.yml;update_flint()is renamedupdate_flir();- ignoring specific lines now requires
flir-ignoreinstead of
flint-ignore; - the environment variable
FLINT_ERROR_ON_LINTis renamedFLIR_ERROR_ON_LINT; - if
flintwas used in a package,.Rbuildignoremust be updated to
ignore the folderflirinstead offlint.
flint 0.2.1
New features
- New environment variable
FLINT_ERROR_ON_LINTto determine whetherflint
should error if some lints were found.
Bug fixes
-
No longer error about unavailable sourceMarkers when running
lint()in
Positron. -
Better detection of
flint/config.ymlwhen using runningflinton a
package or a directory. -
The cache used after
setup_flint()is now invalidated if the rules used
change. -
Do not print "empty data.table(...)" when no lints are detected.
flint 0.2.0
New features
-
New linter
stopifnot_all_linter()to detect calls tostopifnot(all(...))
since theall()is unnecessary. This has an automatic fix available. -
New linter
list_comparison_linter()to detect a comparison with a list,
e.g.lapply(x, sum) > 10. No automatic fix available. -
Line breaks are removed from multi-line messages reported by
lint*
functions. -
matrix_apply_linternow detects when1Land2Lare used in theMARGIN
argument. -
any_is_na_linternow reports cases likeNA %in% x, and can fix them to be
anyNA(x)instead.
Bug fixes
-
library_call_linterno longer reports cases wherelibrary()calls are
wrapped insuppressPackageStartupMessages(). -
Nested fixes no longer overlap. The
fix*()functions now run several times
on the files containing nested fixes until there are no more fixes to apply.
This can be deactivated to run only once per file by addingrerun = FALSE
(#61). -
any_is_na_linterwrongly reported cases likeany(is.na(x), y). Those are
no longer reported. -
No longer lint and fix
expect_equal(length(x), length(y)), which is more
readable thanexpect_length(x, length(y)). -
No longer lint and fix
expect_equal(names(x), names(y)), which is more
readable thanexpect_named(x, names(y)).
flint 0.1.2
New features
sample(n, m)is now reported and can be rewritten assample.int(n, m)
whennis a literal integer.
Bug fixes
-
Rule names have been harmonized to use a dash instead of underscore, e.g.
any_duplicated-1instead ofany_duplicated_1. -
Replacement of
redundant_ifelse_linterof the form
ifelse(cond, FALSE, TRUE)now works (#57). -
absolute_path_linterwas deactivated in 0.0.5 but was still reported. It is
now properly ignored. -
Code like
expect_equal(typeof(x), 'class')was modified twice by
expect_identical_linterandexpect_type_linter, which lead to a wrong
rewrite. It is now replaced byexpect_type(x, 'class').
flint 0.1.1
Bug fixes
-
fix()andlint()now work correctly when several paths are passed. -
fix_package()andlint_package()used all R files present from the root
path, even those in folders that are not typical of an R package. -
fix_dir()andfix_package()now have the argumentsforceandverbose,
likefix().