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