; Configure which static analysis checks are enabled
[analysis.config.StaticAnalysisConfig]
; Check variable, class, struct, interface, union, and function names against
; the Phobos style guide
style_check="disabled"
; Check for array literals that cause unnecessary allocation
enum_array_literal_check="enabled"
; Check for poor exception handling practices
exception_check="enabled"
; Check for use of the deprecated 'delete' keyword
delete_check="enabled"
; Check for use of the deprecated floating point operators
float_operator_check="enabled"
; Check underscores to improve number constant readability
number_style_check="enabled"
; Checks that opEquals, opCmp, toHash, and toString are either const, immutable
; , or inout.
object_const_check="enabled"
; Checks for .. expressions where the left side is larger than the right.
backwards_range_check="enabled"
; Checks for if statements whose 'then' block is the same as the 'else' block
if_else_same_check="enabled"
; Checks for some problems with constructors
constructor_check="enabled"
; Checks for unused function parameters
unused_parameter_check="disabled"
; Checks for unused variables
unused_variable_check="enabled"
; Checks for unused labels
unused_label_check="enabled"
; Checks for duplicate attributes
duplicate_attribute="enabled"
; Checks that opEquals and toHash are both defined or neither are defined
opequals_tohash_check="disabled"
; Checks for subtraction from .length properties
length_subtraction_check="disabled"
; Checks for methods or properties whose names conflict with built-in propertie
; s
builtin_property_names_check="enabled"
; Checks for confusing code in inline asm statements
asm_style_check="enabled"
; Checks for confusing logical operator precedence
logical_precedence_check="disabled"
; Checks for undocumented public declarations
undocumented_declaration_check="disabled"
; Checks for poor placement of function attributes
function_attribute_check="enabled"
; Checks for use of the comma operator
comma_expression_check="enabled"
; Checks for local imports that are too broad
local_import_check="disabled"
; Checks for variables that could be declared immutable
could_be_immutable_check="disabled"
; Checks for redundant expressions in if statements
redundant_if_check="enabled"
; Checks for redundant parenthesis
redundant_parens_check="disabled"
; Checks for mismatched argument and parameter names
mismatched_args_check="disabled"
; Checks for labels with the same name as variables
label_var_same_name_check="disabled"
; Checks for lines longer than 120 characters
long_line_check="disabled"
; Checks for assignment to auto-ref function parameters
auto_ref_assignment_check="disabled"
; Checks for incorrect infinite range definitions
incorrect_infinite_range_check="enabled"
; Checks for asserts that are always true
useless_assert_check="enabled"
; Check for uses of the old-style alias syntax
alias_syntax_check="enabled"
; Checks for else if that should be else static if
static_if_else_check="enabled"
; Check for unclear lambda syntax
lambda_return_check="enabled"
; Check for auto function without return statement
auto_function_check="enabled"
; Check for sortedness of imports
imports_sortedness="disabled"
; Check for explicitly annotated unittests
explicitly_annotated_unittests="disabled"
; Check for properly documented public functions (Returns, Params)
properly_documented_public_functions="disabled"
; Check for useless usage of the final attribute
final_attribute_check="enabled"
; Check for virtual calls in the class constructors
vcall_in_ctor="enabled"
; Check for useless user defined initializers
useless_initializer="disabled"
; Check allman brace style
allman_braces_check="disabled"
; Check for redundant attributes
redundant_attributes_check="disabled"
; Check for public declarations without a documented unittest
has_public_example="disabled"
; Check for asserts without an explanatory message
assert_without_msg="disabled"
; Check indent of if constraints
if_constraints_indent="enabled"
; Check for @trusted applied to a bigger scope than a single function
trust_too_much="disabled"
; Check for redundant storage classes on variable declarations")
redundant_storage_classes="enabled"
; Check for unused function return values
unused_result="disabled"

; Configure which modules are checked with a specific checker
; Please help to extend these checks onto more Phobos modules
; Process:
; - Pick your favorite check
; - Remove a module from the blacklist
; - Run DScanner
; - Fix the warnings
; - Submit a PR to DMD
; - GOTO: Remove a module
;
; Some checks are currently disabled.
[analysis.config.ModuleFilters]
trust_too_much="-dmd.root.longdouble"
builtin_property_names_check="-dmd.backend.obj,-dmd.backend.code,-dmd.backend.cc"
object_const_check="-dmd.dtemplate"
enum_array_literal_check="-dmd.astbase,-dmd.backend.oper,-dmd.backend.oper,-dmd.backend.var,-dmd.tokens,-dmd.expression"
unused_variable_check="-dmd.backend.aarray,\
-dmd.backend.blockopt,\
-dmd.backend.cg,\
-dmd.backend.x86.cg87,\
-dmd.backend.cgelem,\
-dmd.backend.cgsched,\
-dmd.backend.arm.cod1,\
-dmd.backend.arm.cod2,\
-dmd.backend.arm.cod3,\
-dmd.backend.arm.disasmarm,\
-dmd.backend.arm.instr,\
-dmd.backend.x86.cgxmm,\
-dmd.backend.x86.cod1,\
-dmd.backend.x86.cod2,\
-dmd.backend.x86.cod3,\
-dmd.backend.x86.disasm86,\
-dmd.backend.dcgcv,\
-dmd.backend.dout,\
-dmd.backend.dwarfdbginf,\
-dmd.backend.elfobj,\
-dmd.backend.elpicpie,\
-dmd.backend.gother,\
-dmd.backend.gsroa,\
-dmd.backend.machobj,\
-dmd.backend.mscoffobj,\
-dmd.backend.symbol,\
-dmd.expressionsem,\
-dmd.dsymbolsem,\
-dmd.templatesem,\
-dmd.dump,\
-dmd.mars,\
-dmd.root.longdouble"
number_style_check="-dmd.common.md5"
