Add three additional rules to the KDE coding guidelines for CMake source code
Marius P
nmariusp1 at gmail.com
Wed Jul 31 00:48:55 BST 2024
Hello,
Can we please modify the KDE coding guidelines for CMake source code
https://community.kde.org/Policies/CMake_Coding_Style
Such that we do not allow the following three issues:
1. kconfig/src/core/CMakeLists.txt:36: Mismatching spaces inside ()
after command [whitespace/mismatch]:
"configure_file(config-kconfig.h.cmake
${CMAKE_CURRENT_BINARY_DIR}/config-kconfig.h )"
Notice that the opening parentheses is followed by zero spaces while
the closing parentheses has a space before it.
2. kconfig/CMakeLists.txt:74: Extra spaces between 'include' and its
() [whitespace/extra]:
"include (ECMPoQmTools)"
This is about not having whitespace between a "CMake command" and its "(".
Reasons: 90% of the lines from the cmake source code files from the
KDE project already respect this rule.
I cannot easily find a space between a cmake command and its "(" in
the documentation and tutorials from the CMake project e.g.
https://cmake.org/cmake/help/git-master/ ,
https://cmake.org/cmake/help/book/mastering-cmake/chapter/Writing%20CMakeLists%20Files.html
The cmake documentation about the cmake command "if" does not suggest
that a space is possible between "if" and its "(".
https://cmake.org/cmake/help/latest/command/if.html
cmake guidelines not from the cmake project tend to not use a space
between "if" and its "(". E.g.
https://learn.microsoft.com/en-us/vcpkg/contributing/cmake-guidelines
https://llvm.org/docs/CMakePrimer.html
There are cmake source code files from the KDE community which (in the
same file) use both styles e.g. "if(" and "if (".
https://invent.kde.org/utilities/kcalc/-/blob/master/CMakeLists.txt
The former project "kdeexamples" does not use space between a cmake
command and its "(".
https://invent.kde.org/unmaintained/kdeexamples/-/blob/ImprovedConfigDotCMakeFile/buildsystem/HowToInstallALibrary/CMakeLists.txt
3. kcalc/CMakeLists.txt:96: Line ends in whitespace [whitespace/eol]:
" kcalc_const_menu.cpp "
There is a space character after "kcalc_const_menu.cpp".
Thank you.
End of email, please ignore the rest of this email.
Technical details:
The cmake lint messages are from https://pypi.org/project/cmakelint/ .
I could not find a CMake source code guidelines web page from the CMake project.
The KDE coding guidelines for CMake source code
https://community.kde.org/Policies/CMake_Coding_Style already do not
allow the following issues:
1. kconfig/autotests/kconfig_compiler/CMakeLists.txt:8: Do not mix
upper and lower case commands [readability/mixedcase]:
"macro(GEN_KCFG_TEST_SOURCE _testName _srcs)
KCONFIG_ADD_KCFG_FILES(${_srcs} ${_testName}.kcfgc ${ARGN})
endmacro()"
https://community.kde.org/Policies/CMake_Coding_Style#Upper/lower_casing
says: "Upper/lower casing
Most important: use consistent upper- or lowercasing within one file !
In general, in KDE the all-lowercase style is preferred."
2. kconfig/KF6ConfigMacros.cmake:149: Expression repeated inside
endforeach; better to use only endforeach() [readability/logic]:
"endforeach(_current_FILE)"
https://community.kde.org/Policies/CMake_Coding_Style#End_commands
says: "To make the code easier to read, use empty commands for
endforeach(), endif(), endfunction(), endmacro() and endwhile(). Also,
use empty else() commands. "
This is also recommended by the CMake project
https://cmake.org/cmake/help/latest/command/if.html says "Per legacy,
the else() and endif() commands admit an optional <condition>
argument. If used, it must be a verbatim repeat of the argument of the
opening if command.". And the fact that
https://cmake.org/cmake/help/latest/command/if.html#synopsis is
different from https://cmake.org/cmake/help/v3.10/command/if.html#synopsis
3. kcalc/CMakeLists.txt:183: [whitespace/indent]:
" add_subdirectory( autotests )"
In this example file, most lines use 4 spaces indent, while this line
use 3 spaces indent.
https://community.kde.org/Policies/CMake_Coding_Style#Indentation says
"Use spaces for indenting, 2, 3 or 4 spaces preferably. Use the same
amount of spaces for indenting as is used in the rest of the file. Do
not use tabs."
If in a file has exactly 50% of of the indented lines using 3 spaces
and 50% of indented lines use 4 spaces, we should, in the future, use
4 spaces, because at least cmakelint leans towards having files
indented with 2 or 4 spaces.
More information about the kde-devel
mailing list