Skip to content

Releases: etiennebacher/flir

flir 0.6.0

15 Dec 08:19
9254cd0

Choose a tag to compare

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 "---", then flir would only use the
    first one. This is now fixed (#95).

  • list_linters() now uses path = "." by default (#99).

  • lint_text() and fix_text() now work correctly with custom rules when the
    working directory is neither an R package nor an RStudio project (#119).

Changes

  • expect_type_linter() now has less false positives for non-type is.*() functions
    and also provides more fixes (@trevorld, #110).

flir 0.5.0

29 Jun 11:49

Choose a tag to compare

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 argument interactive (FALSE by
    default). When set to TRUE, 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 several names at once (#88).

Changes

  • unreachable_code is deactivated by default. It can still be activated with
    the argument linters or in flir/config.yml after running setup_flir()
    (#75).

  • T_and_F_symbol do not detect anymore the use of F and T when those are
    used in the : operation (#81).

  • semicolon_linter is no longer used. It is a linter related to code
    formatting only and therefore isn't in the scope of flir (and the current
    implementation was buggy). It is also handled by the Air formatter (#93).

Bug fixes

  • lint_*() and fix_*() now work with relative paths to YAML files, for
    example lint(linters = "my_rule.yml") (#92).

flir 0.4.2

21 May 11:39

Choose a tag to compare

Changes

  • Linters related to testthat (such as expect_named) are ignored if the
    files that are parsed belong to a package that doesn't have a tests/testthat
    folder (for instance if you use tinytest instead). (#74)

flir 0.4.1

20 May 07:01

Choose a tag to compare

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

18 May 09:32

Choose a tag to compare

Breaking changes

  • setup_flir() no longer imports all built-in rules in the flir/rules
    folder. Those are now directly read from the folder where flir is
    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

24 Feb 15:19

Choose a tag to compare

  • BREAKING: flint is renamed flir to avoid namespace conflict with
    the recent flint package
    on CRAN. Thanks to Mikael Jagan for the warning (#63).

    Consequences:

    • setup_flint() is renamed setup_flir() and creates a folder
      named flir instead of flint;
    • setup_flint_gha() is renamed setup_flir_gha() and creates a
      YAML file named flir.yml instead of flint.yml;
    • update_flint() is renamed update_flir();
    • ignoring specific lines now requires flir-ignore instead of
      flint-ignore;
    • the environment variable FLINT_ERROR_ON_LINT is renamed FLIR_ERROR_ON_LINT;
    • if flint was used in a package, .Rbuildignore must be updated to
      ignore the folder flir instead of flint.

flint 0.2.1

07 Feb 15:16

Choose a tag to compare

New features

  • New environment variable FLINT_ERROR_ON_LINT to determine whether flint
    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.yml when using running flint on 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

21 Jan 18:55

Choose a tag to compare

New features

  • New linter stopifnot_all_linter() to detect calls to stopifnot(all(...))
    since the all() 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_linter now detects when 1L and 2L are used in the MARGIN
    argument.

  • any_is_na_linter now reports cases like NA %in% x, and can fix them to be
    anyNA(x) instead.

Bug fixes

  • library_call_linter no longer reports cases where library() calls are
    wrapped in suppressPackageStartupMessages().

  • 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 adding rerun = FALSE
    (#61).

  • any_is_na_linter wrongly reported cases like any(is.na(x), y). Those are
    no longer reported.

  • No longer lint and fix expect_equal(length(x), length(y)), which is more
    readable than expect_length(x, length(y)).

  • No longer lint and fix expect_equal(names(x), names(y)), which is more
    readable than expect_named(x, names(y)).

flint 0.1.2

08 Dec 12:51

Choose a tag to compare

New features

  • sample(n, m) is now reported and can be rewritten as sample.int(n, m)
    when n is a literal integer.

Bug fixes

  • Rule names have been harmonized to use a dash instead of underscore, e.g.
    any_duplicated-1 instead of any_duplicated_1.

  • Replacement of redundant_ifelse_linter of the form
    ifelse(cond, FALSE, TRUE) now works (#57).

  • absolute_path_linter was 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_linter and expect_type_linter, which lead to a wrong
    rewrite. It is now replaced by expect_type(x, 'class').

flint 0.1.1

15 Oct 21:01

Choose a tag to compare

Bug fixes

  • fix() and lint() now work correctly when several paths are passed.

  • fix_package() and lint_package() used all R files present from the root
    path, even those in folders that are not typical of an R package.

  • fix_dir() and fix_package() now have the arguments force and verbose,
    like fix().