diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 3505ef9..456c518 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -44,6 +44,12 @@ repos: - id: ruff args: [ --fix, --exit-non-zero-on-fix ] - id: ruff-format + - repo: https://github.com/PlasmaFAIR/fortitude-pre-commit + # Fortitude version. + rev: v0.7.5 + hooks: + - id: fortitude + args: ["--fix", "--unsafe-fixes", "--preview"] - repo: https://github.com/astral-sh/uv-pre-commit rev: 0.5.21 hooks: diff --git a/changelog/28.trivial.md b/changelog/28.trivial.md new file mode 100644 index 0000000..4a16b99 --- /dev/null +++ b/changelog/28.trivial.md @@ -0,0 +1 @@ +Added [fortitude](https://github.com/PlasmaFAIR/fortitude) for linting the Fortran diff --git a/fortitude.toml b/fortitude.toml new file mode 100644 index 0000000..2161fc4 --- /dev/null +++ b/fortitude.toml @@ -0,0 +1,5 @@ +[check] +# TODO: think about adding other rules +select = [ "C", "E", "S" ] +ignore = [ ] +line-length = 120 diff --git a/src/example_fgen_basic/get_wavelength.f90 b/src/example_fgen_basic/get_wavelength.f90 index abe43e4..7edbcf3 100644 --- a/src/example_fgen_basic/get_wavelength.f90 +++ b/src/example_fgen_basic/get_wavelength.f90 @@ -7,7 +7,7 @@ module m_get_wavelength use kind_parameters, only: dp - implicit none + implicit none (type, external) private real(kind=dp), parameter, public :: speed_of_light = 2.99792e8_dp diff --git a/src/example_fgen_basic/get_wavelength_wrapper.f90 b/src/example_fgen_basic/get_wavelength_wrapper.f90 index c983c12..8aa3b49 100644 --- a/src/example_fgen_basic/get_wavelength_wrapper.f90 +++ b/src/example_fgen_basic/get_wavelength_wrapper.f90 @@ -15,7 +15,7 @@ module m_get_wavelength_w ! Convention to date: just suffix wrappers with _w ! and the original function should have the same name. ! ("o_" for original) - implicit none + implicit none (type, external) private public :: get_wavelength diff --git a/src/example_fgen_basic/kind_parameters.f90 b/src/example_fgen_basic/kind_parameters.f90 index ffc60b0..4e7378e 100644 --- a/src/example_fgen_basic/kind_parameters.f90 +++ b/src/example_fgen_basic/kind_parameters.f90 @@ -2,23 +2,23 @@ !> See https://fortran-lang.org/learn/best_practices/floating_point/ module kind_parameters - implicit none - public + implicit none (type, external) + private !> Single precision real numbers, 6 digits, range 10⁻³⁷ to 10³⁷-1; 32 bits - integer, parameter :: sp = selected_real_kind(6, 37) + integer, parameter, public :: sp = selected_real_kind(6, 37) !> Double precision real numbers, 15 digits, range 10⁻³⁰⁷ to 10³⁰⁷-1; 64 bits - integer, parameter :: dp = selected_real_kind(15, 307) + integer, parameter, public :: dp = selected_real_kind(15, 307) !> Quadruple precision real numbers, 33 digits, range 10⁻⁴⁹³¹ to 10⁴⁹³¹-1; 128 bits - integer, parameter :: qp = selected_real_kind(33, 4931) + integer, parameter, public :: qp = selected_real_kind(33, 4931) !> Char length for integers, range -2⁷ to 2⁷-1; 8 bits - integer, parameter :: i1 = selected_int_kind(2) + integer, parameter, public :: i1 = selected_int_kind(2) !> Short length for integers, range -2¹⁵ to 2¹⁵-1; 16 bits - integer, parameter :: i2 = selected_int_kind(4) + integer, parameter, public :: i2 = selected_int_kind(4) !> Length of default integers, range -2³¹ to 2³¹-1; 32 bits - integer, parameter :: i4 = selected_int_kind(9) + integer, parameter, public :: i4 = selected_int_kind(9) !> Long length for integers, range -2⁶³ to 2⁶³-1; 64 bits - integer, parameter :: i8 = selected_int_kind(18) + integer, parameter, public :: i8 = selected_int_kind(18) end module kind_parameters diff --git a/tests/unit/main.f90 b/tests/unit/main.f90 index 5f4d22f..b63d95b 100644 --- a/tests/unit/main.f90 +++ b/tests/unit/main.f90 @@ -5,7 +5,7 @@ program tester_unit use testdrive, only: run_testsuite, new_testsuite, testsuite_type, select_suite, run_selected, get_argument use test_get_wavelength, only: collect_get_wavelength_tests - implicit none + implicit none (type, external) integer :: stat, is character(len=:), allocatable :: suite_name, test_name type(testsuite_type), allocatable :: testsuites(:) @@ -47,7 +47,7 @@ program tester_unit end if if (stat > 0) then - write (error_unit, '(i0, 1x, a)') stat, "test(s) failed!" + write (error_unit, "(i0, 1x, a)") stat, "test(s) failed!" error stop 1 end if diff --git a/tests/unit/test_get_wavelength.f90 b/tests/unit/test_get_wavelength.f90 index 99cba3f..d69c1b1 100644 --- a/tests/unit/test_get_wavelength.f90 +++ b/tests/unit/test_get_wavelength.f90 @@ -2,12 +2,12 @@ module test_get_wavelength ! How to print to stdout - use ISO_Fortran_env, only: stdout => OUTPUT_UNIT + use, intrinsic :: ISO_Fortran_env, only: stdout => OUTPUT_UNIT use testdrive, only: new_unittest, unittest_type, error_type, check use kind_parameters, only: dp - implicit none + implicit none (type, external) private public :: collect_get_wavelength_tests