Skip to content

Commit 429d94d

Browse files
hjmjohnsonclaude
andcommitted
STYLE: Fix static ctkLogger in public PythonQt decorator headers
ctkCorePythonQtDecorators.h and ctkDICOMCorePythonQtDecorators.h each declared 'static ctkLogger logger(...)' at file scope, triggering the clazy:non-pod-global-static warning. Although these are public headers, the logger variable has internal linkage and is not part of any exported class interface. Replace with Q_GLOBAL_STATIC_WITH_ARGS for SIOF-safe lazy initialization. Each translation unit that includes the header still gets its own logger instance (Q_GLOBAL_STATIC uses an anonymous namespace internally), so behavior is unchanged. All logger.method() call sites in both headers are updated to logger->method(). Note: downstream code directly referencing 'logger' by name after including these headers (unlikely in practice) would need the same .method() -> ->method() update. Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
1 parent 690412b commit 429d94d

3 files changed

Lines changed: 48 additions & 43 deletions

File tree

Libs/Core/ctkCorePythonQtDecorators.h

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@
2424
// PythonQt includes
2525
#include <PythonQt.h>
2626

27+
// Qt includes
28+
#include <QGlobalStatic>
29+
2730
// CTK includes
2831
#include <ctkAbstractJob.h> // For ctkJobDetail
2932
#include <ctkBooleanMapper.h>
@@ -40,7 +43,7 @@
4043
// for non-static methods.
4144
//
4245

43-
static ctkLogger logger("org.commontk.core.ctkCorePythonQtDecorators");
46+
Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.commontk.core.ctkCorePythonQtDecorators"))
4447

4548
/// \ingroup Core
4649
class ctkCorePythonQtDecorators : public QObject
@@ -250,7 +253,7 @@ public Q_SLOTS:
250253
{
251254
if (td == nullptr)
252255
{
253-
logger.error("ctkJobDetail::setJobClass - Invalid ctkJobDetail");
256+
logger->error("ctkJobDetail::setJobClass - Invalid ctkJobDetail");
254257
return;
255258
}
256259

@@ -260,7 +263,7 @@ public Q_SLOTS:
260263
{
261264
if (td == nullptr)
262265
{
263-
logger.error("ctkJobDetail::jobClass - Invalid ctkJobDetail");
266+
logger->error("ctkJobDetail::jobClass - Invalid ctkJobDetail");
264267
return "";
265268
}
266269

@@ -271,7 +274,7 @@ public Q_SLOTS:
271274
{
272275
if (td == nullptr)
273276
{
274-
logger.error("ctkJobDetail::setJobUID - Invalid ctkJobDetail");
277+
logger->error("ctkJobDetail::setJobUID - Invalid ctkJobDetail");
275278
return;
276279
}
277280

@@ -281,7 +284,7 @@ public Q_SLOTS:
281284
{
282285
if (td == nullptr)
283286
{
284-
logger.error("ctkJobDetail::JobUID - Invalid ctkJobDetail");
287+
logger->error("ctkJobDetail::JobUID - Invalid ctkJobDetail");
285288
return "";
286289
}
287290

@@ -292,7 +295,7 @@ public Q_SLOTS:
292295
{
293296
if (td == nullptr)
294297
{
295-
logger.error("ctkJobDetail::setCreationDateTime - Invalid ctkJobDetail");
298+
logger->error("ctkJobDetail::setCreationDateTime - Invalid ctkJobDetail");
296299
return;
297300
}
298301

@@ -302,7 +305,7 @@ public Q_SLOTS:
302305
{
303306
if (td == nullptr)
304307
{
305-
logger.error("ctkJobDetail::creationDateTime - Invalid ctkJobDetail");
308+
logger->error("ctkJobDetail::creationDateTime - Invalid ctkJobDetail");
306309
return "";
307310
}
308311

@@ -313,7 +316,7 @@ public Q_SLOTS:
313316
{
314317
if (td == nullptr)
315318
{
316-
logger.error("ctkJobDetail::setStartDateTime - Invalid ctkJobDetail");
319+
logger->error("ctkJobDetail::setStartDateTime - Invalid ctkJobDetail");
317320
return;
318321
}
319322

@@ -323,7 +326,7 @@ public Q_SLOTS:
323326
{
324327
if (td == nullptr)
325328
{
326-
logger.error("ctkJobDetail::startDateTime - Invalid ctkJobDetail");
329+
logger->error("ctkJobDetail::startDateTime - Invalid ctkJobDetail");
327330
return "";
328331
}
329332

@@ -334,7 +337,7 @@ public Q_SLOTS:
334337
{
335338
if (td == nullptr)
336339
{
337-
logger.error("ctkJobDetail::setCompletionDateTime - Invalid ctkJobDetail");
340+
logger->error("ctkJobDetail::setCompletionDateTime - Invalid ctkJobDetail");
338341
return;
339342
}
340343

@@ -344,7 +347,7 @@ public Q_SLOTS:
344347
{
345348
if (td == nullptr)
346349
{
347-
logger.error("ctkJobDetail::completionDateTime - Invalid ctkJobDetail");
350+
logger->error("ctkJobDetail::completionDateTime - Invalid ctkJobDetail");
348351
return "";
349352
}
350353

@@ -355,7 +358,7 @@ public Q_SLOTS:
355358
{
356359
if (td == nullptr)
357360
{
358-
logger.error("ctkJobDetail::setRunningThreadID - Invalid ctkJobDetail");
361+
logger->error("ctkJobDetail::setRunningThreadID - Invalid ctkJobDetail");
359362
return;
360363
}
361364

@@ -365,7 +368,7 @@ public Q_SLOTS:
365368
{
366369
if (td == nullptr)
367370
{
368-
logger.error("ctkJobDetail::runningThreadID - Invalid ctkJobDetail");
371+
logger->error("ctkJobDetail::runningThreadID - Invalid ctkJobDetail");
369372
return "";
370373
}
371374

@@ -376,7 +379,7 @@ public Q_SLOTS:
376379
{
377380
if (td == nullptr)
378381
{
379-
logger.error("ctkJobDetail::setLogging - Invalid ctkJobDetail");
382+
logger->error("ctkJobDetail::setLogging - Invalid ctkJobDetail");
380383
return;
381384
}
382385
td->Logging = logging;
@@ -385,7 +388,7 @@ public Q_SLOTS:
385388
{
386389
if (td == nullptr)
387390
{
388-
logger.error("ctkJobDetail::logging - Invalid ctkJobDetail");
391+
logger->error("ctkJobDetail::logging - Invalid ctkJobDetail");
389392
return "";
390393
}
391394

Libs/DICOM/Core/ctkDICOMCorePythonQtDecorators.h

Lines changed: 30 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@
2424
// PythonQt includes
2525
#include <PythonQt.h>
2626

27+
// Qt includes
28+
#include <QGlobalStatic>
29+
2730
// CTK Core includes
2831
#include <ctkLogger.h>
2932

@@ -40,7 +43,7 @@
4043
// for non-static methods.
4144
//
4245

43-
static ctkLogger logger("org.commontk.core.ctkDICOMCorePythonQtDecorators");
46+
Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.commontk.core.ctkDICOMCorePythonQtDecorators"))
4447

4548
/// \ingroup DICOM_Core
4649
class ctkDICOMCorePythonQtDecorators : public QObject
@@ -69,7 +72,7 @@ public slots:
6972
{
7073
if (td == nullptr)
7174
{
72-
logger.error("ctkDICOMJobDetail::setPatientID - Invalid ctkJobDetail");
75+
logger->error("ctkDICOMJobDetail::setPatientID - Invalid ctkJobDetail");
7376
return;
7477
}
7578

@@ -79,7 +82,7 @@ public slots:
7982
{
8083
if (td == nullptr)
8184
{
82-
logger.error("ctkDICOMJobDetail::patientID - Invalid ctkJobDetail");
85+
logger->error("ctkDICOMJobDetail::patientID - Invalid ctkJobDetail");
8386
return "";
8487
}
8588

@@ -90,7 +93,7 @@ public slots:
9093
{
9194
if (td == nullptr)
9295
{
93-
logger.error("ctkDICOMJobDetail::setStudyInstanceUID - Invalid ctkJobDetail");
96+
logger->error("ctkDICOMJobDetail::setStudyInstanceUID - Invalid ctkJobDetail");
9497
return;
9598
}
9699

@@ -100,7 +103,7 @@ public slots:
100103
{
101104
if (td == nullptr)
102105
{
103-
logger.error("ctkDICOMJobDetail::studyInstanceUID - Invalid ctkJobDetail");
106+
logger->error("ctkDICOMJobDetail::studyInstanceUID - Invalid ctkJobDetail");
104107
return "";
105108
}
106109

@@ -111,7 +114,7 @@ public slots:
111114
{
112115
if (td == nullptr)
113116
{
114-
logger.error("ctkDICOMJobDetail::setSeriesInstanceUID - Invalid ctkJobDetail");
117+
logger->error("ctkDICOMJobDetail::setSeriesInstanceUID - Invalid ctkJobDetail");
115118
return;
116119
}
117120

@@ -121,7 +124,7 @@ public slots:
121124
{
122125
if (td == nullptr)
123126
{
124-
logger.error("ctkDICOMJobDetail::seriesInstanceUID - Invalid ctkJobDetail");
127+
logger->error("ctkDICOMJobDetail::seriesInstanceUID - Invalid ctkJobDetail");
125128
return "";
126129
}
127130

@@ -132,7 +135,7 @@ public slots:
132135
{
133136
if (td == nullptr)
134137
{
135-
logger.error("ctkDICOMJobDetail::setSOPInstanceUID - Invalid ctkJobDetail");
138+
logger->error("ctkDICOMJobDetail::setSOPInstanceUID - Invalid ctkJobDetail");
136139
return;
137140
}
138141

@@ -142,7 +145,7 @@ public slots:
142145
{
143146
if (td == nullptr)
144147
{
145-
logger.error("ctkDICOMJobDetail::sopInstanceUID - Invalid ctkJobDetail");
148+
logger->error("ctkDICOMJobDetail::sopInstanceUID - Invalid ctkJobDetail");
146149
return "";
147150
}
148151

@@ -153,7 +156,7 @@ public slots:
153156
{
154157
if (td == nullptr)
155158
{
156-
logger.error("ctkDICOMJobDetail::setReferenceInserterJobUID - Invalid ctkJobDetail");
159+
logger->error("ctkDICOMJobDetail::setReferenceInserterJobUID - Invalid ctkJobDetail");
157160
return;
158161
}
159162

@@ -163,7 +166,7 @@ public slots:
163166
{
164167
if (td == nullptr)
165168
{
166-
logger.error("ctkDICOMJobDetail::referenceInserterJobUID - Invalid ctkJobDetail");
169+
logger->error("ctkDICOMJobDetail::referenceInserterJobUID - Invalid ctkJobDetail");
167170
return "";
168171
}
169172

@@ -174,7 +177,7 @@ public slots:
174177
{
175178
if (td == nullptr)
176179
{
177-
logger.error("ctkDICOMJobDetail::setQueriedPatientIDs - Invalid ctkJobDetail");
180+
logger->error("ctkDICOMJobDetail::setQueriedPatientIDs - Invalid ctkJobDetail");
178181
return;
179182
}
180183

@@ -184,7 +187,7 @@ public slots:
184187
{
185188
if (td == nullptr)
186189
{
187-
logger.error("ctkDICOMJobDetail::queriedPatientIDs - Invalid ctkJobDetail");
190+
logger->error("ctkDICOMJobDetail::queriedPatientIDs - Invalid ctkJobDetail");
188191
return QStringList();
189192
}
190193

@@ -195,7 +198,7 @@ public slots:
195198
{
196199
if (td == nullptr)
197200
{
198-
logger.error("ctkDICOMJobDetail::setQueriedStudyInstanceUIDs - Invalid ctkJobDetail");
201+
logger->error("ctkDICOMJobDetail::setQueriedStudyInstanceUIDs - Invalid ctkJobDetail");
199202
return;
200203
}
201204

@@ -205,7 +208,7 @@ public slots:
205208
{
206209
if (td == nullptr)
207210
{
208-
logger.error("ctkDICOMJobDetail::queriedStudyInstanceUIDs - Invalid ctkJobDetail");
211+
logger->error("ctkDICOMJobDetail::queriedStudyInstanceUIDs - Invalid ctkJobDetail");
209212
return QStringList();
210213
}
211214

@@ -216,7 +219,7 @@ public slots:
216219
{
217220
if (td == nullptr)
218221
{
219-
logger.error("ctkDICOMJobDetail::setQueriedSeriesInstanceUIDs - Invalid ctkJobDetail");
222+
logger->error("ctkDICOMJobDetail::setQueriedSeriesInstanceUIDs - Invalid ctkJobDetail");
220223
return;
221224
}
222225

@@ -226,7 +229,7 @@ public slots:
226229
{
227230
if (td == nullptr)
228231
{
229-
logger.error("ctkDICOMJobDetail::queriedSeriesInstanceUIDs - Invalid ctkJobDetail");
232+
logger->error("ctkDICOMJobDetail::queriedSeriesInstanceUIDs - Invalid ctkJobDetail");
230233
return QStringList();
231234
}
232235

@@ -237,7 +240,7 @@ public slots:
237240
{
238241
if (td == nullptr)
239242
{
240-
logger.error("ctkDICOMJobDetail::setQueriedSOPInstanceUIDs - Invalid ctkJobDetail");
243+
logger->error("ctkDICOMJobDetail::setQueriedSOPInstanceUIDs - Invalid ctkJobDetail");
241244
return;
242245
}
243246

@@ -247,7 +250,7 @@ public slots:
247250
{
248251
if (td == nullptr)
249252
{
250-
logger.error("ctkDICOMJobDetail::queriedSOPInstanceUIDs - Invalid ctkJobDetail");
253+
logger->error("ctkDICOMJobDetail::queriedSOPInstanceUIDs - Invalid ctkJobDetail");
251254
return QStringList();
252255
}
253256

@@ -258,7 +261,7 @@ public slots:
258261
{
259262
if (td == nullptr)
260263
{
261-
logger.error("ctkDICOMJobDetail::setConnectionName - Invalid ctkJobDetail");
264+
logger->error("ctkDICOMJobDetail::setConnectionName - Invalid ctkJobDetail");
262265
return;
263266
}
264267

@@ -268,7 +271,7 @@ public slots:
268271
{
269272
if (td == nullptr)
270273
{
271-
logger.error("ctkDICOMJobDetail::connectionName - Invalid ctkJobDetail");
274+
logger->error("ctkDICOMJobDetail::connectionName - Invalid ctkJobDetail");
272275
return "";
273276
}
274277

@@ -279,7 +282,7 @@ public slots:
279282
{
280283
if (td == nullptr)
281284
{
282-
logger.error("ctkDICOMJobDetail::setDICOMLevel - Invalid ctkJobDetail");
285+
logger->error("ctkDICOMJobDetail::setDICOMLevel - Invalid ctkJobDetail");
283286
return;
284287
}
285288

@@ -289,7 +292,7 @@ public slots:
289292
{
290293
if (td == nullptr)
291294
{
292-
logger.error("ctkDICOMJobDetail::DICOMLevel - Invalid ctkJobDetail");
295+
logger->error("ctkDICOMJobDetail::DICOMLevel - Invalid ctkJobDetail");
293296
return ctkDICOMJob::DICOMLevels::None;
294297
}
295298

@@ -300,7 +303,7 @@ public slots:
300303
{
301304
if (td == nullptr)
302305
{
303-
logger.error("ctkDICOMJobDetail::setJobType - Invalid ctkJobDetail");
306+
logger->error("ctkDICOMJobDetail::setJobType - Invalid ctkJobDetail");
304307
return;
305308
}
306309

@@ -310,7 +313,7 @@ public slots:
310313
{
311314
if (td == nullptr)
312315
{
313-
logger.error("ctkDICOMJobDetail::jobType - Invalid ctkJobDetail");
316+
logger->error("ctkDICOMJobDetail::jobType - Invalid ctkJobDetail");
314317
return ctkDICOMJobResponseSet::JobType::None;
315318
}
316319

@@ -321,7 +324,7 @@ public slots:
321324
{
322325
if (td == nullptr)
323326
{
324-
logger.error("ctkDICOMJobDetail::setNumberOfDataSets - Invalid ctkJobDetail");
327+
logger->error("ctkDICOMJobDetail::setNumberOfDataSets - Invalid ctkJobDetail");
325328
return;
326329
}
327330

@@ -331,7 +334,7 @@ public slots:
331334
{
332335
if (td == nullptr)
333336
{
334-
logger.error("ctkDICOMJobDetail::numberOfDataSets - Invalid ctkJobDetail");
337+
logger->error("ctkDICOMJobDetail::numberOfDataSets - Invalid ctkJobDetail");
335338
return -1;
336339
}
337340

0 commit comments

Comments
 (0)