Fast-DDS icon indicating copy to clipboard operation
Fast-DDS copied to clipboard

[21358] Increase the warning level for Ubuntu CI's compilation

Open tempate opened this issue 1 year ago • 0 comments

Description

The compilation in Windows is usually more restrictive than the compilation in Ubuntu. This is in part because the compilation warning-flags in Windows and Ubuntu are different.

  • Windows: -DCMAKE_CXX_FLAGS="/WX /MP"
  • Ubuntu: -DCMAKE_CXX_FLAGS="-Werror -Wall -Wextra -Wpedantic -Wunused-value -Woverloaded-virtual"

The problem with Windows being more restrictive than Ubuntu is that many errors cannot be found and solved until the CI runs on Windows, which usually takes a long time. To find and solve errors faster, we have included the following compilation warning-flags to Ubuntu's CI:

  • -Wsign-compare
  • -Wcast-align
  • -Wlogical-op
  • -Wduplicated-cond
  • -Wrestrict
  • -Wnull-dereference
  • -Wpointer-arith
  • -Wwrite-strings
  • -Wunreachable-code

According to ChatGPT, the following flags should be added to make Ubuntu's CI as restrictive as Window's:

  • -Wconversion
  • -Wshadow
  • -Wsign-conversion
  • -Wold-style-cast
  • -Wuseless-cast
  • -Wformat=2
  • -Wmissing-include-dirs
  • -Wredundant-decls
  • -Wstrict-overflow=5
  • -Wswitch-enum
  • -Wdouble-promotion
  • -Wduplicated-branches

According to StackOverflow, the following flags could also be useful:

  • -Wfloat-equal
  • -Wundef
  • -Waggregate-return
  • -Wcast-qual
  • -Wswitch-default
  • -Wstrict-prototypes

Both ChatGPT's and StackOverflow's suggestions are left out from this first attempt.

Contributor Checklist

  • [x] Commit messages follow the project guidelines.
  • N/A The code follows the style guidelines of this project.
  • N/A Tests that thoroughly check the new feature have been added/Regression tests checking the bug and its fix have been added; the added tests pass locally
  • N/A Any new/modified methods have been properly documented using Doxygen.
  • N/A Any new configuration API has an equivalent XML API (with the corresponding XSD extension)
  • [x] Changes are backport compatible: they do NOT break ABI nor change library core behavior.
  • [x] Changes are API compatible.
  • [ ] New feature has been added to the versions.md file (if applicable).
  • [ ] New feature has been documented/Current behavior is correctly described in the documentation.
  • [ ] Applicable backports have been included in the description.

Reviewer Checklist

  • [ ] The PR has a milestone assigned.
  • [ ] The title and description correctly express the PR's purpose.
  • [ ] Check contributor checklist is correct.
  • [ ] If this is a critical bug fix, backports to the critical-only supported branches have been requested.
  • [ ] Check CI results: changes do not issue any warning.
  • [ ] Check CI results: failing tests are unrelated with the changes.

tempate avatar Jul 12 '24 09:07 tempate