Skip to content

Commit d04d4df

Browse files
committed
Merge branch 'michaelrfairhurst/classes-3-take-2-rule-15-0-1' of github.com:github/codeql-coding-standards into michaelrfairhurst/classes-3-take-2-rule-15-0-1
2 parents 6e9dde1 + 658571a commit d04d4df

2 files changed

Lines changed: 62 additions & 48 deletions

File tree

cpp/common/src/codingstandards/cpp/exclusions/cpp/RuleMetadata.qll

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,6 @@ import OrderOfEvaluation
8383
import OutOfBounds
8484
import Pointers
8585
import Preconditions1
86-
import Preconditions2
8786
import Preconditions3
8887
import Preconditions4
8988
import Preconditions5
@@ -193,7 +192,6 @@ newtype TCPPQuery =
193192
TOutOfBoundsPackageQuery(OutOfBoundsQuery q) or
194193
TPointersPackageQuery(PointersQuery q) or
195194
TPreconditions1PackageQuery(Preconditions1Query q) or
196-
TPreconditions2PackageQuery(Preconditions2Query q) or
197195
TPreconditions3PackageQuery(Preconditions3Query q) or
198196
TPreconditions4PackageQuery(Preconditions4Query q) or
199197
TPreconditions5PackageQuery(Preconditions5Query q) or
@@ -303,7 +301,6 @@ predicate isQueryMetadata(Query query, string queryId, string ruleId, string cat
303301
isOutOfBoundsQueryMetadata(query, queryId, ruleId, category) or
304302
isPointersQueryMetadata(query, queryId, ruleId, category) or
305303
isPreconditions1QueryMetadata(query, queryId, ruleId, category) or
306-
isPreconditions2QueryMetadata(query, queryId, ruleId, category) or
307304
isPreconditions3QueryMetadata(query, queryId, ruleId, category) or
308305
isPreconditions4QueryMetadata(query, queryId, ruleId, category) or
309306
isPreconditions5QueryMetadata(query, queryId, ruleId, category) or

cpp/misra/test/rules/RULE-15-0-1/test.cpp

Lines changed: 62 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,8 @@ class CustomizedAssignsCompliant { // COMPLIANT: copy-enabled (2)
178178
CUSTOMIZED, CUSTOMIZED, CUSTOMIZED)
179179
};
180180

181-
class CustomizedCopyCtorDefaultedNonCompliant { // NON_COMPLIANT: copy-enabled (2)
181+
// copy-enabled (2)
182+
class CustomizedCopyCtorDefaultedNonCompliant { // NON_COMPLIANT
182183
public:
183184
DEFINE_ALL_SPECIAL_MEMBERS(CustomizedCopyCtorDefaultedNonCompliant,
184185
CUSTOMIZED, DEFAULTED, DEFAULTED, DEFAULTED,
@@ -218,31 +219,36 @@ class MoveOnlyNotCustomizedNonCompliant { // NON_COMPLIANT: move-only (1)
218219

219220
// Move-only with a customized dtor requires customized move assignment
220221
// operator.
221-
class MoveOnlyAssignableNotCustomizedNonCompliant { // NON_COMPLIANT: move-only (2)
222+
// move-only (2)
223+
class MoveOnlyAssignableNotCustomizedNonCompliant { // NON_COMPLIANT
222224
public:
223225
DEFINE_ALL_SPECIAL_MEMBERS(MoveOnlyAssignableNotCustomizedNonCompliant,
224226
DELETED, DEFAULTED, DELETED, DEFAULTED, CUSTOMIZED)
225227
};
226228

227-
class MoveOnlyCustomizedCompliant { // COMPLIANT -- customized move: move-only (1)
229+
// customized move: move-only (1)
230+
class MoveOnlyCustomizedCompliant { // COMPLIANT
228231
public:
229232
DEFINE_ALL_SPECIAL_MEMBERS(MoveOnlyCustomizedCompliant, DELETED, CUSTOMIZED,
230233
DELETED, DELETED, CUSTOMIZED)
231234
};
232235

233-
class MoveOnlyAssignableCustomizedCompliant { // COMPLIANT -- customized move: move-only (2)
236+
// customized move: move-only (2)
237+
class MoveOnlyAssignableCustomizedCompliant { // COMPLIANT
234238
public:
235239
DEFINE_ALL_SPECIAL_MEMBERS(MoveOnlyAssignableCustomizedCompliant, DELETED,
236240
CUSTOMIZED, DELETED, CUSTOMIZED, CUSTOMIZED)
237241
};
238242

239-
class MoveOnlyNotCustomizedCompliant { // COMPLIANT -- default dtor: move-only (1)
243+
// default dtor: move-only (1)
244+
class MoveOnlyNotCustomizedCompliant { // COMPLIANT
240245
public:
241246
DEFINE_ALL_SPECIAL_MEMBERS(MoveOnlyNotCustomizedCompliant, DELETED, DEFAULTED,
242247
DELETED, DELETED, DEFAULTED)
243248
};
244249

245-
class MoveOnlyAssignableNotCustomizedCompliant { // COMPLIANT -- default dtor: move-only (2)
250+
// default dtor: move-only (2)
251+
class MoveOnlyAssignableNotCustomizedCompliant { // COMPLIANT
246252
public:
247253
DEFINE_ALL_SPECIAL_MEMBERS(MoveOnlyAssignableNotCustomizedCompliant, DELETED,
248254
DEFAULTED, DELETED, DEFAULTED, DEFAULTED)
@@ -276,75 +282,86 @@ class CopyEnabledCustomizedDtorCompliant2 { // NON-COMPLIANT: copy-enabled (2)
276282
DTOR(CopyEnabledCustomizedDtorCompliant2) CUSTOMIZED
277283
};
278284

279-
class CopyAssignableCustomizedDtorCompliant1 { // COMPLIANT: copy-assignable class with both move operations customized
285+
// copy-assignable class with both move operations customized
286+
class CopyAssignableCustomizedDtorCompliant1 { // COMPLIANT
280287
public:
281288
DEFINE_ALL_SPECIAL_MEMBERS(CopyAssignableCustomizedDtorCompliant1, DEFAULTED,
282289
CUSTOMIZED, CUSTOMIZED, CUSTOMIZED, CUSTOMIZED)
283290
};
284291

285-
class CopyAssignableCustomizedDtorCompliant2 { // COMPLIANT: copy-assignable class with both move operations not declared
292+
// copy-assignable class with both move operations not declared
293+
class CopyAssignableCustomizedDtorCompliant2 { // COMPLIANT
286294
public:
287-
COPY_CTOR(CopyAssignableCustomizedDtorCompliant2) DEFAULTED
295+
COPY_CTOR(CopyAssignableCustomizedDtorCompliant2)
296+
DEFAULTED
288297
// Move constructor is not declared
289-
COPY_ASSIGN(CopyAssignableCustomizedDtorCompliant2) CUSTOMIZED
298+
COPY_ASSIGN(CopyAssignableCustomizedDtorCompliant2)
299+
CUSTOMIZED
290300
// Move assignment operator is not declared
291301
DTOR(CopyAssignableCustomizedDtorCompliant2) CUSTOMIZED
292302
};
293303

294-
class CopyAssignableCustomizedDtorNonCompliant1 { // NON_COMPLIANT: copy-assignable class with only one of move operations not declared
304+
// copy-assignable class with only one of move operations not declared
305+
class CopyAssignableCustomizedDtorNonCompliant1 { // NON_COMPLIANT
295306
public:
296-
COPY_CTOR(CopyAssignableCustomizedDtorNonCompliant1) CUSTOMIZED
297-
MOVE_CTOR(CopyAssignableCustomizedDtorNonCompliant1) CUSTOMIZED
298-
COPY_ASSIGN(CopyAssignableCustomizedDtorNonCompliant1) CUSTOMIZED
299-
// Move assignment operator is not declared
300-
DTOR(CopyAssignableCustomizedDtorNonCompliant1) CUSTOMIZED
307+
COPY_CTOR(CopyAssignableCustomizedDtorNonCompliant1)
308+
CUSTOMIZED MOVE_CTOR(CopyAssignableCustomizedDtorNonCompliant1) CUSTOMIZED
309+
COPY_ASSIGN(CopyAssignableCustomizedDtorNonCompliant1) CUSTOMIZED
310+
// Move assignment operator is not declared
311+
DTOR(CopyAssignableCustomizedDtorNonCompliant1) CUSTOMIZED
301312
};
302313

303-
class CopyAssignableCustomizedDtorNonCompliant2 { // NON_COMPLIANT: copy-assignable class with only one of move operations not declared
314+
// copy-assignable class with only one of move operations not declared
315+
class CopyAssignableCustomizedDtorNonCompliant2 { // NON_COMPLIANT
304316
public:
305-
COPY_CTOR(CopyAssignableCustomizedDtorNonCompliant2) CUSTOMIZED
317+
COPY_CTOR(CopyAssignableCustomizedDtorNonCompliant2)
318+
CUSTOMIZED
306319
// Move constructor is not declared
307-
COPY_ASSIGN(CopyAssignableCustomizedDtorNonCompliant2) CUSTOMIZED
308-
MOVE_ASSIGN(CopyAssignableCustomizedDtorNonCompliant2) CUSTOMIZED
309-
DTOR(CopyAssignableCustomizedDtorNonCompliant2) CUSTOMIZED
320+
COPY_ASSIGN(CopyAssignableCustomizedDtorNonCompliant2)
321+
CUSTOMIZED MOVE_ASSIGN(CopyAssignableCustomizedDtorNonCompliant2) CUSTOMIZED
322+
DTOR(CopyAssignableCustomizedDtorNonCompliant2) CUSTOMIZED
310323
};
311324

312-
class CopyAssignableCustomizedDtorNonCompliant3 { // NON_COMPLIANT: copy-assignable class with only one of move operations not declared
325+
// copy-assignable class with only one of move operations not declared
326+
class CopyAssignableCustomizedDtorNonCompliant3 { // NON_COMPLIANT
313327
public:
314-
315-
COPY_CTOR(CopyAssignableCustomizedDtorNonCompliant3) CUSTOMIZED
316-
MOVE_CTOR(CopyAssignableCustomizedDtorNonCompliant3) CUSTOMIZED
317-
// Copy assignment operator is not declared
318-
MOVE_ASSIGN(CopyAssignableCustomizedDtorNonCompliant3) CUSTOMIZED
319-
DTOR(CopyAssignableCustomizedDtorNonCompliant3) CUSTOMIZED
320-
328+
COPY_CTOR(CopyAssignableCustomizedDtorNonCompliant3)
329+
CUSTOMIZED MOVE_CTOR(CopyAssignableCustomizedDtorNonCompliant3) CUSTOMIZED
330+
// Copy assignment operator is not declared
331+
MOVE_ASSIGN(CopyAssignableCustomizedDtorNonCompliant3) CUSTOMIZED
332+
DTOR(CopyAssignableCustomizedDtorNonCompliant3) CUSTOMIZED
321333
};
322334

323-
class CopyAssignableCustomizedDtorNonCompliant4 { // NON_COMPLIANT: copy-assignable class with only one of move operations not declared
335+
// copy-assignable class with only one of move operations not declared
336+
class CopyAssignableCustomizedDtorNonCompliant4 { // NON_COMPLIANT
324337
public:
325-
COPY_CTOR(CopyAssignableCustomizedDtorNonCompliant4) CUSTOMIZED
338+
COPY_CTOR(CopyAssignableCustomizedDtorNonCompliant4)
339+
CUSTOMIZED
326340
// Move constructor is not declared
327-
COPY_ASSIGN(CopyAssignableCustomizedDtorNonCompliant4) CUSTOMIZED
328-
MOVE_ASSIGN(CopyAssignableCustomizedDtorNonCompliant4) CUSTOMIZED
329-
DTOR(CopyAssignableCustomizedDtorNonCompliant4) CUSTOMIZED
341+
COPY_ASSIGN(CopyAssignableCustomizedDtorNonCompliant4)
342+
CUSTOMIZED MOVE_ASSIGN(CopyAssignableCustomizedDtorNonCompliant4) CUSTOMIZED
343+
DTOR(CopyAssignableCustomizedDtorNonCompliant4) CUSTOMIZED
330344
};
331345

332-
class CopyAssignableCustomizedDtorNonCompliant5 { // NON_COMPLIANT: copy-assignable class with only one of move operations not declared
346+
// copy-assignable class with only one of move operations not declared
347+
class CopyAssignableCustomizedDtorNonCompliant5 { // NON_COMPLIANT
333348
public:
334-
COPY_CTOR(CopyAssignableCustomizedDtorNonCompliant5) CUSTOMIZED
335-
MOVE_CTOR(CopyAssignableCustomizedDtorNonCompliant5) DEFAULTED
336-
COPY_ASSIGN(CopyAssignableCustomizedDtorNonCompliant5) CUSTOMIZED
337-
// Move assignment operator is not declared
338-
DTOR(CopyAssignableCustomizedDtorNonCompliant5) CUSTOMIZED
349+
COPY_CTOR(CopyAssignableCustomizedDtorNonCompliant5)
350+
CUSTOMIZED MOVE_CTOR(CopyAssignableCustomizedDtorNonCompliant5) DEFAULTED
351+
COPY_ASSIGN(CopyAssignableCustomizedDtorNonCompliant5) CUSTOMIZED
352+
// Move assignment operator is not declared
353+
DTOR(CopyAssignableCustomizedDtorNonCompliant5) CUSTOMIZED
339354
};
340355

341-
class CopyAssignableCustomizedDtorNonCompliant6 { // NON_COMPLIANT: copy-assignable class with only one of move operations not declared
356+
// copy-assignable class with only one of move operations not declared
357+
class CopyAssignableCustomizedDtorNonCompliant6 { // NON_COMPLIANT
342358
public:
343-
COPY_CTOR(CopyAssignableCustomizedDtorNonCompliant6) CUSTOMIZED
359+
COPY_CTOR(CopyAssignableCustomizedDtorNonCompliant6)
360+
CUSTOMIZED
344361
// Move constructor is not declared
345-
COPY_ASSIGN(CopyAssignableCustomizedDtorNonCompliant6) CUSTOMIZED
346-
MOVE_ASSIGN(CopyAssignableCustomizedDtorNonCompliant6) DEFAULTED
347-
DTOR(CopyAssignableCustomizedDtorNonCompliant6) CUSTOMIZED
362+
COPY_ASSIGN(CopyAssignableCustomizedDtorNonCompliant6)
363+
CUSTOMIZED MOVE_ASSIGN(CopyAssignableCustomizedDtorNonCompliant6) DEFAULTED
364+
DTOR(CopyAssignableCustomizedDtorNonCompliant6) CUSTOMIZED
348365
};
349366

350367
// A public unmovable base class shall have a public virtual destructor

0 commit comments

Comments
 (0)