Scrutinizerへの登録
GitHubアカウントでログインする方がおそらく簡単です。これにより、GitHubプロファイルをリンクする手間が省けます。
Scrutinizerアプリケーションをインストールするには、リンクをたどってください。この手順はスキップできますが、将来的にはインタラクティブバンが機能せず、通知がハングすることに注意してください:ScrutinizerGitHubアプリがインストールされていません...
私たちは彼に彼が必要とするすべてのスコープを与えます。恐れることはありません。Scrutinizerはリポジトリを削除したり、害を及ぼすことはありません。これは、アプリケーションがAPIを介してGitHubと通信し、Check Suiteをリアルタイムで管理してフィードバックを提供したり、レビューなどの便宜のためにPRのコードを提供したりするために必要です。
Scrutinizerのインストールウィンドウの例

グローバル構成を作成する
一般的に、リポジトリが多数ある場合、Best Practiesは、一般的な設定を保存する1つのグローバル構成を持ち、個々の構成を上書きするかのように、リポジトリの構成に特定の構成を配置することが正しいと見なされます。
グローバル構成を作成するには、リンクをたどってください。
PHPプロジェクトのグローバル構成の例
build:
environment:
php: 7.3.15
build_failure_conditions:
- 'project.metric_change("scrutinizer.quality", < -0.10)'
- '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
- 'issues.label("coding-style").exists' # No coding style issues allowed
- 'issues.label("coding-style").new.exists' # No new coding style issues allowed
- 'issues.severity(>= MAJOR).new.exists' # New issues of major or higher severity
- 'project.metric("scrutinizer.quality", < 9)' # Code Quality Rating drops below 9
- 'patches.label("Doc Comments").exists' # No doc comments patches allowed
- 'patches.label("Spacing").exists' # No spacing patches allowed
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
remove_extra_empty_lines: 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
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)'
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: false
preserve_blanklines: false
order_alphabetically: false
fix_line_ending: true
fix_doc_comments: 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_entity_manager_injection: true
avoid_duplicate_types: true
avoid_closing_tag: true
assignment_of_null_return: true
argument_type_checks: true
以下で説明するチェックはビルドの失敗につながることに注意してください。したがって、それらのいくつかが必要ない場合は、制限を削除するか下げてください。
アセンブリチェック
build_failure_conditions:
- 'project.metric_change("scrutinizer.quality", < -0.10)'
- 'elements.rating(<= D).exists'
- 'elements.rating(<= D).new.exists'
- 'issues.label("coding-style").exists'
- 'issues.label("coding-style").new.exists'
- 'issues.severity(>= MAJOR).new.exists'
- 'project.metric("scrutinizer.quality", < 9)'
- 'patches.label("Doc Comments").exists'
- 'patches.label("Spacing").exists'
私は注意したいのですが、常にあなたの環境(PHPバージョン、データベースなど)を示してください。デフォルトは変更される可能性があり、ビルドはいつか障害が発生します。先日、PHP8.0.1がリリースされたときにそれが実際に起こりました。
GitHub, .

, .
, :
https://scrutinizer-ci.com/g/-/-/settings
Check Suite
.
, Scrutinizer , 20.
GitHub CI , , - , - Scrutinizer.
Tracking Settings
. , CheckSuite, , , .
Pull-Request Tracking - Pull- .
Pull-Request Notification - , , , GitHub Check Suite.
Tracked Branches - . , "Track only branches listed below" .

Auto-Cancel Non-Finished Inspections
, .
, .

:
https://scrutinizer-ci.com/g/-/-/settings/build-config
.
,

Postgres
build:
nodes:
coverage:
services:
postgres: 12
tests:
override:
-
command: |
sed -e "s/\${USERNAME}/scrutinizer/" \
-e "s/\${PASSWORD}/scrutinizer/" \
-e "s/\${DATABASE}/scrutinizer/" \
-e "s/\${HOST}/127.0.0.1/" \
phpunit.xml.dist > phpunit.xml
./vendor/bin/phpunit \
--verbose \
--stderr \
--coverage-clover build/logs/clover.xml \
--coverage-text
coverage:
file: build/logs/clover.xml
format: clover
analysis:
tests:
override:
- php-scrutinizer-run
-
command: phpcs-run
use_website_config: true
cache:
disabled: true
directories:
- vendor/
filter:
excluded_paths:
- 'tests/*'
- phpcs , .
phpcs.xml
<?xml version="1.0"?>
<ruleset>
<file>./</file>
<exclude-pattern>./vendor/*</exclude-pattern>
<exclude-pattern>./tests/*</exclude-pattern>
<exclude-pattern>./.github/*</exclude-pattern>
<rule ref="PSR1" />
</ruleset>
composer.json require-dev :
"squizlabs/php_codesniffer": "^3.5"
, , Check Suite Scrutinizer.
GitHub

( ) GitHub ( ), - GitHub Actions.
Scrutinizer
Scrutinizer : Code Intelligence, Issues Coverage.
, , ...


Code Intelligence , .
, , Code Intelligence .
, .

- , .
Scrutinizer, , - . , .
, , , , .