Skip to content

v0.6.0

Compare
Choose a tag to compare
@LiamPattinson LiamPattinson released this 10 Dec 11:33
· 164 commits to main since this release
6044a2a

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
  • 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 to private or public
    • default-public-accessibility requires you to set the default accessibility to private
  • Adds rules to the style category:
    • missing-double-colon requires variable declarations to include ::, e.g. integer :: i instead of integer 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 the external declaration.
    • implicit-external-procedures warns when a bare implicit none is used instead of implicit 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 and line-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 renamed procedure-not-in-module to avoid confusion with the new external-procedure rule.

What's Changed

Full Changelog: v0.5.1...v0.6.0