Passed
Push — master ( b05669...601ec3 )
by Alxarafe
04:21
created

Checkout Config

build:
    environment:
        timezone: UTC
        # https://scrutinizer-ci.com/docs/build/languages
        hosts:
            local.dev: '127.0.0.1'
        php:
            version: 7.2
            ini:
                'apc.enable_cli': '1'
                'apc.enabled': '0'
        postgresql: false
        mysql: 5.7
        apache2:
            modules: ['rewrite', 'expires', 'ssl', 'macro', 'headers']
            sites:
                alxarafe:
                    host: 'local.dev'
                    web_root: ''
    dependencies:
        before:
            - echo "ServerName localhost" > /etc/apache2/conf-available/fqdn.conf
            - sudo a2enconf fqdn
            - sudo service apache2 restart
            - npm i -g npm
            - mysql -uroot -e 'DROP DATABASE IF EXISTS scrutinizer;'
            - mysql -uroot -e 'CREATE DATABASE IF NOT EXISTS scrutinizer;'
            - cp config/build/scrutinizer/config.yaml config/config.yaml
            - cat config/build/scrutinizer/id_rsa-alxarafe.pub >> ~/.ssh/authorized_keys
    tests:
        override:
            - php-scrutinizer-run --enable-security-analysis
            # Run PHP-CS Beautifier and Fixer: to format some common non PSR code that can be auto-fixed.
            -   command: vendor/bin/phpcbf --tab-width=4 --encoding=utf-8 --standard=phpcs.xml src/Alxarafe/Core -s
            # Run PHP-CS.
            -   command: vendor/bin/phpcs --tab-width=4 --encoding=utf-8 --standard=phpcs.xml src/Alxarafe/Core -s
            # Run PHPUnit test.
            -   command: vendor/bin/phpunit --coverage-clover=reports/coverage.xml
                coverage:
                    file: reports/coverage.xml
                    format: php-clover
filter:
    paths: [src/*]
    excluded_paths:
        - src/Alxarafe/Test/*
        - bin/sami_documentation.php
checks:
    php:
        verify_property_names: true
        verify_argument_usable_as_reference: true
        verify_access_scope_valid: true
        variable_existence: true
        useless_calls: true
        use_statement_alias_conflict: true
        unused_variables: true
        unused_properties: true
        unused_parameters: true
        unused_methods: true
        unreachable_code: true
        too_many_arguments: true
        symfony_request_injection: true
        switch_fallthrough_commented: true
        sql_injection_vulnerabilities: true
        simplify_boolean_return: true
        security_vulnerabilities: true
        return_in_constructor: true
        return_doc_comments: true
        return_doc_comment_if_not_inferrable: true
        require_scope_for_methods: true
        require_php_tag_first: true
        property_assignments: true
        properties_in_camelcaps: true
        precedence_mistakes: true
        precedence_in_conditions: true
        phpunit_assertions: true
        parse_doc_comments: true
        parameters_in_camelcaps: true
        parameter_non_unique: true
        parameter_doc_comments: true
        param_doc_comment_if_not_inferrable: true
        overriding_private_members: true
        overriding_parameter: true
        non_commented_empty_catch_block: true
        no_trait_type_hints: true
        no_trailing_whitespace: true
        no_short_variable_names:
            minimum: '3'
        no_short_open_tag: true
        no_short_method_names:
            minimum: '3'
        no_property_on_interface: true
        no_non_implemented_abstract_methods: true
        no_long_variable_names:
            maximum: '20'
        no_goto: true
        no_exit: true
        no_eval: true
        no_error_suppression: true
        no_debug_code: true
        more_specific_types_in_doc_comments: true
        missing_arguments: true
        method_calls_on_non_object: true
        instanceof_class_exists: true
        foreach_usable_as_reference: true
        foreach_traversable: true
        fix_use_statements:
            remove_unused: true
            preserve_multiple: true
            preserve_blanklines: false
            order_alphabetically: true
        fix_line_ending: true
        fix_linefeed: true
        fix_doc_comments: true
        fix_php_opening_tag: true
        fix_identation_4spaces: true
        encourage_shallow_comparison: true
        duplication: true
        deprecated_code_usage: true
        deadlock_detection_in_loops: true
        comparison_always_same_result: true
        code_rating: true
        closure_use_not_conflicting: true
        closure_use_modifiable: true
        check_method_contracts:
            verify_interface_like_constraints: true
            verify_documented_constraints: true
            verify_parent_constraints: true
        catch_class_exists: true
        call_to_parent_method: true
        avoid_superglobals: true
        avoid_length_functions_in_loops: true
        avoid_duplicate_types: true
        avoid_closing_tag: true
        assignment_of_null_return: true
        argument_type_checks: true
        remove_extra_empty_lines: true
        remove_php_closing_tag: true
        remove_trailing_whitespace: true
        naming_conventions:
            local_variable: '^[a-z][a-zA-Z0-9]*$'
            abstract_class_name: ^Abstract|Factory$
            utility_class_name: '^[A-Z][a-zA-Z0-9]*$'
            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$'
            exception_name: '^[A-Z][a-zA-Z0-9]*Exception$'
            isser_method_name: '^(?:is|has|should|may|supports|before|after)'
coding_style:
    php:
        indentation:
            general:
                use_tabs: false
                size: 4
            switch:
                indent_case: true
        spaces:
            around_operators:
                concatenation: true
tools:
    external_code_coverage:
        enabled: false
        timeout: 600
        filter:
            excluded_paths:
                - 'docs/*'
                - 'reports/*'
                - 'src/Alxarafe/Test/*'
                - 'vendor/*'
    php_code_coverage:
        enabled: true
        filter:
            excluded_paths:
                - 'docs/*'
                - 'reports/*'
                - 'src/Alxarafe/Test/*'
                - 'vendor/*'
    # Have false positive with switch-case
    php_code_sniffer:
        enabled: false
        config:
            standard: PSR2
        filter:
            excluded_paths:
                - 'docs/*'
                - 'reports/*'
                - 'src/Alxarafe/Test/*'
                - 'vendor/*'
    # Copy/Paste Detector
    # Conflicts with other analyzer
    php_cpd:
        enabled: false
        filter:
            excluded_paths:
                - 'docs/*'
                - 'reports/*'
                - 'src/Alxarafe/Test/*'
                - 'vendor/*'
    # PHP CS Fixer (http://http://cs.sensiolabs.org/).
    php_cs_fixer:
        enabled: true
        config:
            level: psr2
        filter:
            excluded_paths:
                - 'docs/*'
                - 'reports/*'
                - 'src/Alxarafe/Test/*'
                - 'vendor/*'
    # Analyzes the size and structure of a PHP project.
    php_loc:
        enabled: true
        filter:
            excluded_paths:
                - 'docs/*'
                - 'reports/*'
                - 'src/Alxarafe/Test/*'
                - 'vendor/*'
    # PHP Mess Detector (http://phpmd.org).
    php_mess_detector:
        enabled: true
        config:
            rulesets:
                - codesize
                - unusedcode
                - naming
                - design
            naming_rules:
                short_variable: { minimum: 2 }
        filter:
            excluded_paths:
                - 'docs/*'
                - 'reports/*'
                - 'src/Alxarafe/Test/*'
                - 'vendor/*'
    # Analyzes the size and structure of a PHP project.
    php_pdepend:
        enabled: true
        filter:
            excluded_paths:
                - 'docs/*'
                - 'reports/*'
                - 'src/Alxarafe/Test/*'
                - 'vendor/*'
    # Runs Scrutinizer's PHP Analyzer Tool
    # https://scrutinizer-ci.com/docs/tools/php/php-analyzer/config_reference
    php_analyzer:
        enabled: true
        config:
            checkstyle:
                enabled: true
                naming:
                    enabled: true
                    property_name: ^[_a-zA-Z][a-zA-Z0-9_]*$ #Allow underscores & caps
                    method_name: ^(?:[_a-zA-Z]|__)[a-zA-Z0-9_]*$ #Allow underscores & caps
                    parameter_name: ^[a-z][a-zA-Z0-9_]*$ # Allow underscores
                    local_variable: ^[a-zA-Z][a-zA-Z0-9_]*$ #Allow underscores & caps
                    exception_name: ^[a-zA-Z][a-zA-Z0-9]*Exception$
                    isser_method_name: ^(?:[_a-zA-Z]|__)[a-zA-Z0-9]*$ #Allow underscores & caps
        filter:
            excluded_paths:
                - 'docs/*'
                - 'reports/*'
                - 'src/Alxarafe/Test/*'
                - 'vendor/*'
    # Security Advisory Checker
    sensiolabs_security_checker: true
    php_sim: true
    php_changetracking: true