Checkout Config
build:
environment:
timezone: UTC
# https://scrutinizer-ci.com/docs/build/languages
hosts:
local.dev: '127.0.0.1'
php:
version: 7.4
ini:
'apc.enable_cli': '1'
'apc.enabled': '0'
postgresql: false
mysql: 5.5
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
- cp config/build/scrutinizer/config.yaml /home/scrutinizer/build/Test/config/config.yaml
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/Core -s
# Run PHP-CS.
- command: vendor/bin/phpcs --tab-width=4 --encoding=utf-8 --standard=phpcs.xml src/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:
- 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:
- 'vendor/*'
- 'docs/*'
- 'reports/*'
- 'src/Alxarafe/Test/*'
- 'vendor/*'
php_code_coverage:
enabled: true
filter:
excluded_paths:
- 'vendor/*'
- 'docs/*'
- 'reports/*'
- 'src/Alxarafe/Test/*'
- 'vendor/*'
# Have false positive with switch-case
php_code_sniffer:
enabled: false
config:
standard: PSR2
filter:
excluded_paths:
- 'vendor/*'
- 'docs/*'
- 'reports/*'
- 'src/Alxarafe/Test/*'
- 'vendor/*'
# Copy/Paste Detector
# Conflicts with other analyzer
php_cpd:
enabled: false
filter:
excluded_paths:
- 'vendor/*'
- '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:
- 'vendor/*'
- 'docs/*'
- 'reports/*'
- 'src/Alxarafe/Test/*'
- 'vendor/*'
# Analyzes the size and structure of a PHP project.
php_loc:
enabled: true
filter:
excluded_paths:
- 'vendor/*'
- '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:
- 'vendor/*'
- 'docs/*'
- 'reports/*'
- 'src/Alxarafe/Test/*'
- 'vendor/*'
# Analyzes the size and structure of a PHP project.
php_pdepend:
enabled: true
filter:
excluded_paths:
- 'vendor/*'
- '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:
- 'vendor/*'
- 'docs/*'
- 'reports/*'
- 'src/Alxarafe/Test/*'
- 'vendor/*'
# Security Advisory Checker
sensiolabs_security_checker: true
php_sim: true
php_changetracking: true
Repository Config
build:
nodes:
analysis:
project_setup:
override:
- 'true'
tests:
override:
- php-scrutinizer-run
-
command: phpcs-run
use_website_config: true
tests: true
checks:
php: true
coding_style:
php:
spaces:
around_operators:
concatenation: true
filter: { }