Warning, file /graphics/digikam/project/reports/clangtidy_visualizer.py was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 #!/usr/bin/python 0002 0003 # SPDX-FileCopyrightText: 2019 by Austin Hale, <ah at unc dot edu> 0004 # SPDX-FileCopyrightText: 2020-2024 by Gilles Caulier, <caulier dot gilles at gmail dot com> 0005 # 0006 # Export Clang tidy lint static analyzer output to HTML reports. 0007 # 0008 # SPDX-License-Identifier: BSD-3-Clause 0009 # 0010 0011 import sys 0012 import argparse 0013 import urllib.request 0014 import re 0015 from bs4 import BeautifulSoup 0016 from datetime import datetime 0017 0018 checks_list = ['[abseil-duration-addition]', 0019 '[abseil-duration-comparison]', 0020 '[abseil-duration-conversion-cast]', 0021 '[abseil-duration-division]', 0022 '[abseil-duration-factory-float]', 0023 '[abseil-duration-factory-scale]', 0024 '[abseil-duration-subtraction]', 0025 '[abseil-duration-unnecessary-conversion]', 0026 '[abseil-faster-strsplit-delimiter]', 0027 '[abseil-no-internal-dependencies]', 0028 '[abseil-no-namespace]', 0029 '[abseil-redundant-strcat-calls]', 0030 '[abseil-str-cat-append]', 0031 '[abseil-string-find-startswith]', 0032 '[abseil-time-comparison]', 0033 '[abseil-time-subtraction]', 0034 '[abseil-upgrade-duration-conversions]', 0035 '[android-cloexec-accept4]', 0036 '[android-cloexec-accept]', 0037 '[android-cloexec-creat]', 0038 '[android-cloexec-dup]', 0039 '[android-cloexec-epoll-create1]', 0040 '[android-cloexec-epoll-create]', 0041 '[android-cloexec-fopen]', 0042 '[android-cloexec-inotify-init1]', 0043 '[android-cloexec-inotify-init]', 0044 '[android-cloexec-memfd-create]', 0045 '[android-cloexec-open]', 0046 '[android-cloexec-pipe2]', 0047 '[android-cloexec-pipe]', 0048 '[android-cloexec-socket]', 0049 '[android-comparison-in-temp-failure-retry]', 0050 '[boost-use-to-string]', 0051 '[bugprone-argument-comment]', 0052 '[bugprone-assert-side-effect]', 0053 '[bugprone-bool-pointer-implicit-conversion]', 0054 '[bugprone-branch-clone]', 0055 '[bugprone-copy-constructor-init]', 0056 '[bugprone-dangling-handle]', 0057 '[bugprone-exception-escape]', 0058 '[bugprone-fold-init-type]', 0059 '[bugprone-forward-declaration-namespace]', 0060 '[bugprone-forwarding-reference-overload]', 0061 '[bugprone-inaccurate-erase]', 0062 '[bugprone-incorrect-roundings]', 0063 '[bugprone-integer-division]', 0064 '[bugprone-lambda-function-name]', 0065 '[bugprone-macro-parentheses]', 0066 '[bugprone-macro-repeated-side-effects]', 0067 '[bugprone-misplaced-operator-in-strlen-in-alloc]', 0068 '[bugprone-misplaced-widening-cast]', 0069 '[bugprone-move-forwarding-reference]', 0070 '[bugprone-multiple-statement-macro]', 0071 '[bugprone-parent-virtual-call]', 0072 '[bugprone-posix-return]', 0073 '[bugprone-sizeof-container]', 0074 '[bugprone-sizeof-expression]', 0075 '[bugprone-string-constructor]', 0076 '[bugprone-string-integer-assignment]', 0077 '[bugprone-string-literal-with-embedded-nul]', 0078 '[bugprone-suspicious-enum-usage]', 0079 '[bugprone-suspicious-memset-usage]', 0080 '[bugprone-suspicious-missing-comma]', 0081 '[bugprone-suspicious-semicolon]', 0082 '[bugprone-suspicious-string-compare]', 0083 '[bugprone-swapped-arguments]', 0084 '[bugprone-terminating-continue]', 0085 '[bugprone-throw-keyword-missing]', 0086 '[bugprone-too-small-loop-variable]', 0087 '[bugprone-undefined-memory-manipulation]', 0088 '[bugprone-undelegated-constructor]', 0089 '[bugprone-unhandled-self-assignment]', 0090 '[bugprone-unused-raii]', 0091 '[bugprone-unused-return-value]', 0092 '[bugprone-use-after-move]', 0093 '[bugprone-virtual-near-miss]', 0094 '[cert-dcl03-c]', 0095 '[cert-dcl16-c]', 0096 '[cert-dcl21-cpp]', 0097 '[cert-dcl50-cpp]', 0098 '[cert-dcl54-cpp]', 0099 '[cert-dcl58-cpp]', 0100 '[cert-dcl59-cpp]', 0101 '[cert-env33-c]', 0102 '[cert-err09-cpp]', 0103 '[cert-err34-c]', 0104 '[cert-err52-cpp]', 0105 '[cert-err58-cpp]', 0106 '[cert-err60-cpp]', 0107 '[cert-err61-cpp]', 0108 '[cert-fio38-c]', 0109 '[cert-flp30-c]', 0110 '[cert-msc30-c]', 0111 '[cert-msc32-c]', 0112 '[cert-msc50-cpp]', 0113 '[cert-msc51-cpp]', 0114 '[cert-oop11-cpp]', 0115 '[cert-oop54-cpp]', 0116 '[clang-analyzer-core.CallAndMessage]', 0117 '[clang-analyzer-core.DivideZero]', 0118 '[clang-analyzer-core.NonNullParamChecker]', 0119 '[clang-analyzer-core.NullDereference]', 0120 '[clang-analyzer-core.StackAddressEscape]', 0121 '[clang-analyzer-core.UndefinedBinaryOperatorResult]', 0122 '[clang-analyzer-core.VLASize]', 0123 '[clang-analyzer-core.uninitialized.ArraySubscript]', 0124 '[clang-analyzer-core.uninitialized.Assign]', 0125 '[clang-analyzer-core.uninitialized.Branch]', 0126 '[clang-analyzer-core.uninitialized.CapturedBlockVariable]', 0127 '[clang-analyzer-core.uninitialized.UndefReturn]', 0128 '[clang-analyzer-cplusplus.NewDeleteLeaks]', 0129 '[clang-analyzer-cplusplus.NewDelete]', 0130 '[clang-analyzer-deadcode.DeadStores]', 0131 '[clang-analyzer-nullability.NullPassedToNonnull]', 0132 '[clang-analyzer-nullability.NullReturnedFromNonnull]', 0133 '[clang-analyzer-nullability.NullableDereferenced]', 0134 '[clang-analyzer-nullability.NullablePassedToNonnull]', 0135 '[clang-analyzer-optin.mpi.MPI-Checker]', 0136 '[clang-analyzer-security.FloatLoopCounter]', 0137 '[clang-analyzer-security.insecureAPI.UncheckedReturn]', 0138 '[clang-analyzer-security.insecureAPI.getpw]', 0139 '[clang-analyzer-security.insecureAPI.gets]', 0140 '[clang-analyzer-security.insecureAPI.mkstemp]', 0141 '[clang-analyzer-security.insecureAPI.mktemp]', 0142 '[clang-analyzer-security.insecureAPI.rand]', 0143 '[clang-analyzer-security.insecureAPI.strcpy]', 0144 '[clang-analyzer-security.insecureAPI.vfork]', 0145 '[clang-analyzer-unix.API]', 0146 '[clang-analyzer-unix.MallocSizeof]', 0147 '[clang-analyzer-unix.Malloc]', 0148 '[clang-analyzer-unix.MismatchedDeallocator]', 0149 '[clang-analyzer-unix.Vfork]', 0150 '[clang-analyzer-unix.cstring.BadSizeArg]', 0151 '[clang-analyzer-unix.cstring.NullArg]', 0152 '[clang-diagnostic-#pragma-messages]', 0153 '[clang-diagnostic-#warnings]', 0154 '[clang-diagnostic-CFString-literal]', 0155 '[clang-diagnostic-CL4]', 0156 '[clang-diagnostic-IndependentClass-attribute]', 0157 '[clang-diagnostic-NSObject-attribute]', 0158 '[clang-diagnostic-abi]', 0159 '[clang-diagnostic-absolute-value]', 0160 '[clang-diagnostic-abstract-final-class]', 0161 '[clang-diagnostic-abstract-vbase-init]', 0162 '[clang-diagnostic-address-of-array-temporary]', 0163 '[clang-diagnostic-address-of-packed-member]', 0164 '[clang-diagnostic-address-of-temporary]', 0165 '[clang-diagnostic-address]', 0166 '[clang-diagnostic-aggregate-return]', 0167 '[clang-diagnostic-aligned-allocation-unavailable]', 0168 '[clang-diagnostic-all]', 0169 '[clang-diagnostic-alloca-with-align-alignof]', 0170 '[clang-diagnostic-ambiguous-delete]', 0171 '[clang-diagnostic-ambiguous-ellipsis]', 0172 '[clang-diagnostic-ambiguous-macro]', 0173 '[clang-diagnostic-ambiguous-member-template]', 0174 '[clang-diagnostic-analyzer-incompatible-plugin]', 0175 '[clang-diagnostic-anonymous-pack-parens]', 0176 '[clang-diagnostic-arc-bridge-casts-disallowed-in-nonarc]', 0177 '[clang-diagnostic-arc-maybe-repeated-use-of-weak]', 0178 '[clang-diagnostic-arc-non-pod-memaccess]', 0179 '[clang-diagnostic-arc-performSelector-leaks]', 0180 '[clang-diagnostic-arc-repeated-use-of-weak]', 0181 '[clang-diagnostic-arc-retain-cycles]', 0182 '[clang-diagnostic-arc-unsafe-retained-assign]', 0183 '[clang-diagnostic-arc]', 0184 '[clang-diagnostic-array-bounds-pointer-arithmetic]', 0185 '[clang-diagnostic-array-bounds]', 0186 '[clang-diagnostic-asm-ignored-qualifier]', 0187 '[clang-diagnostic-asm-operand-widths]', 0188 '[clang-diagnostic-asm]', 0189 '[clang-diagnostic-assign-enum]', 0190 '[clang-diagnostic-assume]', 0191 '[clang-diagnostic-at-protocol]', 0192 '[clang-diagnostic-atomic-memory-ordering]', 0193 '[clang-diagnostic-atomic-properties]', 0194 '[clang-diagnostic-atomic-property-with-user-defined-accessor]', 0195 '[clang-diagnostic-attribute-packed-for-bitfield]', 0196 '[clang-diagnostic-attributes]', 0197 '[clang-diagnostic-auto-disable-vptr-sanitizer]', 0198 '[clang-diagnostic-auto-import]', 0199 '[clang-diagnostic-auto-storage-class]', 0200 '[clang-diagnostic-auto-var-id]', 0201 '[clang-diagnostic-availability]', 0202 '[clang-diagnostic-backend-plugin]', 0203 '[clang-diagnostic-backslash-newline-escape]', 0204 '[clang-diagnostic-bad-function-cast]', 0205 '[clang-diagnostic-binary-literal]', 0206 '[clang-diagnostic-bind-to-temporary-copy]', 0207 '[clang-diagnostic-bitfield-constant-conversion]', 0208 '[clang-diagnostic-bitfield-enum-conversion]', 0209 '[clang-diagnostic-bitfield-width]', 0210 '[clang-diagnostic-bitwise-op-parentheses]', 0211 '[clang-diagnostic-block-capture-autoreleasing]', 0212 '[clang-diagnostic-bool-conversion]', 0213 '[clang-diagnostic-bool-conversions]', 0214 '[clang-diagnostic-braced-scalar-init]', 0215 '[clang-diagnostic-bridge-cast]', 0216 '[clang-diagnostic-builtin-macro-redefined]', 0217 '[clang-diagnostic-builtin-memcpy-chk-size]', 0218 '[clang-diagnostic-builtin-requires-header]', 0219 '[clang-diagnostic-c++-compat]', 0220 '[clang-diagnostic-c++0x-compat]', 0221 '[clang-diagnostic-c++0x-extensions]', 0222 '[clang-diagnostic-c++0x-narrowing]', 0223 '[clang-diagnostic-c++11-compat-deprecated-writable-strings]', 0224 '[clang-diagnostic-c++11-compat-pedantic]', 0225 '[clang-diagnostic-c++11-compat-reserved-user-defined-literal]', 0226 '[clang-diagnostic-c++11-compat]', 0227 '[clang-diagnostic-c++11-extensions]', 0228 '[clang-diagnostic-c++11-extra-semi]', 0229 '[clang-diagnostic-c++11-inline-namespace]', 0230 '[clang-diagnostic-c++11-long-long]', 0231 '[clang-diagnostic-c++11-narrowing]', 0232 '[clang-diagnostic-c++14-binary-literal]', 0233 '[clang-diagnostic-c++14-compat-pedantic]', 0234 '[clang-diagnostic-c++14-compat]', 0235 '[clang-diagnostic-c++14-extensions]', 0236 '[clang-diagnostic-c++17-compat-mangling]', 0237 '[clang-diagnostic-c++17-compat-pedantic]', 0238 '[clang-diagnostic-c++17-compat]', 0239 '[clang-diagnostic-c++17-extensions]', 0240 '[clang-diagnostic-c++1y-extensions]', 0241 '[clang-diagnostic-c++1z-compat-mangling]', 0242 '[clang-diagnostic-c++1z-compat]', 0243 '[clang-diagnostic-c++1z-extensions]', 0244 '[clang-diagnostic-c++2a-compat-pedantic]', 0245 '[clang-diagnostic-c++2a-compat]', 0246 '[clang-diagnostic-c++2a-extensions]', 0247 '[clang-diagnostic-c++98-c++11-c++14-c++17-compat-pedantic]', 0248 '[clang-diagnostic-c++98-c++11-c++14-c++17-compat]', 0249 '[clang-diagnostic-c++98-c++11-c++14-compat-pedantic]', 0250 '[clang-diagnostic-c++98-c++11-c++14-compat]', 0251 '[clang-diagnostic-c++98-c++11-compat-binary-literal]', 0252 '[clang-diagnostic-c++98-c++11-compat-pedantic]', 0253 '[clang-diagnostic-c++98-c++11-compat]', 0254 '[clang-diagnostic-c++98-compat-bind-to-temporary-copy]', 0255 '[clang-diagnostic-c++98-compat-local-type-template-args]', 0256 '[clang-diagnostic-c++98-compat-pedantic]', 0257 '[clang-diagnostic-c++98-compat-unnamed-type-template-args]', 0258 '[clang-diagnostic-c++98-compat]', 0259 '[clang-diagnostic-c11-extensions]', 0260 '[clang-diagnostic-c99-compat]', 0261 '[clang-diagnostic-c99-extensions]', 0262 '[clang-diagnostic-cast-align]', 0263 '[clang-diagnostic-cast-calling-convention]', 0264 '[clang-diagnostic-cast-of-sel-type]', 0265 '[clang-diagnostic-cast-qual]', 0266 '[clang-diagnostic-char-align]', 0267 '[clang-diagnostic-char-subscripts]', 0268 '[clang-diagnostic-clang-cl-pch]', 0269 '[clang-diagnostic-class-varargs]', 0270 '[clang-diagnostic-comma]', 0271 '[clang-diagnostic-comment]', 0272 '[clang-diagnostic-comments]', 0273 '[clang-diagnostic-compare-distinct-pointer-types]', 0274 '[clang-diagnostic-complex-component-init]', 0275 '[clang-diagnostic-conditional-type-mismatch]', 0276 '[clang-diagnostic-conditional-uninitialized]', 0277 '[clang-diagnostic-config-macros]', 0278 '[clang-diagnostic-constant-conversion]', 0279 '[clang-diagnostic-constant-logical-operand]', 0280 '[clang-diagnostic-constexpr-not-const]', 0281 '[clang-diagnostic-consumed]', 0282 '[clang-diagnostic-conversion-null]', 0283 '[clang-diagnostic-conversion]', 0284 '[clang-diagnostic-coroutine-missing-unhandled-exception]', 0285 '[clang-diagnostic-coroutine]', 0286 '[clang-diagnostic-covered-switch-default]', 0287 '[clang-diagnostic-cpp]', 0288 '[clang-diagnostic-cstring-format-directive]', 0289 '[clang-diagnostic-ctor-dtor-privacy]', 0290 '[clang-diagnostic-cuda-compat]', 0291 '[clang-diagnostic-custom-atomic-properties]', 0292 '[clang-diagnostic-dangling-else]', 0293 '[clang-diagnostic-dangling-field]', 0294 '[clang-diagnostic-dangling-initializer-list]', 0295 '[clang-diagnostic-date-time]', 0296 '[clang-diagnostic-dealloc-in-category]', 0297 '[clang-diagnostic-debug-compression-unavailable]', 0298 '[clang-diagnostic-declaration-after-statement]', 0299 '[clang-diagnostic-delegating-ctor-cycles]', 0300 '[clang-diagnostic-delete-incomplete]', 0301 '[clang-diagnostic-delete-non-virtual-dtor]', 0302 '[clang-diagnostic-deprecated-attributes]', 0303 '[clang-diagnostic-deprecated-declarations]', 0304 '[clang-diagnostic-deprecated-dynamic-exception-spec]', 0305 '[clang-diagnostic-deprecated-implementations]', 0306 '[clang-diagnostic-deprecated-increment-bool]', 0307 '[clang-diagnostic-deprecated-objc-isa-usage]', 0308 '[clang-diagnostic-deprecated-objc-pointer-introspection-performSelector]', 0309 '[clang-diagnostic-deprecated-objc-pointer-introspection]', 0310 '[clang-diagnostic-deprecated-register]', 0311 '[clang-diagnostic-deprecated-writable-strings]', 0312 '[clang-diagnostic-deprecated]', 0313 '[clang-diagnostic-direct-ivar-access]', 0314 '[clang-diagnostic-disabled-macro-expansion]', 0315 '[clang-diagnostic-disabled-optimization]', 0316 '[clang-diagnostic-discard-qual]', 0317 '[clang-diagnostic-distributed-object-modifiers]', 0318 '[clang-diagnostic-div-by-zero]', 0319 '[clang-diagnostic-division-by-zero]', 0320 '[clang-diagnostic-dll-attribute-on-redeclaration]', 0321 '[clang-diagnostic-dllexport-explicit-instantiation-decl]', 0322 '[clang-diagnostic-dllimport-static-field-def]', 0323 '[clang-diagnostic-documentation-deprecated-sync]', 0324 '[clang-diagnostic-documentation-html]', 0325 '[clang-diagnostic-documentation-pedantic]', 0326 '[clang-diagnostic-documentation-unknown-command]', 0327 '[clang-diagnostic-documentation]', 0328 '[clang-diagnostic-dollar-in-identifier-extension]', 0329 '[clang-diagnostic-double-promotion]', 0330 '[clang-diagnostic-duplicate-decl-specifier]', 0331 '[clang-diagnostic-duplicate-enum]', 0332 '[clang-diagnostic-duplicate-method-arg]', 0333 '[clang-diagnostic-duplicate-method-match]', 0334 '[clang-diagnostic-duplicate-protocol]', 0335 '[clang-diagnostic-dynamic-class-memaccess]', 0336 '[clang-diagnostic-dynamic-exception-spec]', 0337 '[clang-diagnostic-effc++]', 0338 '[clang-diagnostic-embedded-directive]', 0339 '[clang-diagnostic-empty-body]', 0340 '[clang-diagnostic-empty-decomposition]', 0341 '[clang-diagnostic-empty-translation-unit]', 0342 '[clang-diagnostic-encode-type]', 0343 '[clang-diagnostic-endif-labels]', 0344 '[clang-diagnostic-enum-compare-switch]', 0345 '[clang-diagnostic-enum-compare]', 0346 '[clang-diagnostic-enum-conversion]', 0347 '[clang-diagnostic-enum-too-large]', 0348 '[clang-diagnostic-error]', 0349 '[clang-diagnostic-exceptions]', 0350 '[clang-diagnostic-exit-time-destructors]', 0351 '[clang-diagnostic-expansion-to-defined]', 0352 '[clang-diagnostic-explicit-initialize-call]', 0353 '[clang-diagnostic-explicit-ownership-type]', 0354 '[clang-diagnostic-extended-offsetof]', 0355 '[clang-diagnostic-extern-c-compat]', 0356 '[clang-diagnostic-extern-initializer]', 0357 '[clang-diagnostic-extra-qualification]', 0358 '[clang-diagnostic-extra-semi]', 0359 '[clang-diagnostic-extra-tokens]', 0360 '[clang-diagnostic-extra]', 0361 '[clang-diagnostic-fallback]', 0362 '[clang-diagnostic-flag-enum]', 0363 '[clang-diagnostic-flexible-array-extensions]', 0364 '[clang-diagnostic-float-conversion]', 0365 '[clang-diagnostic-float-equal]', 0366 '[clang-diagnostic-float-overflow-conversion]', 0367 '[clang-diagnostic-float-zero-conversion]', 0368 '[clang-diagnostic-for-loop-analysis]', 0369 '[clang-diagnostic-format-extra-args]', 0370 '[clang-diagnostic-format-invalid-specifier]', 0371 '[clang-diagnostic-format-non-iso]', 0372 '[clang-diagnostic-format-nonliteral]', 0373 '[clang-diagnostic-format-pedantic]', 0374 '[clang-diagnostic-format-security]', 0375 '[clang-diagnostic-format-y2k]', 0376 '[clang-diagnostic-format-zero-length]', 0377 '[clang-diagnostic-format=2]', 0378 '[clang-diagnostic-format]', 0379 '[clang-diagnostic-four-char-constants]', 0380 '[clang-diagnostic-frame-larger-than=]', 0381 '[clang-diagnostic-function-def-in-objc-container]', 0382 '[clang-diagnostic-future-compat]', 0383 '[clang-diagnostic-gcc-compat]', 0384 '[clang-diagnostic-global-constructors]', 0385 '[clang-diagnostic-gnu-alignof-expression]', 0386 '[clang-diagnostic-gnu-anonymous-struct]', 0387 '[clang-diagnostic-gnu-array-member-paren-init]', 0388 '[clang-diagnostic-gnu-auto-type]', 0389 '[clang-diagnostic-gnu-binary-literal]', 0390 '[clang-diagnostic-gnu-case-range]', 0391 '[clang-diagnostic-gnu-complex-integer]', 0392 '[clang-diagnostic-gnu-compound-literal-initializer]', 0393 '[clang-diagnostic-gnu-conditional-omitted-operand]', 0394 '[clang-diagnostic-gnu-designator]', 0395 '[clang-diagnostic-gnu-empty-initializer]', 0396 '[clang-diagnostic-gnu-empty-struct]', 0397 '[clang-diagnostic-gnu-flexible-array-initializer]', 0398 '[clang-diagnostic-gnu-flexible-array-union-member]', 0399 '[clang-diagnostic-gnu-folding-constant]', 0400 '[clang-diagnostic-gnu-imaginary-constant]', 0401 '[clang-diagnostic-gnu-include-next]', 0402 '[clang-diagnostic-gnu-label-as-value]', 0403 '[clang-diagnostic-gnu-redeclared-enum]', 0404 '[clang-diagnostic-gnu-statement-expression]', 0405 '[clang-diagnostic-gnu-static-float-init]', 0406 '[clang-diagnostic-gnu-string-literal-operator-template]', 0407 '[clang-diagnostic-gnu-union-cast]', 0408 '[clang-diagnostic-gnu-variable-sized-type-not-at-end]', 0409 '[clang-diagnostic-gnu-zero-line-directive]', 0410 '[clang-diagnostic-gnu-zero-variadic-macro-arguments]', 0411 '[clang-diagnostic-gnu]', 0412 '[clang-diagnostic-header-guard]', 0413 '[clang-diagnostic-header-hygiene]', 0414 '[clang-diagnostic-idiomatic-parentheses]', 0415 '[clang-diagnostic-ignored-attributes]', 0416 '[clang-diagnostic-ignored-optimization-argument]', 0417 '[clang-diagnostic-ignored-pragma-intrinsic]', 0418 '[clang-diagnostic-ignored-pragmas]', 0419 '[clang-diagnostic-ignored-qualifiers]', 0420 '[clang-diagnostic-implicit-atomic-properties]', 0421 '[clang-diagnostic-implicit-conversion-floating-point-to-bool]', 0422 '[clang-diagnostic-implicit-exception-spec-mismatch]', 0423 '[clang-diagnostic-implicit-fallthrough-per-function]', 0424 '[clang-diagnostic-implicit-fallthrough]', 0425 '[clang-diagnostic-implicit-function-declaration]', 0426 '[clang-diagnostic-implicit-int]', 0427 '[clang-diagnostic-implicit-retain-self]', 0428 '[clang-diagnostic-implicit]', 0429 '[clang-diagnostic-implicitly-unsigned-literal]', 0430 '[clang-diagnostic-import-preprocessor-directive-pedantic]', 0431 '[clang-diagnostic-import]', 0432 '[clang-diagnostic-inaccessible-base]', 0433 '[clang-diagnostic-include-next-absolute-path]', 0434 '[clang-diagnostic-include-next-outside-header]', 0435 '[clang-diagnostic-incompatible-exception-spec]', 0436 '[clang-diagnostic-incompatible-function-pointer-types]', 0437 '[clang-diagnostic-incompatible-library-redeclaration]', 0438 '[clang-diagnostic-incompatible-ms-struct]', 0439 '[clang-diagnostic-incompatible-pointer-types-discards-qualifiers]', 0440 '[clang-diagnostic-incompatible-pointer-types]', 0441 '[clang-diagnostic-incompatible-property-type]', 0442 '[clang-diagnostic-incompatible-sysroot]', 0443 '[clang-diagnostic-incomplete-implementation]', 0444 '[clang-diagnostic-incomplete-module]', 0445 '[clang-diagnostic-incomplete-umbrella]', 0446 '[clang-diagnostic-inconsistent-dllimport]', 0447 '[clang-diagnostic-inconsistent-missing-destructor-override]', 0448 '[clang-diagnostic-inconsistent-missing-override]', 0449 '[clang-diagnostic-increment-bool]', 0450 '[clang-diagnostic-infinite-recursion]', 0451 '[clang-diagnostic-init-self]', 0452 '[clang-diagnostic-initializer-overrides]', 0453 '[clang-diagnostic-injected-class-name]', 0454 '[clang-diagnostic-inline-asm]', 0455 '[clang-diagnostic-inline-new-delete]', 0456 '[clang-diagnostic-inline]', 0457 '[clang-diagnostic-instantiation-after-specialization]', 0458 '[clang-diagnostic-int-conversion]', 0459 '[clang-diagnostic-int-conversions]', 0460 '[clang-diagnostic-int-to-pointer-cast]', 0461 '[clang-diagnostic-int-to-void-pointer-cast]', 0462 '[clang-diagnostic-integer-overflow]', 0463 '[clang-diagnostic-invalid-command-line-argument]', 0464 '[clang-diagnostic-invalid-constexpr]', 0465 '[clang-diagnostic-invalid-iboutlet]', 0466 '[clang-diagnostic-invalid-initializer-from-system-header]', 0467 '[clang-diagnostic-invalid-ios-deployment-target]', 0468 '[clang-diagnostic-invalid-noreturn]', 0469 '[clang-diagnostic-invalid-offsetof]', 0470 '[clang-diagnostic-invalid-or-nonexistent-directory]', 0471 '[clang-diagnostic-invalid-partial-specialization]', 0472 '[clang-diagnostic-invalid-pch]', 0473 '[clang-diagnostic-invalid-pp-token]', 0474 '[clang-diagnostic-invalid-source-encoding]', 0475 '[clang-diagnostic-invalid-token-paste]', 0476 '[clang-diagnostic-jump-seh-finally]', 0477 '[clang-diagnostic-keyword-compat]', 0478 '[clang-diagnostic-keyword-macro]', 0479 '[clang-diagnostic-knr-promoted-parameter]', 0480 '[clang-diagnostic-language-extension-token]', 0481 '[clang-diagnostic-large-by-value-copy]', 0482 '[clang-diagnostic-liblto]', 0483 '[clang-diagnostic-literal-conversion]', 0484 '[clang-diagnostic-literal-range]', 0485 '[clang-diagnostic-local-type-template-args]', 0486 '[clang-diagnostic-logical-not-parentheses]', 0487 '[clang-diagnostic-logical-op-parentheses]', 0488 '[clang-diagnostic-long-long]', 0489 '[clang-diagnostic-loop-analysis]', 0490 '[clang-diagnostic-macro-redefined]', 0491 '[clang-diagnostic-main-return-type]', 0492 '[clang-diagnostic-main]', 0493 '[clang-diagnostic-malformed-warning-check]', 0494 '[clang-diagnostic-many-braces-around-scalar-init]', 0495 '[clang-diagnostic-max-unsigned-zero]', 0496 '[clang-diagnostic-memsize-comparison]', 0497 '[clang-diagnostic-method-signatures]', 0498 '[clang-diagnostic-microsoft-anon-tag]', 0499 '[clang-diagnostic-microsoft-cast]', 0500 '[clang-diagnostic-microsoft-charize]', 0501 '[clang-diagnostic-microsoft-comment-paste]', 0502 '[clang-diagnostic-microsoft-const-init]', 0503 '[clang-diagnostic-microsoft-cpp-macro]', 0504 '[clang-diagnostic-microsoft-default-arg-redefinition]', 0505 '[clang-diagnostic-microsoft-end-of-file]', 0506 '[clang-diagnostic-microsoft-enum-forward-reference]', 0507 '[clang-diagnostic-microsoft-enum-value]', 0508 '[clang-diagnostic-microsoft-exception-spec]', 0509 '[clang-diagnostic-microsoft-exists]', 0510 '[clang-diagnostic-microsoft-explicit-constructor-call]', 0511 '[clang-diagnostic-microsoft-extra-qualification]', 0512 '[clang-diagnostic-microsoft-fixed-enum]', 0513 '[clang-diagnostic-microsoft-flexible-array]', 0514 '[clang-diagnostic-microsoft-goto]', 0515 '[clang-diagnostic-microsoft-include]', 0516 '[clang-diagnostic-microsoft-mutable-reference]', 0517 '[clang-diagnostic-microsoft-pure-definition]', 0518 '[clang-diagnostic-microsoft-redeclare-static]', 0519 '[clang-diagnostic-microsoft-sealed]', 0520 '[clang-diagnostic-microsoft-template]', 0521 '[clang-diagnostic-microsoft-union-member-reference]', 0522 '[clang-diagnostic-microsoft-unqualified-friend]', 0523 '[clang-diagnostic-microsoft-using-decl]', 0524 '[clang-diagnostic-microsoft-void-pseudo-dtor]', 0525 '[clang-diagnostic-microsoft]', 0526 '[clang-diagnostic-mismatched-new-delete]', 0527 '[clang-diagnostic-mismatched-parameter-types]', 0528 '[clang-diagnostic-mismatched-return-types]', 0529 '[clang-diagnostic-mismatched-tags]', 0530 '[clang-diagnostic-missing-braces]', 0531 '[clang-diagnostic-missing-declarations]', 0532 '[clang-diagnostic-missing-exception-spec]', 0533 '[clang-diagnostic-missing-field-initializers]', 0534 '[clang-diagnostic-missing-format-attribute]', 0535 '[clang-diagnostic-missing-include-dirs]', 0536 '[clang-diagnostic-missing-method-return-type]', 0537 '[clang-diagnostic-missing-noescape]', 0538 '[clang-diagnostic-missing-noreturn]', 0539 '[clang-diagnostic-missing-prototype-for-cc]', 0540 '[clang-diagnostic-missing-prototypes]', 0541 '[clang-diagnostic-missing-selector-name]', 0542 '[clang-diagnostic-missing-sysroot]', 0543 '[clang-diagnostic-missing-variable-declarations]', 0544 '[clang-diagnostic-module-build]', 0545 '[clang-diagnostic-module-conflict]', 0546 '[clang-diagnostic-module-file-config-mismatch]', 0547 '[clang-diagnostic-module-file-extension]', 0548 '[clang-diagnostic-module-import-in-extern-c]', 0549 '[clang-diagnostic-modules-ambiguous-internal-linkage]', 0550 '[clang-diagnostic-modules-import-nested-redundant]', 0551 '[clang-diagnostic-most]', 0552 '[clang-diagnostic-move]', 0553 '[clang-diagnostic-msvc-include]', 0554 '[clang-diagnostic-msvc-not-found]', 0555 '[clang-diagnostic-multichar]', 0556 '[clang-diagnostic-multiple-move-vbase]', 0557 '[clang-diagnostic-narrowing]', 0558 '[clang-diagnostic-nested-anon-types]', 0559 '[clang-diagnostic-nested-externs]', 0560 '[clang-diagnostic-new-returns-null]', 0561 '[clang-diagnostic-newline-eof]', 0562 '[clang-diagnostic-noexcept-type]', 0563 '[clang-diagnostic-non-gcc]', 0564 '[clang-diagnostic-non-literal-null-conversion]', 0565 '[clang-diagnostic-non-modular-include-in-framework-module]', 0566 '[clang-diagnostic-non-modular-include-in-module]', 0567 '[clang-diagnostic-non-pod-varargs]', 0568 '[clang-diagnostic-non-virtual-dtor]', 0569 '[clang-diagnostic-nonnull]', 0570 '[clang-diagnostic-nonportable-cfstrings]', 0571 '[clang-diagnostic-nonportable-include-path]', 0572 '[clang-diagnostic-nonportable-system-include-path]', 0573 '[clang-diagnostic-nonportable-vector-initialization]', 0574 '[clang-diagnostic-nsconsumed-mismatch]', 0575 '[clang-diagnostic-nsreturns-mismatch]', 0576 '[clang-diagnostic-null-arithmetic]', 0577 '[clang-diagnostic-null-character]', 0578 '[clang-diagnostic-null-conversion]', 0579 '[clang-diagnostic-null-dereference]', 0580 '[clang-diagnostic-null-pointer-arithmetic]', 0581 '[clang-diagnostic-nullability-completeness-on-arrays]', 0582 '[clang-diagnostic-nullability-completeness]', 0583 '[clang-diagnostic-nullability-declspec]', 0584 '[clang-diagnostic-nullability-extension]', 0585 '[clang-diagnostic-nullability-inferred-on-nested-type]', 0586 '[clang-diagnostic-nullability]', 0587 '[clang-diagnostic-nullable-to-nonnull-conversion]', 0588 '[clang-diagnostic-objc-autosynthesis-property-ivar-name-match]', 0589 '[clang-diagnostic-objc-circular-container]', 0590 '[clang-diagnostic-objc-cocoa-api]', 0591 '[clang-diagnostic-objc-designated-initializers]', 0592 '[clang-diagnostic-objc-flexible-array]', 0593 '[clang-diagnostic-objc-forward-class-redefinition]', 0594 '[clang-diagnostic-objc-interface-ivars]', 0595 '[clang-diagnostic-objc-literal-compare]', 0596 '[clang-diagnostic-objc-literal-conversion]', 0597 '[clang-diagnostic-objc-macro-redefinition]', 0598 '[clang-diagnostic-objc-messaging-id]', 0599 '[clang-diagnostic-objc-method-access]', 0600 '[clang-diagnostic-objc-missing-property-synthesis]', 0601 '[clang-diagnostic-objc-missing-super-calls]', 0602 '[clang-diagnostic-objc-multiple-method-names]', 0603 '[clang-diagnostic-objc-noncopy-retain-block-property]', 0604 '[clang-diagnostic-objc-nonunified-exceptions]', 0605 '[clang-diagnostic-objc-property-implementation]', 0606 '[clang-diagnostic-objc-property-implicit-mismatch]', 0607 '[clang-diagnostic-objc-property-matches-cocoa-ownership-rule]', 0608 '[clang-diagnostic-objc-property-no-attribute]', 0609 '[clang-diagnostic-objc-property-synthesis]', 0610 '[clang-diagnostic-objc-protocol-method-implementation]', 0611 '[clang-diagnostic-objc-protocol-property-synthesis]', 0612 '[clang-diagnostic-objc-protocol-qualifiers]', 0613 '[clang-diagnostic-objc-readonly-with-setter-property]', 0614 '[clang-diagnostic-objc-redundant-api-use]', 0615 '[clang-diagnostic-objc-redundant-literal-use]', 0616 '[clang-diagnostic-objc-root-class]', 0617 '[clang-diagnostic-objc-string-compare]', 0618 '[clang-diagnostic-objc-string-concatenation]', 0619 '[clang-diagnostic-objc-unsafe-perform-selector]', 0620 '[clang-diagnostic-odr]', 0621 '[clang-diagnostic-old-style-cast]', 0622 '[clang-diagnostic-old-style-definition]', 0623 '[clang-diagnostic-opencl-unsupported-rgba]', 0624 '[clang-diagnostic-openmp-clauses]', 0625 '[clang-diagnostic-openmp-loop-form]', 0626 '[clang-diagnostic-openmp-target]', 0627 '[clang-diagnostic-option-ignored]', 0628 '[clang-diagnostic-out-of-line-declaration]', 0629 '[clang-diagnostic-out-of-scope-function]', 0630 '[clang-diagnostic-over-aligned]', 0631 '[clang-diagnostic-overflow]', 0632 '[clang-diagnostic-overlength-strings]', 0633 '[clang-diagnostic-overloaded-shift-op-parentheses]', 0634 '[clang-diagnostic-overloaded-virtual]', 0635 '[clang-diagnostic-override-module]', 0636 '[clang-diagnostic-overriding-method-mismatch]', 0637 '[clang-diagnostic-overriding-t-option]', 0638 '[clang-diagnostic-packed]', 0639 '[clang-diagnostic-padded]', 0640 '[clang-diagnostic-parentheses-equality]', 0641 '[clang-diagnostic-parentheses]', 0642 '[clang-diagnostic-partial-availability]', 0643 '[clang-diagnostic-pass-analysis]', 0644 '[clang-diagnostic-pass-failed]', 0645 '[clang-diagnostic-pass-missed]', 0646 '[clang-diagnostic-pass]', 0647 '[clang-diagnostic-pch-date-time]', 0648 '[clang-diagnostic-pedantic-core-features]', 0649 '[clang-diagnostic-pedantic]', 0650 '[clang-diagnostic-pessimizing-move]', 0651 '[clang-diagnostic-pointer-arith]', 0652 '[clang-diagnostic-pointer-bool-conversion]', 0653 '[clang-diagnostic-pointer-sign]', 0654 '[clang-diagnostic-pointer-to-int-cast]', 0655 '[clang-diagnostic-pointer-type-mismatch]', 0656 '[clang-diagnostic-potentially-evaluated-expression]', 0657 '[clang-diagnostic-pragma-clang-attribute]', 0658 '[clang-diagnostic-pragma-once-outside-header]', 0659 '[clang-diagnostic-pragma-pack-suspicious-include]', 0660 '[clang-diagnostic-pragma-pack]', 0661 '[clang-diagnostic-pragma-system-header-outside-header]', 0662 '[clang-diagnostic-pragmas]', 0663 '[clang-diagnostic-predefined-identifier-outside-function]', 0664 '[clang-diagnostic-private-extern]', 0665 '[clang-diagnostic-private-header]', 0666 '[clang-diagnostic-private-module]', 0667 '[clang-diagnostic-profile-instr-missing]', 0668 '[clang-diagnostic-profile-instr-out-of-date]', 0669 '[clang-diagnostic-profile-instr-unprofiled]', 0670 '[clang-diagnostic-property-access-dot-syntax]', 0671 '[clang-diagnostic-property-attribute-mismatch]', 0672 '[clang-diagnostic-protocol-property-synthesis-ambiguity]', 0673 '[clang-diagnostic-protocol]', 0674 '[clang-diagnostic-qualified-void-return-type]', 0675 '[clang-diagnostic-range-loop-analysis]', 0676 '[clang-diagnostic-readonly-iboutlet-property]', 0677 '[clang-diagnostic-receiver-expr]', 0678 '[clang-diagnostic-receiver-forward-class]', 0679 '[clang-diagnostic-redeclared-class-member]', 0680 '[clang-diagnostic-redundant-decls]', 0681 '[clang-diagnostic-redundant-move]', 0682 '[clang-diagnostic-redundant-parens]', 0683 '[clang-diagnostic-register]', 0684 '[clang-diagnostic-reinterpret-base-class]', 0685 '[clang-diagnostic-remark-backend-plugin]', 0686 '[clang-diagnostic-reorder]', 0687 '[clang-diagnostic-requires-super-attribute]', 0688 '[clang-diagnostic-reserved-id-macro]', 0689 '[clang-diagnostic-reserved-user-defined-literal]', 0690 '[clang-diagnostic-retained-language-linkage]', 0691 '[clang-diagnostic-return-stack-address]', 0692 '[clang-diagnostic-return-type-c-linkage]', 0693 '[clang-diagnostic-return-type]', 0694 '[clang-diagnostic-rtti-for-exceptions]', 0695 '[clang-diagnostic-sanitize-address]', 0696 '[clang-diagnostic-section]', 0697 '[clang-diagnostic-selector-type-mismatch]', 0698 '[clang-diagnostic-selector]', 0699 '[clang-diagnostic-self-assign-field]', 0700 '[clang-diagnostic-self-assign]', 0701 '[clang-diagnostic-self-move]', 0702 '[clang-diagnostic-semicolon-before-method-body]', 0703 '[clang-diagnostic-sentinel]', 0704 '[clang-diagnostic-sequence-point]', 0705 '[clang-diagnostic-serialized-diagnostics]', 0706 '[clang-diagnostic-shadow-all]', 0707 '[clang-diagnostic-shadow-field-in-constructor-modified]', 0708 '[clang-diagnostic-shadow-field-in-constructor]', 0709 '[clang-diagnostic-shadow-field]', 0710 '[clang-diagnostic-shadow-ivar]', 0711 '[clang-diagnostic-shadow-uncaptured-local]', 0712 '[clang-diagnostic-shadow]', 0713 '[clang-diagnostic-shift-count-negative]', 0714 '[clang-diagnostic-shift-count-overflow]', 0715 '[clang-diagnostic-shift-negative-value]', 0716 '[clang-diagnostic-shift-op-parentheses]', 0717 '[clang-diagnostic-shift-overflow]', 0718 '[clang-diagnostic-shift-sign-overflow]', 0719 '[clang-diagnostic-shorten-64-to-32]', 0720 '[clang-diagnostic-sign-compare]', 0721 '[clang-diagnostic-sign-conversion]', 0722 '[clang-diagnostic-sign-promo]', 0723 '[clang-diagnostic-signed-enum-bitfield]', 0724 '[clang-diagnostic-sizeof-array-argument]', 0725 '[clang-diagnostic-sizeof-array-decay]', 0726 '[clang-diagnostic-sizeof-pointer-memaccess]', 0727 '[clang-diagnostic-slash-u-filename]', 0728 '[clang-diagnostic-sometimes-uninitialized]', 0729 '[clang-diagnostic-source-uses-openmp]', 0730 '[clang-diagnostic-spir-compat]', 0731 '[clang-diagnostic-stack-protector]', 0732 '[clang-diagnostic-static-float-init]', 0733 '[clang-diagnostic-static-in-inline]', 0734 '[clang-diagnostic-static-inline-explicit-instantiation]', 0735 '[clang-diagnostic-static-local-in-inline]', 0736 '[clang-diagnostic-static-self-init]', 0737 '[clang-diagnostic-strict-aliasing=0]', 0738 '[clang-diagnostic-strict-aliasing=1]', 0739 '[clang-diagnostic-strict-aliasing=2]', 0740 '[clang-diagnostic-strict-aliasing]', 0741 '[clang-diagnostic-strict-overflow=0]', 0742 '[clang-diagnostic-strict-overflow=1]', 0743 '[clang-diagnostic-strict-overflow=2]', 0744 '[clang-diagnostic-strict-overflow=3]', 0745 '[clang-diagnostic-strict-overflow=4]', 0746 '[clang-diagnostic-strict-overflow=5]', 0747 '[clang-diagnostic-strict-overflow]', 0748 '[clang-diagnostic-strict-prototypes]', 0749 '[clang-diagnostic-strict-selector-match]', 0750 '[clang-diagnostic-string-compare]', 0751 '[clang-diagnostic-string-conversion]', 0752 '[clang-diagnostic-string-plus-char]', 0753 '[clang-diagnostic-string-plus-int]', 0754 '[clang-diagnostic-strlcpy-strlcat-size]', 0755 '[clang-diagnostic-strncat-size]', 0756 '[clang-diagnostic-super-class-method-mismatch]', 0757 '[clang-diagnostic-switch-bool]', 0758 '[clang-diagnostic-switch-default]', 0759 '[clang-diagnostic-switch-enum]', 0760 '[clang-diagnostic-switch]', 0761 '[clang-diagnostic-sync-fetch-and-nand-semantics-changed]', 0762 '[clang-diagnostic-synth]', 0763 '[clang-diagnostic-tautological-compare]', 0764 '[clang-diagnostic-tautological-constant-compare]', 0765 '[clang-diagnostic-tautological-constant-out-of-range-compare]', 0766 '[clang-diagnostic-tautological-overlap-compare]', 0767 '[clang-diagnostic-tautological-pointer-compare]', 0768 '[clang-diagnostic-tautological-undefined-compare]', 0769 '[clang-diagnostic-tautological-unsigned-enum-zero-compare]', 0770 '[clang-diagnostic-tautological-unsigned-zero-compare]', 0771 '[clang-diagnostic-tentative-definition-incomplete-type]', 0772 '[clang-diagnostic-thread-safety-analysis]', 0773 '[clang-diagnostic-thread-safety-attributes]', 0774 '[clang-diagnostic-thread-safety-beta]', 0775 '[clang-diagnostic-thread-safety-negative]', 0776 '[clang-diagnostic-thread-safety-precise]', 0777 '[clang-diagnostic-thread-safety-reference]', 0778 '[clang-diagnostic-thread-safety-verbose]', 0779 '[clang-diagnostic-thread-safety]', 0780 '[clang-diagnostic-trigraphs]', 0781 '[clang-diagnostic-type-limits]', 0782 '[clang-diagnostic-type-safety]', 0783 '[clang-diagnostic-typedef-redefinition]', 0784 '[clang-diagnostic-typename-missing]', 0785 '[clang-diagnostic-unable-to-open-stats-file]', 0786 '[clang-diagnostic-unavailable-declarations]', 0787 '[clang-diagnostic-undeclared-selector]', 0788 '[clang-diagnostic-undef]', 0789 '[clang-diagnostic-undefined-bool-conversion]', 0790 '[clang-diagnostic-undefined-func-template]', 0791 '[clang-diagnostic-undefined-inline]', 0792 '[clang-diagnostic-undefined-internal-type]', 0793 '[clang-diagnostic-undefined-internal]', 0794 '[clang-diagnostic-undefined-reinterpret-cast]', 0795 '[clang-diagnostic-undefined-var-template]', 0796 '[clang-diagnostic-unevaluated-expression]', 0797 '[clang-diagnostic-unguarded-availability-new]', 0798 '[clang-diagnostic-unguarded-availability]', 0799 '[clang-diagnostic-unicode-whitespace]', 0800 '[clang-diagnostic-unicode]', 0801 '[clang-diagnostic-uninitialized]', 0802 '[clang-diagnostic-unknown-argument]', 0803 '[clang-diagnostic-unknown-attributes]', 0804 '[clang-diagnostic-unknown-escape-sequence]', 0805 '[clang-diagnostic-unknown-pragmas]', 0806 '[clang-diagnostic-unknown-sanitizers]', 0807 '[clang-diagnostic-unknown-warning-option]', 0808 '[clang-diagnostic-unnamed-type-template-args]', 0809 '[clang-diagnostic-unneeded-internal-declaration]', 0810 '[clang-diagnostic-unneeded-member-function]', 0811 '[clang-diagnostic-unreachable-code-aggressive]', 0812 '[clang-diagnostic-unreachable-code-break;]', 0813 '[clang-diagnostic-unreachable-code-loop-increment]', 0814 '[clang-diagnostic-unreachable-code-return]', 0815 '[clang-diagnostic-unreachable-code]', 0816 '[clang-diagnostic-unsequenced]', 0817 '[clang-diagnostic-unsupported-abs]', 0818 '[clang-diagnostic-unsupported-availability-guard]', 0819 '[clang-diagnostic-unsupported-cb]', 0820 '[clang-diagnostic-unsupported-dll-base-class-template]', 0821 '[clang-diagnostic-unsupported-friend]', 0822 '[clang-diagnostic-unsupported-gpopt]', 0823 '[clang-diagnostic-unsupported-nan]', 0824 '[clang-diagnostic-unsupported-visibility]', 0825 '[clang-diagnostic-unusable-partial-specialization]', 0826 '[clang-diagnostic-unused-argument]', 0827 '[clang-diagnostic-unused-command-line-argument]', 0828 '[clang-diagnostic-unused-comparison]', 0829 '[clang-diagnostic-unused-const-variable]', 0830 '[clang-diagnostic-unused-exception-parameter]', 0831 '[clang-diagnostic-unused-function]', 0832 '[clang-diagnostic-unused-getter-return-value]', 0833 '[clang-diagnostic-unused-label]', 0834 '[clang-diagnostic-unused-lambda-capture]', 0835 '[clang-diagnostic-unused-local-typedef]', 0836 '[clang-diagnostic-unused-local-typedefs]', 0837 '[clang-diagnostic-unused-macros]', 0838 '[clang-diagnostic-unused-member-function]', 0839 '[clang-diagnostic-unused-parameter]', 0840 '[clang-diagnostic-unused-private-field]', 0841 '[clang-diagnostic-unused-property-ivar]', 0842 '[clang-diagnostic-unused-result]', 0843 '[clang-diagnostic-unused-template]', 0844 '[clang-diagnostic-unused-value]', 0845 '[clang-diagnostic-unused-variable]', 0846 '[clang-diagnostic-unused-volatile-lvalue]', 0847 '[clang-diagnostic-used-but-marked-unused]', 0848 '[clang-diagnostic-user-defined-literals]', 0849 '[clang-diagnostic-user-defined-warnings]', 0850 '[clang-diagnostic-varargs]', 0851 '[clang-diagnostic-variadic-macros]', 0852 '[clang-diagnostic-vec-elem-size]', 0853 '[clang-diagnostic-vector-conversion]', 0854 '[clang-diagnostic-vector-conversions]', 0855 '[clang-diagnostic-vexing-parse]', 0856 '[clang-diagnostic-visibility]', 0857 '[clang-diagnostic-vla-extension]', 0858 '[clang-diagnostic-vla]', 0859 '[clang-diagnostic-void-ptr-dereference]', 0860 '[clang-diagnostic-volatile-register-var]', 0861 '[clang-diagnostic-warning]', 0862 '[clang-diagnostic-weak-template-vtables]', 0863 '[clang-diagnostic-weak-vtables]', 0864 '[clang-diagnostic-writable-strings]', 0865 '[clang-diagnostic-write-strings]', 0866 '[clang-diagnostic-zero-as-null-pointer-constant]', 0867 '[clang-diagnostic-zero-length-array]', 0868 '[cppcoreguidelines-avoid-c-arrays]', 0869 '[cppcoreguidelines-avoid-goto]', 0870 '[cppcoreguidelines-avoid-magic-numbers]', 0871 '[cppcoreguidelines-c-copy-assignment-signature]', 0872 '[cppcoreguidelines-explicit-virtual-functions]', 0873 '[cppcoreguidelines-interfaces-global-init]', 0874 '[cppcoreguidelines-macro-usage]', 0875 '[cppcoreguidelines-narrowing-conversions]', 0876 '[cppcoreguidelines-no-malloc]', 0877 '[cppcoreguidelines-non-private-member-variables-in-classes]', 0878 '[cppcoreguidelines-owning-memory]', 0879 '[cppcoreguidelines-pro-bounds-array-to-pointer-decay]', 0880 '[cppcoreguidelines-pro-bounds-constant-array-index]', 0881 '[cppcoreguidelines-pro-bounds-pointer-arithmetic]', 0882 '[cppcoreguidelines-pro-type-const-cast]', 0883 '[cppcoreguidelines-pro-type-cstyle-cast]', 0884 '[cppcoreguidelines-pro-type-member-init]', 0885 '[cppcoreguidelines-pro-type-reinterpret-cast]', 0886 '[cppcoreguidelines-pro-type-static-cast-downcast]', 0887 '[cppcoreguidelines-pro-type-union-access]', 0888 '[cppcoreguidelines-pro-type-vararg]', 0889 '[cppcoreguidelines-slicing]', 0890 '[cppcoreguidelines-special-member-functions]', 0891 '[fuchsia-default-arguments-calls]', 0892 '[fuchsia-default-arguments-declarations]', 0893 '[fuchsia-default-arguments]', 0894 '[fuchsia-header-anon-namespaces]', 0895 '[fuchsia-multiple-inheritance]', 0896 '[fuchsia-overloaded-operator]', 0897 '[fuchsia-restrict-system-includes]', 0898 '[fuchsia-statically-constructed-objects]', 0899 '[fuchsia-trailing-return]', 0900 '[fuchsia-virtual-inheritance]', 0901 '[google-build-explicit-make-pair]', 0902 '[google-build-namespaces]', 0903 '[google-build-using-namespace]', 0904 '[google-default-arguments]', 0905 '[google-explicit-constructor]', 0906 '[google-global-names-in-headers]', 0907 '[google-objc-avoid-nsobject-new]', 0908 '[google-objc-avoid-throwing-exception]', 0909 '[google-objc-function-naming]', 0910 '[google-objc-global-variable-declaration]', 0911 '[google-readability-avoid-underscore-in-googletest-name]', 0912 '[google-readability-braces-around-statements]', 0913 '[google-readability-casting]', 0914 '[google-readability-function-size]', 0915 '[google-readability-namespace-comments]', 0916 '[google-readability-todo]', 0917 '[google-runtime-int]', 0918 '[google-runtime-operator]', 0919 '[google-runtime-references]', 0920 '[hicpp-avoid-c-arrays]', 0921 '[hicpp-avoid-goto]', 0922 '[hicpp-braces-around-statements]', 0923 '[hicpp-deprecated-headers]', 0924 '[hicpp-exception-baseclass]', 0925 '[hicpp-explicit-conversions]', 0926 '[hicpp-function-size]', 0927 '[hicpp-invalid-access-moved]', 0928 '[hicpp-member-init]', 0929 '[hicpp-move-const-arg]', 0930 '[hicpp-multiway-paths-covered]', 0931 '[hicpp-named-parameter]', 0932 '[hicpp-new-delete-operators]', 0933 '[hicpp-no-array-decay]', 0934 '[hicpp-no-assembler]', 0935 '[hicpp-no-malloc]', 0936 '[hicpp-noexcept-move]', 0937 '[hicpp-signed-bitwise]', 0938 '[hicpp-special-member-functions]', 0939 '[hicpp-static-assert]', 0940 '[hicpp-undelegated-constructor]', 0941 '[hicpp-uppercase-literal-suffix]', 0942 '[hicpp-use-auto]', 0943 '[hicpp-use-emplace]', 0944 '[hicpp-use-equals-default]', 0945 '[hicpp-use-equals-delete]', 0946 '[hicpp-use-noexcept]', 0947 '[hicpp-use-nullptr]', 0948 '[hicpp-use-override]', 0949 '[hicpp-vararg]', 0950 '[llvm-header-guard]', 0951 '[llvm-include-order]', 0952 '[llvm-namespace-comment]', 0953 '[llvm-prefer-isa-or-dyn-cast-in-conditionals]', 0954 '[llvm-twine-local]', 0955 '[misc-definitions-in-headers]', 0956 '[misc-forwarding-reference-overload]', 0957 '[misc-incorrect-roundings]', 0958 '[misc-lambda-function-name]', 0959 '[misc-macro-parentheses]', 0960 '[misc-macro-repeated-side-effects]', 0961 '[misc-misplaced-const]', 0962 '[misc-new-delete-overloads]', 0963 '[misc-non-copyable-objects]', 0964 '[misc-non-private-member-variables-in-classes]', 0965 '[misc-redundant-expression]', 0966 '[misc-sizeof-container]', 0967 '[misc-static-assert]', 0968 '[misc-string-compare]', 0969 '[misc-string-integer-assignment]', 0970 '[misc-string-literal-with-embedded-nul]', 0971 '[misc-suspicious-missing-comma]', 0972 '[misc-suspicious-semicolon]', 0973 '[misc-suspicious-string-compare]', 0974 '[misc-swapped-arguments]', 0975 '[misc-throw-by-value-catch-by-reference]', 0976 '[misc-unconventional-assign-operator]', 0977 '[misc-undelegated-constructor]', 0978 '[misc-uniqueptr-reset-release]', 0979 '[misc-unused-alias-decls]', 0980 '[misc-unused-parameters]', 0981 '[misc-unused-using-decls]', 0982 '[misc=sizeof-expression]', 0983 '[modernize-avoid-bind]', 0984 '[modernize-avoid-c-arrays]', 0985 '[modernize-concat-nested-namespaces]', 0986 '[modernize-deprecated-headers]', 0987 '[modernize-deprecated-ios-base-aliases]', 0988 '[modernize-loop-convert]', 0989 '[modernize-make-shared]', 0990 '[modernize-make-unique]', 0991 '[modernize-pass-by-value]', 0992 '[modernize-raw-string-literal]', 0993 '[modernize-redundant-void-arg]', 0994 '[modernize-replace-auto-ptr]', 0995 '[modernize-replace-random-shuffle]', 0996 '[modernize-return-braced-init-list]', 0997 '[modernize-shrink-to-fit]', 0998 '[modernize-unary-static-assert]', 0999 '[modernize-use-auto]', 1000 '[modernize-use-bool-literals]', 1001 '[modernize-use-default-member-init]', 1002 '[modernize-use-emplace]', 1003 '[modernize-use-equals-default]', 1004 '[modernize-use-equals-delete]', 1005 '[modernize-use-nodiscard]', 1006 '[modernize-use-noexcept]', 1007 '[modernize-use-nullptr]', 1008 '[modernize-use-override]', 1009 '[modernize-use-trailing-return-type]', 1010 '[modernize-use-transparent-functors]', 1011 '[modernize-use-uncaught-exceptions]', 1012 '[modernize-use-using]', 1013 '[mpi-buffer-deref]', 1014 '[mpi-type-mismatch]', 1015 '[objc-avoid-nserror-init]', 1016 '[objc-avoid-spinlock]', 1017 '[objc-forbidden-subclassing]', 1018 '[objc-property-declaration]', 1019 '[objc-super-self]', 1020 '[openmp-exception-escape]', 1021 '[openmp-use-default-none]', 1022 '[performance-faster-string-find]', 1023 '[performance-for-range-copy]', 1024 '[performance-implicit-conversion-in-loop]', 1025 '[performance-inefficient-algorithm]', 1026 '[performance-inefficient-string-concatenation]', 1027 '[performance-inefficient-vector-operation]', 1028 '[performance-move-const-arg]', 1029 '[performance-move-constructor-init]', 1030 '[performance-noexcept-move-constructor]', 1031 '[performance-type-promotion-in-math-fn]', 1032 '[performance-unnecessary-copy-initialization]', 1033 '[performance-unnecessary-value-param]', 1034 '[portability-simd-intrinsics]', 1035 '[readability-avoid-const-params-in-decls]', 1036 '[readability-braces-around-statements]', 1037 '[readability-const-return-type]', 1038 '[readability-container-size-empty]', 1039 '[readability-convert-member-functions-to-static]', 1040 '[readability-delete-null-pointer]', 1041 '[readability-deleted-default]', 1042 '[readability-else-after-return]', 1043 '[readability-function-size]', 1044 '[readability-identifier-naming]', 1045 '[readability-implicit-bool-conversion]', 1046 '[readability-inconsistent-declaration-parameter-name]', 1047 '[readability-isolate-declaration]', 1048 '[readability-magic-numbers]', 1049 '[readability-misleading-indentation]', 1050 '[readability-misplaced-array-index]', 1051 '[readability-named-parameter]', 1052 '[readability-non-const-parameter]', 1053 '[readability-redundant-control-flow]', 1054 '[readability-redundant-declaration]', 1055 '[readability-redundant-function-ptr-dereference]', 1056 '[readability-redundant-member-init]', 1057 '[readability-redundant-preprocessor]', 1058 '[readability-redundant-smartptr-get]', 1059 '[readability-redundant-string-cstr]', 1060 '[readability-redundant-string-init]', 1061 '[readability-simplify-boolean-expr]', 1062 '[readability-simplify-subscript-expr]', 1063 '[readability-static-accessed-through-instance]', 1064 '[readability-static-definition-in-anonymous-namespace]', 1065 '[readability-string-compare]', 1066 '[readability-uniqueptr-delete-release]', 1067 '[readability-uppercase-literal-suffix]', 1068 '[zircon-temporary-objects]', 1069 ] 1070 1071 # Each check will have its own node of information. 1072 class checks: 1073 def __init__(self, dataval=None): 1074 self.name = '' 1075 self.count = 0 1076 self.data = '' 1077 1078 # Begin here. 1079 def main(): 1080 checks_list.sort() 1081 1082 # Process command line arguments. 1083 args = parse_command_line_options() 1084 external_link = '' 1085 external_name = '' 1086 1087 contents = args.file.readlines() 1088 1089 checks_used = [0] * len(checks_list) 1090 1091 # Increments each occurrence of a check. 1092 for line, content in enumerate(contents): 1093 content = content.replace('<', '<') 1094 content = content.replace('>', '>') 1095 for check_name in checks_list: 1096 if content.find(check_name) != -1: 1097 checks_used[checks_list.index(check_name)] += 1 1098 1099 # Counts the max number of used checks in the log file. 1100 num_used_checks = 0 1101 for line, check in enumerate(checks_list): 1102 if checks_used[line] != 0: 1103 num_used_checks += 1 1104 1105 names_of_used = [None] * num_used_checks 1106 names_of_usedL = [None] * num_used_checks 1107 1108 # Creates new check classes for each used check. 1109 used_line = 0 1110 total_num_checks = 0 1111 for line, check in enumerate(checks_list): 1112 if checks_used[line] != 0: 1113 new_node = checks(check) 1114 new_node.name = check 1115 new_node.count = checks_used[line] 1116 total_num_checks += checks_used[line] 1117 names_of_used[used_line] = new_node 1118 1119 names_of_usedL[used_line] = checks_list[line] 1120 used_line += 1 1121 1122 # Adds details for each organized check. 1123 for line, content in enumerate(contents): 1124 # Goes through each used check. 1125 for initial_check in names_of_usedL: 1126 # Adds the lines that detail the warning message. 1127 if content.find(initial_check) != -1: 1128 content = content.replace('<', '<') 1129 content = content.replace('>', '>') 1130 names_of_used[names_of_usedL.index( 1131 initial_check)].data += content 1132 details = line + 1 1133 finished = False 1134 while not finished: 1135 # Ensure there is no overflow. 1136 if details >= len(contents): 1137 break 1138 # If the line includes a used Clang-Tidy check name, 1139 # continue to find the next. 1140 for end_check in names_of_usedL: 1141 if contents[details].find(end_check) != -1: 1142 finished = True 1143 break 1144 # Otherwise, add the data to the specific used check 1145 # name for the organization of checks in the HTML file. 1146 if not finished: 1147 names_of_used[names_of_usedL.index( 1148 initial_check)].data += contents[details] 1149 details += 1 1150 1151 args.file.close() 1152 f = open("tidy.html", "w") 1153 1154 # Functions for writing to the clang.html file. 1155 writeHeader(f) 1156 writeList(f, num_used_checks, names_of_used, args, 1157 external_link, external_name, total_num_checks) 1158 sortLogs(f, contents, num_used_checks, names_of_used, 1159 args, external_link, external_name) 1160 writeScript(f, num_used_checks) 1161 1162 # Close the file. 1163 f.close() 1164 sys.exit() 1165 1166 # Parses through the given command line options (-b, --button) 1167 # and returns the given file's contents if read successfully. 1168 def parse_command_line_options(): 1169 parser = argparse.ArgumentParser() 1170 parser.add_argument('file', type=argparse.FileType('r')) 1171 1172 try: 1173 args = parser.parse_args() 1174 except: 1175 parser.print_help() 1176 usage() 1177 sys.exit() 1178 1179 return args 1180 1181 # Prints usage information for the script. 1182 def usage(): 1183 print("**--------------------------- Clang Tidy Visualizer --------------------------**\n\n \ 1184 Generates an html file as a visual for clang-tidy checks.\n\n \ 1185 Arguments: python clangtidy_visualizer.py [logfile.log]\n\n \ 1186 \t\t-ex: python clangtidy_visualizer [logfile.log] \ 1187 \n\n**------------------------------------------------------------------------**") 1188 1189 # Header of the tidy.html file. 1190 def writeHeader(f): 1191 f.write("<!DOCTYPE html>\n") 1192 f.write("<html>\n") 1193 f.write("<head>\n") 1194 f.write("\t<title>Clang-Tidy Visualizer</title>\n\t<meta charset=\"UTF-8\">\n") 1195 f.write("\t<meta name=\"description\" content=\"Documentation tool for visualizing Clang-Tidy checks.\">\n") 1196 f.write( 1197 "\t<meta name=\"viewport\" content=\"width=device-width,initial-scale=1\">\n") 1198 f.write("\t<link rel=\"stylesheet\" href=\"https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css\">\n") 1199 f.write("\t<script src=\"https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js\"></script>\n") 1200 f.write("\t<script src=\"https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js\"></script>\n") 1201 f.write("</head>\n") 1202 1203 # List the used checks found in the source code. 1204 def writeList(f, num_used_checks, names_of_used, args, external_link, external_name, total_num_checks): 1205 now = datetime.now() 1206 f.write( 1207 "<body style=\"background: rgb(220, 227, 230); width: 100%; height: 100%;\">\n") 1208 f.write("<div id=\"container\" style=\"margin-left: 2%; margin-right: 2%;\">\n") 1209 f.write("\t<div id=\"header\" style=\"height: 55px; display: flex; justify-content: left; position: relative;\">\n") 1210 f.write("\t\t<h3 style=\"text-align: center; color: #111; font-family: 'Helvetica Neue', sans-serif; font-weight: bold; \ 1211 letter-spacing: 0.5px; line-height: 1;\">digiKam Clang-Tidy Checks - %s</h3>\n" % (now.strftime("%m/%d/%Y %H:%M:%S"))) 1212 f.write("\t\t<div class=\"btn-group\" role=\"group\" style=\"position: absolute; right: 0;\">\n") 1213 f.write("\t\t</div>\n\t</div><br>\n") 1214 f.write("\t<ul id=\"list\" class=\"list-group\" align=\"left\" style=\"display: block; width: 25%; height: 0; margin-bottom: 0;\">\n") 1215 1216 # Iterates through each used check's details and organizes them into the given <pre> sections. 1217 f.write("\t\t<a id=\"log\" href=\"#\" class=\"list-group-item list-group-item-success\" style=\"color: black; font-weight: bold; letter-spacing:0.4px;\" \ 1218 onclick=\"toggleLog()\">%d Original Log</a>\n" % (total_num_checks)) 1219 1220 for line in range(0, num_used_checks): 1221 f.write("\t\t<a id=\"check%d\" style=\"color: black\" href=\"#\" class=\"list-group-item list-group-item-action\" \ 1222 onclick=\"toggleInfo(%d)\">%d %s</a>\n" % (line, line, names_of_used[line].count, names_of_used[line].name)) 1223 1224 f.write("\t</ul>\n\n") 1225 f.write( 1226 "\t<div id=\"showLog\" style=\"display: none; width: 75%; float: right;\">\n") 1227 f.write( 1228 "\t\t<div style=\"display: flex; justify-content: left; position: relative;\">\n") 1229 f.write("\t\t\t<button id=\"collapse-btn0\" type=\"button\" class=\"btn nohover\" onclick=\"collapseSidebar()\" style=\"outline: none; \ 1230 background-color: lightgray\" title=\"Collapse sidebar\">\n") 1231 f.write("\t\t\t<span id=\"collapse-img0\" class=\"glyphicon glyphicon-menu-left\"></button></span>\n") 1232 f.write("\t\t\t<h4 style=\"margin-top: 0; color: #111; position: absolute; left: 50%; transform: translateX(-50%); margin-bottom: 10;\">Original Log</h4>\n") 1233 1234 f.write("\t\t</div>\n\t\t<pre>\n") 1235 1236 # Sort through the used check logs for outputting the html. 1237 def sortLogs(f, contents, num_used_checks, names_of_used, args, external_link, external_name): 1238 for line in contents: 1239 line = line.replace('<', '<') 1240 line = line.replace('>', '>') 1241 f.write("%s" % (line)) 1242 1243 f.write("\n\t\t</pre>\n\t</div>\n") 1244 1245 for check_idx in range(0, num_used_checks): 1246 collapse_idx = check_idx+1 1247 f.write("\t<div id=\"show%d\"" % (check_idx)) 1248 f.write("style=\"display: none; width: 75%; float: right\">\n") 1249 f.write( 1250 "\t\t<div style=\"display: flex; justify-content: left; position: relative;\">\n") 1251 f.write("\t\t\t<button id=\"collapse-btn%d\" type=\"button\" class=\"btn nohover\" onclick=\"collapseSidebar()\" \ 1252 style=\"outline: none; background-color: lightgray\" title=\"Collapse sidebar\">\n" % (collapse_idx)) 1253 f.write("\t\t\t<span id=\"collapse-img%d\" class=\"glyphicon glyphicon-menu-left\"></button></span>\n" % (collapse_idx)) 1254 f.write("\t\t\t<h4 style=\"margin-top: 0; color: #111; position: absolute; left: 50%; transform: translateX(-50%); margin-bottom: 10\">") 1255 f.write("%s</h4>\n" % (names_of_used[check_idx].name[1:-1])) 1256 f.write("\t\t</div>\n\t\t<pre>\n") 1257 names_of_used[check_idx].data = names_of_used[check_idx].data.replace('<', '<') 1258 names_of_used[check_idx].data = names_of_used[check_idx].data.replace('>', '>') 1259 f.write("%s\t\t</pre>\n\t</div>\n" % (names_of_used[check_idx].data)) 1260 1261 f.write("</div>\n</body>\n") 1262 1263 # Writes Javascript and JQuery code to the html file for button and grouping functionalities. 1264 def writeScript(f, num_used_checks): 1265 f.write("<script>\nvar selected_idx;\nvar checks_arr = [];\nvar highlights = 'highlights';\n") 1266 f.write("// Retrieves local storage data on document load for highlighted checks.\n") 1267 f.write( 1268 "$(document).ready(function() {\n\tfor (var all_checks=0; all_checks<%d; all_checks++) {\n" % (num_used_checks)) 1269 f.write("\t\tvar check_hl = document.getElementById(\"check\"+all_checks);\n") 1270 f.write( 1271 "\t\tswitch (JSON.parse(localStorage.getItem(highlights))[all_checks]) {\n") 1272 f.write("\t\t\tcase \"warning\":\n\t\t\tcheck_hl.classList.add('list-group-item-warning');\n") 1273 f.write( 1274 "\t\t\tchecks_arr[all_checks] = \"warning\"; break;\n\t\t\tcase \"danger\":\n") 1275 f.write( 1276 "\t\t\tcheck_hl.classList.add('list-group-item-danger');\n\t\t\tchecks_arr[all_checks] = \"danger\"; break;\n") 1277 f.write( 1278 "\t\t\tdefault:\n\t\t\tchecks_arr[all_checks] = \"action\";\n\t\t\tif (check_hl !== null) {\n") 1279 f.write("\t\t\t\tcheck_hl.classList.add('list-group-item-action');\n\t\t\t} break;\n\t\t}\n\t}\n") 1280 f.write("localStorage.setItem(highlights, JSON.stringify(checks_arr));\n});\n\n") 1281 1282 f.write( 1283 "function toggleLog() {\n\tvar log = document.getElementById(\"showLog\");\n\tclearContent();\n") 1284 f.write( 1285 "\tif (log.style.display === \"none\") {\n\t\tlog.style.display = \"block\";\n\t} else {\n") 1286 f.write("\t\tlog.style.display = \"none\";\n\t}\n}\n\n") 1287 1288 f.write( 1289 "function toggleInfo(check_position) {\n\tselected_idx = check_position;\n\tclearContent();\n") 1290 f.write("\t// Displays the chosen clang-tidy category.\n\tvar category = document.getElementById(\"show\"+check_position);\n") 1291 f.write( 1292 "\tif (category.style.display === \"none\") {\n\t\tcategory.style.display = \"block\";\n\t} else {\n") 1293 f.write("\t\tcategory.style.display = \"none\";\n\t}\n}\n\n") 1294 1295 f.write( 1296 "// Clears document when choosing another selection.\nfunction clearContent() {\n") 1297 f.write( 1298 "\tfor (var all_checks=0; all_checks<%d; all_checks++) {\n\t\tvar clear = document.getElementById(\"show\"+all_checks);\n" % (num_used_checks)) 1299 f.write( 1300 "\t\tif (clear.style.display === \"block\") {\n\t\tclear.style.display = \"none\";\n\t\t}\n\t}\n") 1301 f.write( 1302 "\tvar clearLog = document.getElementById(\"showLog\");\n\tif (clearLog.style.display === \"block\") {\n") 1303 f.write("\t\tclearLog.style.display = \"none\";\n\t}\n}\n\n") 1304 1305 f.write( 1306 "// Type 1 used for highlighting danger checks and 0 for warnings.\nfunction highlightChecks(type) {\n") 1307 f.write( 1308 "\tvar check_hl = document.getElementById(\"check\"+selected_idx);\n\tif (check_hl !== null) {\n") 1309 f.write( 1310 "\t\tif (check_hl.classList.contains('list-group-item-action')) {\n\t\t\tcheck_hl.classList.remove('list-group-item-action');\n") 1311 f.write("\t\t\ttype == 1 ? check_hl.classList.add('list-group-item-danger') : check_hl.classList.add('list-group-item-warning');\n") 1312 f.write( 1313 "\t\t\ttype == 1 ? checks_arr[selected_idx] = \"danger\" : checks_arr[selected_idx] = \"warning\";\n") 1314 f.write( 1315 "\t\t} else if (check_hl.classList.contains('list-group-item-warning')) {\n\t\t\tcheck_hl.classList.remove('list-group-item-warning');\n") 1316 f.write("\t\t\ttype == 1 ? check_hl.classList.add('list-group-item-danger') : check_hl.classList.add('list-group-item-action');\n") 1317 f.write( 1318 "\t\t\ttype == 1 ? checks_arr[selected_idx] = \"danger\" : checks_arr[selected_idx] = \"action\";\n\t\t} else {\n") 1319 f.write("\t\t\tcheck_hl.classList.remove('list-group-item-danger');\n") 1320 f.write("\t\t\ttype == 1 ? check_hl.classList.add('list-group-item-action') : check_hl.classList.add('list-group-item-warning');\n") 1321 f.write( 1322 "\t\t\ttype == 1 ? checks_arr[selected_idx] = \"action\" : checks_arr[selected_idx] = \"warning\";\n\t\t}\n\t}\n") 1323 f.write("\t// Sets local storage for each occurrence of a highlighted check.\n\tlocalStorage.setItem(highlights, JSON.stringify(checks_arr));\n}\n\n") 1324 1325 f.write( 1326 "function clearChecks(type) {\n\tfor (var all_checks=0; all_checks<%d; all_checks++) {\n" % (num_used_checks)) 1327 f.write( 1328 "\t\tvar clear = (document.getElementById(\"check\"+all_checks));\n\t\tchecks_arr[all_checks] = \"action\";\n") 1329 f.write("\t\tif (clear !== null) {\n") 1330 f.write( 1331 "\t\t\tif (clear.classList.contains('list-group-item-warning')) {\n\t\t\t\tclear.classList.remove('list-group-item-warning');\n") 1332 f.write( 1333 "\t\t\t} else if (clear.classList.contains('list-group-item-danger')) {\n\t\t\t\tclear.classList.remove('list-group-item-danger');\n\t\t\t}\n") 1334 f.write("\t\t\tclear.classList.add('list-group-item-action');\n\t\t}\n\t}\n\t// Restores all checks to unhighlighted state on local storage.\n") 1335 f.write("\tlocalStorage.removeItem(highlights);\n}\n\n") 1336 1337 f.write( 1338 "function collapseSidebar() {\n\tvar list = document.getElementById(\"list\"); var hasExpanded;\n") 1339 f.write("\tvar log_details = document.getElementById(\"showLog\");\n\tlist.style.display === \"block\" ? hasSidebar = true : hasSidebar = false;\n") 1340 f.write( 1341 "\thasSidebar ? list.style.display = \"none\" : list.style.display = \"block\";\n") 1342 f.write( 1343 "\tfor (var all_checks=0; all_checks<=%d; all_checks++) {\n\t\tvar collapse_img = document.getElementById(\"collapse-img\"+all_checks);\n" % (num_used_checks)) 1344 f.write("\t\tvar collapse_btn = document.getElementById(\"collapse-btn\"+all_checks);\n\t\tvar check_details = document.getElementById(\"show\"+all_checks);\n") 1345 f.write( 1346 "\t\tif (collapse_img !== null) {\n\t\t\thasSidebar ? collapse_img.classList.remove('glyphicon-menu-left') : collapse_img.classList.remove('glyphicon-menu-right');\n") 1347 f.write("\t\t\thasSidebar ? collapse_img.classList.add('glyphicon-menu-right') : collapse_img.classList.add('glyphicon-menu-left');\n") 1348 f.write("\t\t\thasSidebar ? collapse_btn.title = \"Expand sidebar\" : collapse_btn.title = \"Collapse sidebar\";\n\t\t}\n") 1349 f.write( 1350 "\t\tif (check_details !== null) {hasSidebar ? check_details.style.width = \"100%\" : check_details.style.width = \"75%\";}\n\t}\n") 1351 f.write("\thasSidebar ? log_details.style.width = \"100%\" : log_details.style.width = \"75%\";\n}\n") 1352 1353 # Begins writing style elements. 1354 f.write("</script>\n<style>\n\tpre {\n\t\twhite-space: pre-wrap;\n") 1355 f.write("\t\tword-break: keep-all;\n\t}\n\t#header {\n") 1356 f.write("\t\tborder-bottom: 2px solid darkgray\n\t}\n") 1357 f.write("</style>\n</html>") 1358 1359 1360 # Calls main function. 1361 if __name__ == "__main__": 1362 main()