v0.6.0
Overview
New Features
- Adds
--preview
flag. Going forward, many new features will be hidden behind this prior to a stable release. - Adds autofixes.
- A subset of rules can now be fixed automatically by passing
--fix
or--unsafe-fix
(mostly style-based rules) - Fixable rules are highlighted in the output
- See the new rules page for an overview of which rules are now fixable
- A subset of rules can now be fixed automatically by passing
- Adds many more output formats, including SARIF and GitHub/GitLab CI
- Adds rules to the
modules
category for checking accessibility in modules (both in preview mode)missing-accessibility-statement
requires you to explicitly declare the default accessibility toprivate
orpublic
default-public-accessibility
requires you to set the default accessibility toprivate
- Adds rules to the
style
category:missing-double-colon
requires variable declarations to include::
, e.g.integer :: i
instead ofinteger i
.incorrect-space-before-comment
requires at least two spaces before an inline comment.
- Adds rules to the
typing
category:external-procedure
warns for the use of procedures within implicit interfaces using theexternal
declaration.implicit-external-procedures
warns when a bareimplicit none
is used instead ofimplicit none (type, external)
, which forbids implicit typing when calling external procedures.
- Adds the 'obsolescent' rule category for catching outdated Fortran features, with three new rules:
common-block
statement-function
entry-statement
- Adds an optional progress bar -- useful when running on very large projects or on slower hardware.
- The
no-real-suffix
rule has been upgraded, and no longer complains in cases where no precision would be lost, e.g:
use, intrinsic :: iso_fortran_env, only: dp => real64
real(dp), parameter :: x = 3.141592653589 ! Error, RHS is single precision, precision lost in assignment
real(dp), parameter :: x = 3.141592653589_dp ! Okay
real(dp), parameter :: y = 1.0 ! Okay, no precision lost
- We have docs! 🎉
Bug-fixes
trailing-whitespace
andline-too-long
can handle multibyte UTF-8 characters in strings and comments- Correctly report number of files scanned on completion
Breaking changes
- The rule
external-function
has been renamedprocedure-not-in-module
to avoid confusion with the newexternal-procedure
rule.
What's Changed
- Add
--preview
option by @ZedThree in #151 - Add fancy progress bar by @LiamPattinson in #145
- Don't require argument for CLI
--preview
by @ZedThree in #153 - Show preview rules in
explain
by @ZedThree in #154 - Less aggressive warnings for
no-real-suffix
by @LiamPattinson in #156 - Add rule for statement functions by @ZedThree in #162
- Add rule for missing
private
statements in modules by @ZedThree in #150 - Move statement-function rule to preview set by @LiamPattinson in #164
- Add rule
common-block
by @LiamPattinson in #165 - Bump tree-sitter-fortran by @ZedThree in #167
- Add rule for obsolescent
entry
statement by @ZedThree in #169 - Add rule for missing double-colon in variable decls by @ZedThree in #171
- Bugfix: report number of files scanned by @LiamPattinson in #173
- Print git commit and extra info with
--version
by @LiamPattinson in #174 - Fix failing build/release CI action by @LiamPattinson in #176
- Add (many) more output formats by @ZedThree in #177
- Add fix for
deprecated-relational-operators
by @ZedThree in #182 - Add fix for
old-style-array-literal
by @ZedThree in #183 - Add fix for missing label on
exit
/cycle
by @ZedThree in #184 - Add fix for
star-kinds
by @LiamPattinson in #186 - Add automatic fixes by @ZedThree in #181
- Add fix for
unnamed-end-statement
by @LiamPattinson in #185 - Add fix for
trailing-whitespace
by @LiamPattinson in #187 - Bugfix:
DiagnosticMessages
were created on pre-transformed file by @ZedThree in #191 - Add rule for implicit external procedures by @ZedThree in #192
- Add check for
external
procedures by @ZedThree in #195 - Add rule for incorrect whitespace before comment by @LiamPattinson in #194
- Bugfix: utf-8 multi-byte characters breaking diagnostic output by @LiamPattinson in #198
- maint: Move
profile.dev.package
block to top-levelCargo.toml
by @ZedThree in #201 - Rename
external-function
toprocedure-not-in-module
by @ZedThree in #200 - Add sales-pitch to README by @LiamPattinson in #203
- Add basic docs by @ZedThree in #210
- Version 0.6.0 by @LiamPattinson in #212
Full Changelog: v0.5.1...v0.6.0