# .scrutinizer.yml
#build:
#    - php-scrutinizer-run
build:
    nodes:
        analysis:
            tests:
                override:
                    - command: php-scrutinizer-run
                      idle_timeout: 8000
                    #- php-scrutinizer-run --sub-project-dir=htdocs/admin

imports:
    - php

filter:
    excluded_paths:
        - build/
        - dev/
        - doc/
        - documents/
        - node_modules/
        - test/
        - htdocs/custom/
        - htdocs/includes/
        - htdocs/install/doctemplates/
    #dependency_paths:
    #    - htdocs/includes/
    paths: 
        - htdocs/*
        - scripts/*
    
tools:
    # php_analyzer. Doc on https://scrutinizer-ci.com/docs/tools/php/php-analyzer/
    php_analyzer:
        enabled: true
        extensions:
            - php
        #dependency_paths: 
        #    - htdocs/includes/
        filter:
            excluded_paths:
                - build/
                - dev/
                - doc/
                - documents/
                - htdocs/custom/
                - htdocs/includes/
                - htdocs/install/doctemplates/
                - htdocs/core/class/lessc.class.php
                - node_modules/
                - test/
            paths:
                - htdocs/*
                - scripts/*
        config:
            parameter_reference_check:
                enabled:              true
            checkstyle:
                enabled:              false
                no_trailing_whitespace:  true
                naming:
                    enabled:              true
                    local_variable:       ^[a-z][a-zA-Z0-9]*$
                    abstract_class_name:  ^Abstract|Factory$
                    utility_class_name:   Utils?$
                    constant_name:        ^[A-Z][A-Z0-9]*(?:_[A-Z0-9]+)*$
                    property_name:        ^[a-z][a-zA-Z0-9]*$
                    method_name:          ^(?:[a-z]|__)[a-zA-Z0-9]*$
                    parameter_name:       ^[a-z][a-zA-Z0-9]*$
                    interface_name:       ^[A-Z][a-zA-Z0-9]*Interface$
                    type_name:            ^[A-Z][a-zA-Z0-9]*$
                    exception_name:       ^[A-Z][a-zA-Z0-9]*Exception$
                    isser_method_name:    ^(?:is|has|should|may|supports)
            unreachable_code:
                enabled:              true
            check_access_control:
                enabled:              true
            typo_checks:
                enabled:              true
            check_variables:
                enabled:              true
            check_calls:
                enabled:              true
                too_many_arguments:   true
                missing_argument:     true
                argument_type_checks:  lenient # Allowed Values: "disabled", "lenient", "strict"
            suspicious_code:
                enabled:              true
                overriding_parameter:  false
                overriding_closure_use:  true
                parameter_closure_use_conflict:  true
                parameter_multiple_times:  true
                non_existent_class_in_instanceof_check:  true
                non_existent_class_in_catch_clause:  true
                assignment_of_null_return:  true
                non_commented_switch_fallthrough:  true
                non_commented_empty_catch_block:  true
                overriding_private_members:  true
                use_statement_alias_conflict:  true
                precedence_in_condition_assignment:  true
            dead_assignments:
                enabled:              true
            verify_php_doc_comments:
                enabled:              false
                parameters:           true
                return:               true
                suggest_more_specific_types:  true
                ask_for_return_if_not_inferrable:  true
                ask_for_param_type_annotation:  true
            loops_must_use_braces:
                enabled:              true
            check_usage_context:
                enabled:              true
            simplify_boolean_return:
                enabled:              false
            phpunit_checks:
                enabled:              false
            reflection_checks:
                enabled:              true

            # Checks Common Precedence Mistakes
            precedence_checks:
                enabled:              true
                assignment_in_condition:  true
                comparison_of_bit_result:  true
            basic_semantic_checks:
                enabled:              true
            # Disabled unused code. In most cases, we want to keep it.
            unused_code:
                enabled:              false		
            deprecation_checks:
                enabled:              true
            useless_function_calls:
                enabled:              true
            metrics_lack_of_cohesion_methods:
                enabled:              true
            metrics_coupling:
                enabled:              true
                stable_code:
                    namespace_prefixes:   []
                    classes:              []
            doctrine_parameter_binding:
                enabled:              false
            doctrine_entity_manager_injection:
                enabled:              false
            symfony_request_injection:
                enabled:              false
            doc_comment_fixes:
                enabled:              true
            reflection_fixes:
                enabled:              false
            use_statement_fixes:
                enabled:              true
                remove_unused:        true
                # Whether you would like multiple imports in one USE statement to be preserved, e.g. ``use A, B;``.
                preserve_multiple:    false
                # Whether you would like to preserve blank lines between use statements.
                preserve_blanklines:  false
                order_alphabetically:  false
         # To use specific config for a specific path, use path_configs: (see example on page https://scrutinizer-ci.com/docs/configuration/tool_config_structure)
                        
    # php_depend
    #php_pdepend:
    #    enabled: false
    #    configuration_file: null
    #    suffixes:
    #        - php
    #    excluded_dirs: {  }
    #    filter:
    #        excluded_paths:
    #            - 'build/*'
    #            - 'dev/*'
    #            - 'doc/*'
    #            - 'test/*'
    #            - 'htdocs/includes/*'
    #        paths: {  }

    # change tracking
    #php_changetracking:
    #    enabled: false
    #    bug_patterns:
    #        - '\bfix(?:es|ed)?\b'
    #    feature_patterns:
    #        - '\badd(?:s|ed)?\b'
    #        - '\bimplement(?:s|ed)?\b'
    #    filter:
    #        excluded_paths:
    #            - 'build/*'
    #            - 'dev/*'
    #            - 'doc/*'
    #            - 'documents/*'
    #            - 'htdocs/includes/*'
    #            - 'node_modules/*'
    #            - 'test/*'
    #        paths: {  }

    # Similar code detection
    #php_sim:
    #    enabled: false
    #    min_mass: 30
    #    filter:
    #        excluded_paths:
    #            - 'build/*'
    #            - 'dev/*'
    #            - 'doc/*'
    #            - 'documents/*'
    #            - 'htdocs/includes/*'
    #            - 'node_modules/*'
    #            - 'test/*'
    #        paths: {  }
            
    # Coding-Style / Bug Detection
    #js_hint:
    #    enabled: false
    #    use_native_config: true
    #    extensions:
    #        - js
    #    filter:
    #        excluded_paths:
    #            - 'build/*'
    #            - 'dev/*'
    #            - 'doc/*'
    #            - 'documents/*'
    #            - 'htdocs/includes/*'
    #            - 'node_modules/*'
    #            - 'test/*'
    #        paths: {  }
    #    config: {  }
    #    path_configs: {  }


before_commands: {  }
after_commands: {  }
artifacts: {  }
build_failure_conditions: {  }
