Repository navigation
Expand file tree
/
Copy pathsonar-project.properties
More file actions
151 lines (131 loc) · 8.62 KB
/
Copy pathsonar-project.properties
File metadata and controls
151 lines (131 loc) · 8.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
# sonar.organization/projectKey come from the sonarcloud workflows.
sonar.host.url=https://sonarcloud.io
sonar.sources=include,examples
sonar.tests=tests
sonar.sourceEncoding=UTF-8
# Exclusions
sonar.exclusions=.build*/**,**/_deps/**
# Examples are demonstration code -- built and run by ctest to prove they compile and work, but not
# unit-tested; the new-code coverage gate (>= 80%) would fail on every added example. Compare
# the x1..x18 issue suppressions below: examples are held to demo, not include/, standards.
# fn/detail/meta.hpp contains constant-evaluated type ordering only - it does nothing in runtime.
sonar.coverage.exclusions=examples/**/*,include/fn/detail/meta.hpp
# Disable SonarQube CPD (Copy-Paste Detection) entirely.
#
# This is a heavily templated library where repetitive code patterns
# are intentional and part of the design:
# - include/**: overloads for different qualifiers, constraints, and value categories
# - tests/**: repetitive patterns used for exhaustive coverage
#
# CPD produces mostly false positives for this codebase. Since `sonar.cpd.skip=true`
# does not work for C++ code, we use `sonar.cpd.exclusions=**/*` to effectively disable it.
sonar.cpd.exclusions=**/*
# Suppress selected SonarCloud issues (scope + rationale per entry):
sonar.issue.ignore.multicriteria=e1,e2,e3,e4,e5,e6,e7,e8,e9,e10,e11,e12,e13,e14,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,x16,x17,x18
# e1 — cpp:S3659 (alternative operator tokens such as `not`), project-wide: deliberate
# readability choice — `not ` (with the trailing space) is harder to overlook than `!`.
sonar.issue.ignore.multicriteria.e1.ruleKey=cpp:S3659
sonar.issue.ignore.multicriteria.e1.resourceKey=**/*
# e2 — cpp:S3646 (types and variables declared in single statement), project-wide: deliberate
# choice — single use type should not introduce complexity.
sonar.issue.ignore.multicriteria.e2.ruleKey=cpp:S3646
sonar.issue.ignore.multicriteria.e2.resourceKey=**/*
# e3 — cpp:S1135 (track TODO tags), project-wide: the TODO markers are mostly Doxygen
# placeholder stanzas, tracked as a roadmap item — Sonar issues add nothing over `grep TODO`.
sonar.issue.ignore.multicriteria.e3.ruleKey=cpp:S1135
sonar.issue.ignore.multicriteria.e3.resourceKey=**/*
# e4 — cpp:S6189 (name reused template parameters), project-wide: (constrained) `auto`
# parameters with `decltype`/`FWD` are the codebase idiom; naming a template parameter for
# every reused deduced type would bloat hundreds of already heavily templated signatures.
sonar.issue.ignore.multicriteria.e4.ruleKey=cpp:S6189
sonar.issue.ignore.multicriteria.e4.resourceKey=**/*
# e5 — cpp:S6460 (extract ad-hoc requires-expression into a concept), project-wide: inline
# requires-expressions spell single-use constraints where they apply; extraction would create
# dozens of single-use concept names, and in pfn would hide the correspondence with the
# Constraints wording of the ISO spec.
sonar.issue.ignore.multicriteria.e5.ruleKey=cpp:S6460
sonar.issue.ignore.multicriteria.e5.resourceKey=**/*
# e6 — cpp:S2807 (binary operators as hidden friends), include only: the comparison operator
# templates deliberately mirror the non-member operators of the ISO spec ([optional.relops],
# [optional.comp.with.t]); copack/choice comparisons are heterogeneous across instantiations.
sonar.issue.ignore.multicriteria.e6.ruleKey=cpp:S2807
sonar.issue.ignore.multicriteria.e6.resourceKey=include/**/*
# e7 — cpp:S5018 (move/swap should be unconditionally noexcept), include only: move and swap
# carry a conditional noexcept exactly where the ISO spec mandates one ([optional.swap],
# [expected.object.swap]); unconditional noexcept would be a lie for throwing types.
sonar.issue.ignore.multicriteria.e7.ruleKey=cpp:S5018
sonar.issue.ignore.multicriteria.e7.resourceKey=include/**/*
# e8 — cpp:S5425 (forwarding reference parameters should be forwarded), include only: the
# library is built on cvref-deducing parameters that are propagated via casts
# (apply_const_lvalue_t, member access through FWD(self)) or deliberately read in place;
# a literal std::forward call is not the only valid consumption.
sonar.issue.ignore.multicriteria.e8.ruleKey=cpp:S5425
sonar.issue.ignore.multicriteria.e8.resourceKey=include/**/*
# e9 — cpp:S1448 (too many methods), include only: the classes mirror the API surface of
# std::optional/std::expected, which the ISO spec defines with this many members.
sonar.issue.ignore.multicriteria.e9.ruleKey=cpp:S1448
sonar.issue.ignore.multicriteria.e9.resourceKey=include/**/*
# e10 — cpp:S5421 (non-const global variables), traits header only: the flagged variable
# templates are declared and never defined, pure decltype operands; adding const would
# change the very types they are meant to compute.
sonar.issue.ignore.multicriteria.e10.ruleKey=cpp:S5421
sonar.issue.ignore.multicriteria.e10.resourceKey=include/fn/detail/traits.hpp
# e11 — cpp:S6352 (result of std::move should be used in a function call), copack only: the
# `::std::move(*this).data` idiom moves a member subobject; the xvalue member access is
# consumed by the call on the same line.
sonar.issue.ignore.multicriteria.e11.ruleKey=cpp:S6352
sonar.issue.ignore.multicriteria.e11.resourceKey=include/fn/copack.hpp
# e12 — cpp:S6461 (declval inside requires-expression), concepts header only: declval
# preserves the value category of the tested expression; a requires-expression parameter
# is always an lvalue, so the suggested rewrite would test a different conversion.
sonar.issue.ignore.multicriteria.e12.ruleKey=cpp:S6461
sonar.issue.ignore.multicriteria.e12.resourceKey=include/fn/concepts.hpp
# e13 — cpp:S6020 (use the _t/_v trait forms), pack_impl only: `::std::invoke_result<...>::type`
# and `::std::is_invocable<...>::value` match the adjacent fn-detail traits, which exist only in
# struct form; this spelling was settled in the MSVC port — do not churn it for style.
sonar.issue.ignore.multicriteria.e13.ruleKey=cpp:S6020
sonar.issue.ignore.multicriteria.e13.resourceKey=include/fn/detail/pack_impl.hpp
# e14 — cpp:S954 (#include directives should be at the top of the file), fn headers only: the
# fn/detail/macro_begin.hpp / macro_end.hpp pair brackets a header's body so FWD and
# DEDUCED_RETURN do not leak; the closing include sits at the bottom of each header by design.
sonar.issue.ignore.multicriteria.e14.ruleKey=cpp:S954
sonar.issue.ignore.multicriteria.e14.resourceKey=include/fn/**/*
# x1..x18 — examples are demo code and do not adhere to the strict standards of include/;
# suppressed per rule observed there rather than wholesale, so that new rule types still
# surface for a human decision.
sonar.issue.ignore.multicriteria.x1.ruleKey=cpp:S1110
sonar.issue.ignore.multicriteria.x1.resourceKey=examples/**/*
sonar.issue.ignore.multicriteria.x2.ruleKey=cpp:S1117
sonar.issue.ignore.multicriteria.x2.resourceKey=examples/**/*
sonar.issue.ignore.multicriteria.x3.ruleKey=cpp:S1186
sonar.issue.ignore.multicriteria.x3.resourceKey=examples/**/*
sonar.issue.ignore.multicriteria.x4.ruleKey=cpp:S1188
sonar.issue.ignore.multicriteria.x4.resourceKey=examples/**/*
sonar.issue.ignore.multicriteria.x5.ruleKey=cpp:S1238
sonar.issue.ignore.multicriteria.x5.resourceKey=examples/**/*
sonar.issue.ignore.multicriteria.x6.ruleKey=cpp:S134
sonar.issue.ignore.multicriteria.x6.resourceKey=examples/**/*
sonar.issue.ignore.multicriteria.x7.ruleKey=cpp:S1709
sonar.issue.ignore.multicriteria.x7.resourceKey=examples/**/*
sonar.issue.ignore.multicriteria.x8.ruleKey=cpp:S1905
sonar.issue.ignore.multicriteria.x8.resourceKey=examples/**/*
sonar.issue.ignore.multicriteria.x9.ruleKey=cpp:S3574
sonar.issue.ignore.multicriteria.x9.resourceKey=examples/**/*
sonar.issue.ignore.multicriteria.x10.ruleKey=cpp:S3608
sonar.issue.ignore.multicriteria.x10.resourceKey=examples/**/*
sonar.issue.ignore.multicriteria.x11.ruleKey=cpp:S3642
sonar.issue.ignore.multicriteria.x11.resourceKey=examples/**/*
sonar.issue.ignore.multicriteria.x12.ruleKey=cpp:S5276
sonar.issue.ignore.multicriteria.x12.resourceKey=examples/**/*
sonar.issue.ignore.multicriteria.x13.ruleKey=cpp:S5415
sonar.issue.ignore.multicriteria.x13.resourceKey=examples/**/*
sonar.issue.ignore.multicriteria.x14.ruleKey=cpp:S5425
sonar.issue.ignore.multicriteria.x14.resourceKey=examples/**/*
sonar.issue.ignore.multicriteria.x15.ruleKey=cpp:S5500
sonar.issue.ignore.multicriteria.x15.resourceKey=examples/**/*
sonar.issue.ignore.multicriteria.x16.ruleKey=cpp:S6004
sonar.issue.ignore.multicriteria.x16.resourceKey=examples/**/*
sonar.issue.ignore.multicriteria.x17.ruleKey=cpp:S6226
sonar.issue.ignore.multicriteria.x17.resourceKey=examples/**/*
sonar.issue.ignore.multicriteria.x18.ruleKey=cpp:S5145
sonar.issue.ignore.multicriteria.x18.resourceKey=examples/**/*