From d28db8da887531c8617442b92c71f8a04a966356 Mon Sep 17 00:00:00 2001 From: Oliver Sander <oliver.sander@tu-dresden.de> Date: Fri, 5 Jan 2024 09:30:00 +0100 Subject: [PATCH] Add a CI job that runs uncrustify and checks for modifications If modifications are found this means that the style rules are violated. The uncrustify configuration file is the one from https://dune-project.org/share/dune-uncrustify.cfg downloaded on Jan 5. 2024. --- .gitlab-ci.yml | 18 +++++++ dune-uncrustify.cfg | 125 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 143 insertions(+) create mode 100644 dune-uncrustify.cfg diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 439ec521..f0b7bc53 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -59,3 +59,21 @@ code-spelling-check: image: registry.dune-project.org/docker/ci/debian:11 script: - codespell + +# Verify code-formatting rules +code-formatting-check: + stage: .pre + # Avoid the global 'before_script' + before_script: "" + image: registry.dune-project.org/docker/ci/debian:11 + script: + # Format all *.cc and *.hh files using the uncrustify tool + # We ignore the return value of 'uncrustify', because it is + # apparently unreliable, and returns 'failure' without a reason. + - uncrustify -l CPP -c dune-uncrustify.cfg --no-backup `find -name "*.cc" -o -name "*.hh"` || true + + # Did anything change? That would indicate a violation of the formatting rules + # But before, work around an issue where git doesn't recognize the source tree as a git directory. + # See https://forum.gitlab.com/t/ci-cd-job-git-diff/76666 + - git config --global --add safe.directory "$(pwd)" + - git diff --exit-code diff --git a/dune-uncrustify.cfg b/dune-uncrustify.cfg new file mode 100644 index 00000000..57275b14 --- /dev/null +++ b/dune-uncrustify.cfg @@ -0,0 +1,125 @@ +tok_split_gte=false +utf8_byte=false +utf8_force=false +indent_cmt_with_tabs=false +indent_align_string=false +indent_braces=false +indent_braces_no_func=false +indent_braces_no_class=false +indent_braces_no_struct=false +indent_brace_parent=false +indent_namespace=true +indent_extern=true +indent_class=true +indent_class_colon=true +indent_else_if=false +indent_var_def_cont=false +indent_func_call_param=false +indent_func_def_param=false +indent_func_proto_param=false +indent_func_class_param=false +indent_func_ctor_var_param=false +indent_template_param=true +indent_func_param_double=true +indent_relative_single_line_comments=false +indent_col1_comment=true +indent_access_spec_body=false +indent_paren_nl=false +indent_comma_paren=false +indent_bool_paren=false +indent_first_bool_expr=false +indent_square_nl=false +indent_preserve_sql=false +indent_align_assign=true +sp_balance_nested_parens=false +align_keep_tabs=false +align_with_tabs=false +align_on_tabstop=false +align_number_left=false +align_func_params=false +align_same_func_call_params=false +align_var_def_colon=false +align_var_def_attribute=false +align_var_def_inline=false +align_right_cmt_mix=false +align_on_operator=false +align_mix_var_proto=false +align_single_line_func=false +align_single_line_brace=false +align_nl_cont=false +align_left_shift=true +align_oc_decl_colon=false +nl_collapse_empty_body=true +nl_assign_leave_one_liners=true +nl_class_leave_one_liners=true +nl_enum_leave_one_liners=true +nl_getset_leave_one_liners=false +nl_func_leave_one_liners=false +nl_if_leave_one_liners=false +nl_multi_line_cond=false +nl_multi_line_define=false +nl_before_case=false +nl_after_case=false +nl_after_return=false +nl_after_semicolon=false +nl_after_brace_open=false +nl_after_brace_open_cmt=false +nl_after_vbrace_open=false +nl_after_vbrace_open_empty=false +nl_after_brace_close=false +nl_after_vbrace_close=false +nl_define_macro=false +nl_squeeze_ifdef=false +nl_ds_struct_enum_cmt=false +nl_ds_struct_enum_close_brace=false +nl_create_if_one_liner=false +nl_create_for_one_liner=false +nl_create_while_one_liner=false +ls_for_split_full=false +ls_func_split_full=false +nl_after_multiline_comment=false +eat_blanks_after_open_brace=false +eat_blanks_before_close_brace=false +mod_full_brace_if_chain=false +mod_pawn_semicolon=false +mod_full_paren_if_bool=false +mod_remove_extra_semicolon=false +mod_sort_import=false +mod_sort_using=false +mod_sort_include=false +mod_move_case_break=false +mod_remove_empty_return=false +cmt_indent_multi=true +cmt_c_group=false +cmt_c_nl_start=false +cmt_c_nl_end=false +cmt_cpp_group=false +cmt_cpp_nl_start=false +cmt_cpp_nl_end=false +cmt_cpp_to_c=false +cmt_star_cont=false +cmt_multi_check_last=true +cmt_insert_before_preproc=false +pp_indent_at_level=false +pp_region_indent_code=false +pp_if_indent_code=false +pp_define_at_level=false +indent_columns=2 +indent_access_spec=-2 +nl_end_of_file_min=1 +indent_with_tabs=0 +sp_before_semi=ignore +sp_after_semi=ignore +sp_after_semi_for=ignore +sp_before_comma=ignore +sp_before_case_colon=ignore +sp_not=ignore +sp_inv=ignore +sp_addr=ignore +sp_member=ignore +sp_deref=ignore +sp_sign=ignore +sp_incdec=ignore +sp_before_nl_cont=ignore +nl_end_of_file=force +nl_before_if=ignore -- GitLab