From 3e543dbc0f2e85e0763e3f9b7c4fa98f233c0d8a Mon Sep 17 00:00:00 2001 From: ejjordan Date: Mon, 26 Apr 2021 14:56:15 +0200 Subject: [PATCH] Apply clang-tidy11 to correlationfunctions --- src/gromacs/correlationfunctions/autocorr.cpp | 5 +- src/gromacs/correlationfunctions/expfit.cpp | 5 +- src/gromacs/correlationfunctions/expfit.h | 3 +- .../correlationfunctions/gmx_lmcurve.h | 3 +- .../correlationfunctions/tests/.clang-tidy | 91 +++++++++++++++++++ 5 files changed, 103 insertions(+), 4 deletions(-) create mode 100644 src/gromacs/correlationfunctions/tests/.clang-tidy diff --git a/src/gromacs/correlationfunctions/autocorr.cpp b/src/gromacs/correlationfunctions/autocorr.cpp index 8d827a5f1e..680b3f5661 100644 --- a/src/gromacs/correlationfunctions/autocorr.cpp +++ b/src/gromacs/correlationfunctions/autocorr.cpp @@ -4,7 +4,7 @@ * Copyright (c) 1991-2000, University of Groningen, The Netherlands. * Copyright (c) 2001-2004, The GROMACS development team. * Copyright (c) 2013,2014,2015,2016,2017 by the GROMACS development team. - * Copyright (c) 2018,2019,2020, by the GROMACS development team, led by + * Copyright (c) 2018,2019,2020,2021, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -78,9 +78,11 @@ typedef struct } t_acf; /*! \brief Global variable set true if initialization routines are called. */ +// NOLINTNEXTLINE(cppcoreguidelines-avoid-non-const-global-variables) static gmx_bool bACFinit = FALSE; /*! \brief Data structure for storing command line variables. */ +// NOLINTNEXTLINE(cppcoreguidelines-avoid-non-const-global-variables) static t_acf acf; enum @@ -719,6 +721,7 @@ void low_do_autocorr(const char* fn, } /*! \brief Legend for selecting Legendre polynomials. */ +// NOLINTNEXTLINE(cppcoreguidelines-avoid-non-const-global-variables) static const char* Leg[] = { nullptr, "0", "1", "2", "3", nullptr }; t_pargs* add_acf_pargs(int* npargs, t_pargs* pa) diff --git a/src/gromacs/correlationfunctions/expfit.cpp b/src/gromacs/correlationfunctions/expfit.cpp index 752e0363a6..97bfe7eb5f 100644 --- a/src/gromacs/correlationfunctions/expfit.cpp +++ b/src/gromacs/correlationfunctions/expfit.cpp @@ -3,7 +3,7 @@ * * Copyright (c) 1991-2000, University of Groningen, The Netherlands. * Copyright (c) 2001-2004, The GROMACS development team. - * Copyright (c) 2013-2019,2020, by the GROMACS development team, led by + * Copyright (c) 2013-2019,2020,2021, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -69,12 +69,14 @@ static const int nfp_ffn[effnNR] = { 0, 1, 2, 3, 5, 7, 9, 2, 4, 3, 6 }; * hence there are many more NULL field (which have to be at the end of * the array). */ +// NOLINTNEXTLINE(cppcoreguidelines-avoid-non-const-global-variables) const char* s_ffn[effnNR + 2] = { nullptr, "none", "exp", "aexp", "exp_exp", "exp5", "exp7", "exp9", nullptr, nullptr, nullptr, nullptr, nullptr }; // clang-format off // needed because clang-format wants to break the lines below /*! \brief Long description for each fitting function type */ +// NOLINTNEXTLINE(cppcoreguidelines-avoid-non-const-global-variables) static const char* longs_ffn[effnNR] = { "no fit", "y = exp(-x/|a0|)", @@ -389,6 +391,7 @@ static double lmc_errest_3_parm(double x, const double* a) } /*! \brief array of fitting functions corresponding to the pre-defined types */ +// NOLINTNEXTLINE(cppcoreguidelines-avoid-non-const-global-variables) t_lmcurve lmcurves[effnNR + 1] = { lmc_exp_one_parm, lmc_exp_one_parm, lmc_exp_two_parm, lmc_exp_exp, lmc_exp_5_parm, lmc_exp_7_parm, lmc_exp_9_parm, lmc_vac_2_parm, lmc_erffit, diff --git a/src/gromacs/correlationfunctions/expfit.h b/src/gromacs/correlationfunctions/expfit.h index d006d55632..a17efa4776 100644 --- a/src/gromacs/correlationfunctions/expfit.h +++ b/src/gromacs/correlationfunctions/expfit.h @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2014,2015,2018,2019, by the GROMACS development team, led by + * Copyright (c) 2014,2015,2018,2019,2021, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -73,6 +73,7 @@ enum * This is exported for now in order to use when * calling parse_common_args. */ +// NOLINTNEXTLINE(cppcoreguidelines-avoid-non-const-global-variables) extern const char* s_ffn[effnNR + 2]; /*! \brief diff --git a/src/gromacs/correlationfunctions/gmx_lmcurve.h b/src/gromacs/correlationfunctions/gmx_lmcurve.h index 473eba167c..28864796ee 100644 --- a/src/gromacs/correlationfunctions/gmx_lmcurve.h +++ b/src/gromacs/correlationfunctions/gmx_lmcurve.h @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2016,2018,2019, by the GROMACS development team, led by + * Copyright (c) 2016,2018,2019,2021, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -60,6 +60,7 @@ bool lmfit_exp(int nfit, int eFitFn, int nfix); +// NOLINTNEXTLINE(cppcoreguidelines-avoid-non-const-global-variables) extern t_lmcurve lmcurves[effnNR + 1]; #endif diff --git a/src/gromacs/correlationfunctions/tests/.clang-tidy b/src/gromacs/correlationfunctions/tests/.clang-tidy new file mode 100644 index 0000000000..0adf51e3ee --- /dev/null +++ b/src/gromacs/correlationfunctions/tests/.clang-tidy @@ -0,0 +1,91 @@ +# List of rationales for check suppressions (where known). +# This have to precede the list because inline comments are not +# supported by clang-tidy. +# +# -cppcoreguidelines-non-private-member-variables-in-classes, +# -misc-non-private-member-variables-in-classes, +# We intend a gradual transition to conform to this guideline, but it +# is not practical to implement yet. +# +# -readability-isolate-declaration, +# Declarations like "int a, b;" are readable. Some forms are not, and +# those might reasonably be suggested against during code review. +# +# -cppcoreguidelines-avoid-c-arrays, +# C arrays are still necessary in many places with legacy code +# +# -cppcoreguidelines-avoid-magic-numbers, +# -readability-magic-numbers, +# We have many legitimate use cases for magic numbers +# +# -cppcoreguidelines-macro-usage, +# We do use too many macros, and we should fix many of them, but there +# is no reasonable way to suppress the check e.g. in src/config.h and +# configuring the build is a major legitimate use of macros. +# +# -cppcoreguidelines-narrowing-conversions, +# -bugprone-narrowing-conversions +# We have many cases where int is converted to float and we don't care +# enough about such potential loss of precision to use explicit casts +# in large numbers of places. +# +# -google-readability-avoid-underscore-in-googletest-name +# We need to use underscores for readability for our legacy types +# and command-line parameter names +# +# -misc-no-recursion +# We have way too many functions and methods relying on recursion +# +# -cppcoreguidelines-avoid-non-const-global-variables +# There are quite a lot of static variables in the test code that +# can not be replaced. +# +# -modernize-avoid-bind +# Some code needs to use std::bind and can't be modernized quickly. +Checks: clang-diagnostic-*,-clang-analyzer-*,-clang-analyzer-security.insecureAPI.strcpy, + bugprone-*,misc-*,readability-*,performance-*,mpi-*, + -readability-inconsistent-declaration-parameter-name, + -readability-function-size,-readability-else-after-return, + modernize-use-nullptr,modernize-use-emplace, + modernize-make-unique,modernize-make-shared, + modernize-avoid-bind, + modernize-use-override, + modernize-redundant-void-arg,modernize-use-bool-literals, + cppcoreguidelines-*,-cppcoreguidelines-pro-*,-cppcoreguidelines-owning-memory, + -cppcoreguidelines-no-malloc,-cppcoreguidelines-special-member-functions, + -cppcoreguidelines-avoid-goto, + google-*,-google-build-using-namespace,-google-explicit-constructor, + -google-readability-function-size,-google-readability-todo,-google-runtime-int, + -cppcoreguidelines-non-private-member-variables-in-classes, + -misc-non-private-member-variables-in-classes, + -readability-isolate-declaration, + -cppcoreguidelines-avoid-c-arrays, + -cppcoreguidelines-avoid-magic-numbers, + -readability-magic-numbers, + -cppcoreguidelines-macro-usage, + -cppcoreguidelines-narrowing-conversions, + -bugprone-narrowing-conversions, + -google-readability-avoid-underscore-in-googletest-name, + -cppcoreguidelines-init-variables, + -misc-no-recursion, + -cppcoreguidelines-avoid-non-const-global-variables, + -modernize-avoid-bind +HeaderFilterRegex: .* +CheckOptions: + - key: cppcoreguidelines-special-member-functions.AllowSoleDefaultDtor + value: 1 + - key: modernize-make-unique.IncludeStyle + value: google + - key: modernize-make-shared.IncludeStyle + value: google + - key: readability-implicit-bool-conversion.AllowIntegerConditions + value: 1 + - key: readability-implicit-bool-conversion.AllowPointerConditions + value: 1 + - key: bugprone-dangling-handle.HandleClasses + value: std::basic_string_view; nonstd::sv_lite::basic_string_view +# Permit passing shard pointers by value for sink parameters + - key: performance-unnecessary-copy-initialization.AllowedTypes + value: shared_ptr + - key: performance-unnecessary-value-param.AllowedTypes + value: shared_ptr -- 2.22.0