Add switch() to lcov branch exclusions.
lcov requires default to show complete coverage but --Wswitch-enum enforces all enum values be present so no default is needed.
Add documentation for each branch exclusion.
lcov_branch_coverage=1
# Specify the regular expression of lines to exclude from branch coverage
-lcov_excl_br_line=[A-Z_]+\(|assert\(|testBegin\(
+#
+# [A-Z_]+\( - exclude all macros since they are tested separately
+# assert\( - exclude asserts since it usually not possible to trigger both branches
+# testBegin\( - exclude because it generally returns true, and is not needed for coverage
+# switch \( - lcov requires default: to show complete coverage but --Wswitch-enum enforces all enum values be present
+lcov_excl_br_line=[A-Z_]+\(|assert\(|testBegin\(| switch \(
# Specify the regular expression of lines to exclude
lcov_excl_line=\{\+*uncovered|\{\+*uncoverable
