Global Config
filter:
excluded_paths:
- vendor/*
- storage/*
- public/*
- gulp/*
- bower_components/*
- resources/*
- _ide_helper.php
- .phpstorm.meta.php
dependency_paths:
- "vendor/"
build:
environment:
php:
version: 7.2
mysql:
version: 5.7
elasticsearch:
version: 6.4.2
nodes:
general:
resources:
cpus: 1
tests:
override:
- php-scrutinizer-run
#- vendor/bin/php-cs-fixer fix --config=.php_cs.dist -v --dry-run --diff --using-cache=no && php-scrutinizer-run
- command: vendor/bin/phpunit --coverage-clover=coverage.clover
coverage:
file: coverage.clover
format: php-clover
checks:
php:
code_rating: true
duplication: 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
sql_injection_vulnerabilities: true
security_vulnerabilities: true
precedence_mistakes: true
precedence_in_conditions: true
parameter_non_unique: true
no_property_on_interface: true
no_non_implemented_abstract_methods: true
deprecated_code_usage: true
closure_use_not_conflicting: true
closure_use_modifiable: true
assignment_of_null_return: true
verify_property_names: true
verify_argument_usable_as_reference: true
verify_access_scope_valid: true
too_many_arguments: true
symfony_request_injection: true
switch_fallthrough_commented: true
spacing_of_function_arguments: true
spacing_around_non_conditional_operators: true
spacing_around_conditional_operators: true
space_after_cast: true
simplify_boolean_return: true
scope_indentation:
spaces_per_level: '4'
return_doc_comments: true
require_scope_for_methods: true
require_php_tag_first: true
require_braces_around_control_structures: true
remove_trailing_whitespace: true
remove_php_closing_tag: true
remove_extra_empty_lines: true
psr2_control_structure_declaration: true
property_assignments: true
properties_in_camelcaps: true
phpunit_assertions: true
parameters_in_camelcaps: true
parameter_doc_comments: true
return_doc_comment_if_not_inferrable: true
param_doc_comment_if_not_inferrable: true
overriding_private_members: true
non_commented_empty_catch_block: true
no_unnecessary_function_call_in_for_loop: true
no_trailing_whitespace: true
no_space_inside_cast_operator: true
no_space_before_semicolon: true
no_space_around_object_operator: true
no_goto: true
no_exit: true
no_else_if_statements: true
no_debug_code: true
naming_conventions:
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|was)'
lowercase_php_keywords: true
more_specific_types_in_doc_comments: true
missing_arguments: true
method_calls_on_non_object: true
lowercase_basic_constants: true
instanceof_class_exists: true
function_body_start_on_new_line: true
fix_use_statements:
remove_unused: true
preserve_multiple: false
preserve_blanklines: false
order_alphabetically: true
foreach_traversable: true
foreach_usable_as_reference: true
fix_php_opening_tag: true
fix_line_ending: true
fix_identation_4spaces: true
fix_doc_comments: true
ensure_lower_case_builtin_functions: true
catch_class_exists: true
avoid_tab_indentation: true
avoid_superglobals: true
avoid_length_functions_in_loops: true
avoid_entity_manager_injection: true
avoid_duplicate_types: true
argument_type_checks: true
deadlock_detection_in_loops: true
build_failure_conditions:
- 'elements.rating(<= D).exists' # No classes/methods with a rating of D or worse
- 'elements.rating(<= D).new.exists' # No new classes/methods with a rating of D or worse # allowed (useful for legacy code)
- 'patches.label("Doc Comments").exists' # No doc comments patches allowed
- 'patches.label("Spacing").new.count > 1' # More than 1 new spacing patch
- 'issues.label("coding-style").exists' # No coding style issues allowed
- 'issues.label("coding-style").new.exists' # No new coding style issues allowed
- 'issues.label("coding-style").new.count > 5' # More than 5 new coding style issues.
- 'issues.severity(>= MAJOR).new.exists' # New issues of major or higher severity
- 'project.metric("scrutinizer.quality", < 9)' # Overall 9+ rating
- 'project.metric("scrutinizer.test_coverage", < 0.50)' #Overall 50+ Code cov # to be overriden based on service