utfnormal: main (log #1883643)

sourcepatches

This run took 70 seconds.

From 7c275f0c2a53950f61e30234d059ccf3e45ac1ca Mon Sep 17 00:00:00 2001
From: libraryupgrader <tools.libraryupgrader@tools.wmflabs.org>
Date: Wed, 14 May 2025 08:19:03 +0000
Subject: [PATCH] build: Updating mediawiki/mediawiki-codesniffer to 47.0.0

Change-Id: Ic6b8e0d3bf1f5513f86d69eb4156c2783700a40b
---
 composer.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/composer.json b/composer.json
index 6fb4b8a..55078ac 100644
--- a/composer.json
+++ b/composer.json
@@ -20,7 +20,7 @@
 	},
 	"require-dev": {
 		"ext-curl": "*",
-		"mediawiki/mediawiki-codesniffer": "46.0.0",
+		"mediawiki/mediawiki-codesniffer": "47.0.0",
 		"mediawiki/mediawiki-phan-config": "0.15.1",
 		"mediawiki/minus-x": "1.1.3",
 		"ockcyp/covers-validator": "1.6.0",
-- 
2.39.5

$ date
--- stdout ---
Wed May 14 08:17:56 UTC 2025

--- end ---
$ git clone file:///srv/git/utfnormal.git repo --depth=1 -b master
--- stderr ---
Cloning into 'repo'...
--- stdout ---

--- end ---
$ git config user.name libraryupgrader
--- stdout ---

--- end ---
$ git config user.email tools.libraryupgrader@tools.wmflabs.org
--- stdout ---

--- end ---
$ git submodule update --init
--- stdout ---

--- end ---
$ grr init
--- stdout ---
Installed commit-msg hook.

--- end ---
$ git show-ref refs/heads/master
--- stdout ---
cabb53a6dbc108474680e9eec7fa18bdd7c051f5 refs/heads/master

--- end ---
$ /usr/bin/composer install
--- stderr ---
No composer.lock file present. Updating dependencies to latest instead of installing from lock file. See https://getcomposer.org/install for more information.
Loading composer repositories with package information
Updating dependencies
Lock file operations: 67 installs, 0 updates, 0 removals
  - Locking composer/pcre (3.3.2)
  - Locking composer/semver (3.4.3)
  - Locking composer/spdx-licenses (1.5.9)
  - Locking composer/xdebug-handler (3.0.5)
  - Locking dealerdirect/phpcodesniffer-composer-installer (v1.0.0)
  - Locking doctrine/deprecations (1.1.5)
  - Locking doctrine/instantiator (2.0.0)
  - Locking felixfbecker/advanced-json-rpc (v3.2.1)
  - Locking mediawiki/mediawiki-codesniffer (v46.0.0)
  - Locking mediawiki/mediawiki-phan-config (0.15.1)
  - Locking mediawiki/minus-x (1.1.3)
  - Locking mediawiki/phan-taint-check-plugin (6.1.0)
  - Locking microsoft/tolerant-php-parser (v0.1.2)
  - Locking myclabs/deep-copy (1.13.1)
  - Locking netresearch/jsonmapper (v4.5.0)
  - Locking nikic/php-parser (v5.4.0)
  - Locking ockcyp/covers-validator (v1.6.0)
  - Locking phan/phan (5.4.5)
  - Locking phar-io/manifest (2.0.4)
  - Locking phar-io/version (3.2.1)
  - Locking php-parallel-lint/php-console-color (v1.0.1)
  - Locking php-parallel-lint/php-console-highlighter (v1.0.0)
  - Locking php-parallel-lint/php-parallel-lint (v1.4.0)
  - Locking phpcsstandards/phpcsextra (1.2.1)
  - Locking phpcsstandards/phpcsutils (1.0.12)
  - Locking phpdocumentor/reflection-common (2.2.0)
  - Locking phpdocumentor/reflection-docblock (5.6.2)
  - Locking phpdocumentor/type-resolver (1.10.0)
  - Locking phpstan/phpdoc-parser (2.1.0)
  - Locking phpunit/php-code-coverage (9.2.32)
  - Locking phpunit/php-file-iterator (3.0.6)
  - Locking phpunit/php-invoker (3.1.1)
  - Locking phpunit/php-text-template (2.0.4)
  - Locking phpunit/php-timer (5.0.3)
  - Locking phpunit/phpunit (9.6.21)
  - Locking psr/container (2.0.2)
  - Locking psr/log (3.0.2)
  - Locking sabre/event (5.1.7)
  - Locking sebastian/cli-parser (1.0.2)
  - Locking sebastian/code-unit (1.0.8)
  - Locking sebastian/code-unit-reverse-lookup (2.0.3)
  - Locking sebastian/comparator (4.0.8)
  - Locking sebastian/complexity (2.0.3)
  - Locking sebastian/diff (4.0.6)
  - Locking sebastian/environment (5.1.5)
  - Locking sebastian/exporter (4.0.6)
  - Locking sebastian/global-state (5.0.7)
  - Locking sebastian/lines-of-code (1.0.4)
  - Locking sebastian/object-enumerator (4.0.4)
  - Locking sebastian/object-reflector (2.0.4)
  - Locking sebastian/recursion-context (4.0.5)
  - Locking sebastian/resource-operations (3.0.4)
  - Locking sebastian/type (3.2.1)
  - Locking sebastian/version (3.0.2)
  - Locking squizlabs/php_codesniffer (3.11.3)
  - Locking symfony/console (v6.4.21)
  - Locking symfony/deprecation-contracts (v3.5.1)
  - Locking symfony/polyfill-ctype (v1.32.0)
  - Locking symfony/polyfill-intl-grapheme (v1.32.0)
  - Locking symfony/polyfill-intl-normalizer (v1.32.0)
  - Locking symfony/polyfill-mbstring (v1.32.0)
  - Locking symfony/polyfill-php80 (v1.32.0)
  - Locking symfony/service-contracts (v3.5.1)
  - Locking symfony/string (v7.2.6)
  - Locking theseer/tokenizer (1.2.3)
  - Locking tysonandre/var_representation_polyfill (0.1.3)
  - Locking webmozart/assert (1.11.0)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 67 installs, 0 updates, 0 removals
    0 [>---------------------------]    0 [->--------------------------]
  - Installing squizlabs/php_codesniffer (3.11.3): Extracting archive
  - Installing dealerdirect/phpcodesniffer-composer-installer (v1.0.0): Extracting archive
  - Installing composer/pcre (3.3.2): Extracting archive
  - Installing symfony/polyfill-php80 (v1.32.0): Extracting archive
  - Installing phpcsstandards/phpcsutils (1.0.12): Extracting archive
  - Installing phpcsstandards/phpcsextra (1.2.1): Extracting archive
  - Installing symfony/polyfill-mbstring (v1.32.0): Extracting archive
  - Installing composer/spdx-licenses (1.5.9): Extracting archive
  - Installing composer/semver (3.4.3): Extracting archive
  - Installing mediawiki/mediawiki-codesniffer (v46.0.0): Extracting archive
  - Installing tysonandre/var_representation_polyfill (0.1.3): Extracting archive
  - Installing symfony/polyfill-intl-normalizer (v1.32.0): Extracting archive
  - Installing symfony/polyfill-intl-grapheme (v1.32.0): Extracting archive
  - Installing symfony/polyfill-ctype (v1.32.0): Extracting archive
  - Installing symfony/string (v7.2.6): Extracting archive
  - Installing symfony/deprecation-contracts (v3.5.1): Extracting archive
  - Installing psr/container (2.0.2): Extracting archive
  - Installing symfony/service-contracts (v3.5.1): Extracting archive
  - Installing symfony/console (v6.4.21): Extracting archive
  - Installing sabre/event (5.1.7): Extracting archive
  - Installing netresearch/jsonmapper (v4.5.0): Extracting archive
  - Installing microsoft/tolerant-php-parser (v0.1.2): Extracting archive
  - Installing webmozart/assert (1.11.0): Extracting archive
  - Installing phpstan/phpdoc-parser (2.1.0): Extracting archive
  - Installing phpdocumentor/reflection-common (2.2.0): Extracting archive
  - Installing doctrine/deprecations (1.1.5): Extracting archive
  - Installing phpdocumentor/type-resolver (1.10.0): Extracting archive
  - Installing phpdocumentor/reflection-docblock (5.6.2): Extracting archive
  - Installing felixfbecker/advanced-json-rpc (v3.2.1): Extracting archive
  - Installing psr/log (3.0.2): Extracting archive
  - Installing composer/xdebug-handler (3.0.5): Extracting archive
  - Installing phan/phan (5.4.5): Extracting archive
  - Installing mediawiki/phan-taint-check-plugin (6.1.0): Extracting archive
  - Installing mediawiki/mediawiki-phan-config (0.15.1): Extracting archive
  - Installing mediawiki/minus-x (1.1.3): Extracting archive
  - Installing sebastian/version (3.0.2): Extracting archive
  - Installing sebastian/type (3.2.1): Extracting archive
  - Installing sebastian/resource-operations (3.0.4): Extracting archive
  - Installing sebastian/recursion-context (4.0.5): Extracting archive
  - Installing sebastian/object-reflector (2.0.4): Extracting archive
  - Installing sebastian/object-enumerator (4.0.4): Extracting archive
  - Installing sebastian/global-state (5.0.7): Extracting archive
  - Installing sebastian/exporter (4.0.6): Extracting archive
  - Installing sebastian/environment (5.1.5): Extracting archive
  - Installing sebastian/diff (4.0.6): Extracting archive
  - Installing sebastian/comparator (4.0.8): Extracting archive
  - Installing sebastian/code-unit (1.0.8): Extracting archive
  - Installing sebastian/cli-parser (1.0.2): Extracting archive
  - Installing phpunit/php-timer (5.0.3): Extracting archive
  - Installing phpunit/php-text-template (2.0.4): Extracting archive
  - Installing phpunit/php-invoker (3.1.1): Extracting archive
  - Installing phpunit/php-file-iterator (3.0.6): Extracting archive
  - Installing theseer/tokenizer (1.2.3): Extracting archive
  - Installing nikic/php-parser (v5.4.0): Extracting archive
  - Installing sebastian/lines-of-code (1.0.4): Extracting archive
  - Installing sebastian/complexity (2.0.3): Extracting archive
  - Installing sebastian/code-unit-reverse-lookup (2.0.3): Extracting archive
  - Installing phpunit/php-code-coverage (9.2.32): Extracting archive
  - Installing phar-io/version (3.2.1): Extracting archive
  - Installing phar-io/manifest (2.0.4): Extracting archive
  - Installing myclabs/deep-copy (1.13.1): Extracting archive
  - Installing doctrine/instantiator (2.0.0): Extracting archive
  - Installing phpunit/phpunit (9.6.21): Extracting archive
  - Installing ockcyp/covers-validator (v1.6.0): Extracting archive
  - Installing php-parallel-lint/php-console-color (v1.0.1): Extracting archive
  - Installing php-parallel-lint/php-console-highlighter (v1.0.0): Extracting archive
  - Installing php-parallel-lint/php-parallel-lint (v1.4.0): Extracting archive
  0/65 [>---------------------------]   0%
 20/65 [========>-------------------]  30%
 32/65 [=============>--------------]  49%
 43/65 [==================>---------]  66%
 57/65 [========================>---]  87%
 65/65 [============================] 100%
5 package suggestions were added by new dependencies, use `composer suggest` to see details.
Generating autoload files
42 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
--- stdout ---
PHP CodeSniffer Config installed_paths set to ../../mediawiki/mediawiki-codesniffer,../../phpcsstandards/phpcsextra,../../phpcsstandards/phpcsutils

--- end ---
Upgrading c:mediawiki/mediawiki-codesniffer from 46.0.0 -> 47.0.0
$ /usr/bin/composer update
--- stderr ---
Loading composer repositories with package information
Updating dependencies
Lock file operations: 0 installs, 2 updates, 0 removals
  - Upgrading mediawiki/mediawiki-codesniffer (v46.0.0 => v47.0.0)
  - Upgrading squizlabs/php_codesniffer (3.11.3 => 3.12.2)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 0 installs, 2 updates, 0 removals
    0 [>---------------------------]    0 [->--------------------------]
  - Upgrading squizlabs/php_codesniffer (3.11.3 => 3.12.2): Extracting archive
  - Upgrading mediawiki/mediawiki-codesniffer (v46.0.0 => v47.0.0): Extracting archive
 0/2 [>---------------------------]   0%
 1/2 [==============>-------------]  50%
 2/2 [============================] 100%
Generating autoload files
42 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
No security vulnerability advisories found
--- stdout ---
PHP CodeSniffer Config installed_paths set to ../../mediawiki/mediawiki-codesniffer,../../phpcsstandards/phpcsextra,../../phpcsstandards/phpcsutils

--- end ---
Previously failing phpcs rules: {'Generic.CodeAnalysis.AssignmentInCondition.Found', 'MediaWiki.NamingConventions.PrefixedGlobalFunctions.allowedPrefix', 'MediaWiki.NamingConventions.ValidGlobalName.allowedPrefix', 'MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName', 'Generic.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition'}
$ vendor/bin/phpcs --report=json
--- stdout ---
{"totals":{"errors":15,"warnings":8,"fixable":0},"files":{"\/src\/repo\/scripts\/benchmark.php":{"errors":2,"warnings":0,"messages":[{"message":"Global function \"benchmarkTest()\" is lacking a valid prefix ('wf'). It should be wfBenchmarkTest().","source":"MediaWiki.NamingConventions.PrefixedGlobalFunctions.allowedPrefix","severity":5,"fixable":false,"type":"ERROR","line":55,"column":1},{"message":"Global function \"benchmarkForm()\" is lacking a valid prefix ('wf'). It should be wfBenchmarkForm().","source":"MediaWiki.NamingConventions.PrefixedGlobalFunctions.allowedPrefix","severity":5,"fixable":false,"type":"ERROR","line":89,"column":1}]},"\/src\/repo\/.phan\/config.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/src\/Constants.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/Utf8Test.php":{"errors":0,"warnings":2,"messages":[{"message":"Variable assignment found within a condition. Did you mean to do a comparison ?","source":"Generic.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition","severity":5,"fixable":false,"type":"WARNING","line":35,"column":25},{"message":"Variable assignment found within a condition. Did you mean to do a comparison ?","source":"Generic.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition","severity":5,"fixable":false,"type":"WARNING","line":72,"column":25}]},"\/src\/repo\/src\/Utils.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/scripts\/memstress.php":{"errors":2,"warnings":0,"messages":[{"message":"Global function \"benchmarkTest()\" is lacking a valid prefix ('wf'). It should be wfBenchmarkTest().","source":"MediaWiki.NamingConventions.PrefixedGlobalFunctions.allowedPrefix","severity":5,"fixable":false,"type":"ERROR","line":60,"column":1},{"message":"Global function \"benchmarkForm()\" is lacking a valid prefix ('wf'). It should be wfBenchmarkForm().","source":"MediaWiki.NamingConventions.PrefixedGlobalFunctions.allowedPrefix","severity":5,"fixable":false,"type":"ERROR","line":92,"column":1}]},"\/src\/repo\/scripts\/generate.php":{"errors":6,"warnings":3,"messages":[{"message":"Global function \"download()\" is lacking a valid prefix ('wf'). It should be wfDownload().","source":"MediaWiki.NamingConventions.PrefixedGlobalFunctions.allowedPrefix","severity":5,"fixable":false,"type":"ERROR","line":40,"column":1},{"message":"Global function \"getFilePointer()\" is lacking a valid prefix ('wf'). It should be wfGetFilePointer().","source":"MediaWiki.NamingConventions.PrefixedGlobalFunctions.allowedPrefix","severity":5,"fixable":false,"type":"ERROR","line":55,"column":1},{"message":"Variable assignment found within a condition. Did you mean to do a comparison ?","source":"Generic.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition","severity":5,"fixable":false,"type":"WARNING","line":82,"column":17},{"message":"Variable assignment found within a condition. Did you mean to do a comparison ?","source":"Generic.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition","severity":5,"fixable":false,"type":"WARNING","line":109,"column":17},{"message":"Variable assignment found within a condition. Did you mean to do a comparison ?","source":"Generic.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition","severity":5,"fixable":false,"type":"WARNING","line":131,"column":17},{"message":"Global function \"callbackCanonical()\" is lacking a valid prefix ('wf'). It should be wfCallbackCanonical().","source":"MediaWiki.NamingConventions.PrefixedGlobalFunctions.allowedPrefix","severity":5,"fixable":false,"type":"ERROR","line":265,"column":1},{"message":"Global variable \"$canonicalDecomp\" is lacking an allowed prefix ('wg'). Should be \"$wgCanonicalDecomp\".","source":"MediaWiki.NamingConventions.ValidGlobalName.allowedPrefix","severity":5,"fixable":false,"type":"ERROR","line":266,"column":5},{"message":"Global function \"callbackCompat()\" is lacking a valid prefix ('wf'). It should be wfCallbackCompat().","source":"MediaWiki.NamingConventions.PrefixedGlobalFunctions.allowedPrefix","severity":5,"fixable":false,"type":"ERROR","line":279,"column":1},{"message":"Global variable \"$compatibilityDecomp\" is lacking an allowed prefix ('wg'). Should be \"$wgCompatibilityDecomp\".","source":"MediaWiki.NamingConventions.ValidGlobalName.allowedPrefix","severity":5,"fixable":false,"type":"ERROR","line":280,"column":5}]},"\/src\/repo\/tests\/UtfNormalTest.php":{"errors":0,"warnings":2,"messages":[{"message":"Variable assignment found within a condition. Did you mean to do a comparison ?","source":"Generic.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition","severity":5,"fixable":false,"type":"WARNING","line":46,"column":25},{"message":"Variable assignment found within a condition. Did you mean to do a comparison ?","source":"Generic.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition","severity":5,"fixable":false,"type":"WARNING","line":136,"column":25}]},"\/src\/repo\/tests\/CleanUpTest.php":{"errors":1,"warnings":0,"messages":[{"message":"Method name \"XtestAllChars\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":73,"column":12}]},"\/src\/repo\/src\/Validator.php":{"errors":4,"warnings":1,"messages":[{"message":"Variable assignment found within a condition. Did you mean to do a comparison ?","source":"Generic.CodeAnalysis.AssignmentInCondition.Found","severity":5,"fixable":false,"type":"WARNING","line":342,"column":45},{"message":"Method name \"NFC\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":476,"column":19},{"message":"Method name \"NFD\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":484,"column":19},{"message":"Method name \"NFKC\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":496,"column":19},{"message":"Method name \"NFKD\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":504,"column":19}]}}}

--- end ---
PHPCS run failed
$ vendor/bin/phpcs --report=json
--- stdout ---
{"totals":{"errors":15,"warnings":8,"fixable":0},"files":{"\/src\/repo\/scripts\/benchmark.php":{"errors":2,"warnings":0,"messages":[{"message":"Global function \"benchmarkTest()\" is lacking a valid prefix ('wf'). It should be wfBenchmarkTest().","source":"MediaWiki.NamingConventions.PrefixedGlobalFunctions.allowedPrefix","severity":5,"fixable":false,"type":"ERROR","line":55,"column":1},{"message":"Global function \"benchmarkForm()\" is lacking a valid prefix ('wf'). It should be wfBenchmarkForm().","source":"MediaWiki.NamingConventions.PrefixedGlobalFunctions.allowedPrefix","severity":5,"fixable":false,"type":"ERROR","line":89,"column":1}]},"\/src\/repo\/.phan\/config.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/scripts\/memstress.php":{"errors":2,"warnings":0,"messages":[{"message":"Global function \"benchmarkTest()\" is lacking a valid prefix ('wf'). It should be wfBenchmarkTest().","source":"MediaWiki.NamingConventions.PrefixedGlobalFunctions.allowedPrefix","severity":5,"fixable":false,"type":"ERROR","line":60,"column":1},{"message":"Global function \"benchmarkForm()\" is lacking a valid prefix ('wf'). It should be wfBenchmarkForm().","source":"MediaWiki.NamingConventions.PrefixedGlobalFunctions.allowedPrefix","severity":5,"fixable":false,"type":"ERROR","line":92,"column":1}]},"\/src\/repo\/src\/Constants.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/src\/Utils.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/Utf8Test.php":{"errors":0,"warnings":2,"messages":[{"message":"Variable assignment found within a condition. Did you mean to do a comparison ?","source":"Generic.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition","severity":5,"fixable":false,"type":"WARNING","line":35,"column":25},{"message":"Variable assignment found within a condition. Did you mean to do a comparison ?","source":"Generic.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition","severity":5,"fixable":false,"type":"WARNING","line":72,"column":25}]},"\/src\/repo\/scripts\/generate.php":{"errors":6,"warnings":3,"messages":[{"message":"Global function \"download()\" is lacking a valid prefix ('wf'). It should be wfDownload().","source":"MediaWiki.NamingConventions.PrefixedGlobalFunctions.allowedPrefix","severity":5,"fixable":false,"type":"ERROR","line":40,"column":1},{"message":"Global function \"getFilePointer()\" is lacking a valid prefix ('wf'). It should be wfGetFilePointer().","source":"MediaWiki.NamingConventions.PrefixedGlobalFunctions.allowedPrefix","severity":5,"fixable":false,"type":"ERROR","line":55,"column":1},{"message":"Variable assignment found within a condition. Did you mean to do a comparison ?","source":"Generic.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition","severity":5,"fixable":false,"type":"WARNING","line":82,"column":17},{"message":"Variable assignment found within a condition. Did you mean to do a comparison ?","source":"Generic.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition","severity":5,"fixable":false,"type":"WARNING","line":109,"column":17},{"message":"Variable assignment found within a condition. Did you mean to do a comparison ?","source":"Generic.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition","severity":5,"fixable":false,"type":"WARNING","line":131,"column":17},{"message":"Global function \"callbackCanonical()\" is lacking a valid prefix ('wf'). It should be wfCallbackCanonical().","source":"MediaWiki.NamingConventions.PrefixedGlobalFunctions.allowedPrefix","severity":5,"fixable":false,"type":"ERROR","line":265,"column":1},{"message":"Global variable \"$canonicalDecomp\" is lacking an allowed prefix ('wg'). Should be \"$wgCanonicalDecomp\".","source":"MediaWiki.NamingConventions.ValidGlobalName.allowedPrefix","severity":5,"fixable":false,"type":"ERROR","line":266,"column":5},{"message":"Global function \"callbackCompat()\" is lacking a valid prefix ('wf'). It should be wfCallbackCompat().","source":"MediaWiki.NamingConventions.PrefixedGlobalFunctions.allowedPrefix","severity":5,"fixable":false,"type":"ERROR","line":279,"column":1},{"message":"Global variable \"$compatibilityDecomp\" is lacking an allowed prefix ('wg'). Should be \"$wgCompatibilityDecomp\".","source":"MediaWiki.NamingConventions.ValidGlobalName.allowedPrefix","severity":5,"fixable":false,"type":"ERROR","line":280,"column":5}]},"\/src\/repo\/tests\/UtfNormalTest.php":{"errors":0,"warnings":2,"messages":[{"message":"Variable assignment found within a condition. Did you mean to do a comparison ?","source":"Generic.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition","severity":5,"fixable":false,"type":"WARNING","line":46,"column":25},{"message":"Variable assignment found within a condition. Did you mean to do a comparison ?","source":"Generic.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition","severity":5,"fixable":false,"type":"WARNING","line":136,"column":25}]},"\/src\/repo\/tests\/CleanUpTest.php":{"errors":1,"warnings":0,"messages":[{"message":"Method name \"XtestAllChars\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":73,"column":12}]},"\/src\/repo\/src\/Validator.php":{"errors":4,"warnings":1,"messages":[{"message":"Variable assignment found within a condition. Did you mean to do a comparison ?","source":"Generic.CodeAnalysis.AssignmentInCondition.Found","severity":5,"fixable":false,"type":"WARNING","line":342,"column":45},{"message":"Method name \"NFC\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":476,"column":19},{"message":"Method name \"NFD\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":484,"column":19},{"message":"Method name \"NFKC\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":496,"column":19},{"message":"Method name \"NFKD\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":504,"column":19}]}}}

--- end ---
$ git checkout .phpcs.xml
--- stderr ---
Updated 1 path from the index
--- stdout ---

--- end ---
$ /usr/bin/composer install
--- stderr ---
Installing dependencies from lock file (including require-dev)
Verifying lock file contents can be installed on current platform.
Nothing to install, update or remove
Generating autoload files
42 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
--- stdout ---

--- end ---
$ /usr/bin/composer test
--- stderr ---
> parallel-lint . --exclude vendor -e php,inc
> phpunit
> covers-validator
> phpcs -sp
> phan --allow-polyfill-parser --long-progress-bar
Parsing files...
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   54 / 1491 (  4%) 45MB
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░  108 / 1491 (  9%) 66MB
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░  162 / 1491 ( 17%) 73MB
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░  216 / 1491 ( 17%) 73MB
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░  270 / 1491 ( 25%) 78MB
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░  324 / 1491 ( 25%) 78MB
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░  378 / 1491 ( 26%) 109MB
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░  432 / 1491 ( 30%) 118MB
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░  486 / 1491 ( 35%) 131MB
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░  540 / 1491 ( 37%) 136MB
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░  594 / 1491 ( 41%) 146MB
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░  648 / 1491 ( 49%) 153MB
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░  702 / 1491 ( 49%) 153MB
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░  756 / 1491 ( 54%) 164MB
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░  810 / 1491 ( 54%) 164MB
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░  864 / 1491 ( 58%) 171MB
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░  918 / 1491 ( 66%) 181MB
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░  972 / 1491 ( 66%) 181MB
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 1026 / 1491 ( 69%) 192MB
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 1080 / 1491 ( 75%) 200MB
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 1134 / 1491 ( 81%) 210MB
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 1188 / 1491 ( 81%) 210MB
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 1242 / 1491 ( 87%) 221MB
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 1296 / 1491 ( 87%) 221MB
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 1350 / 1491 ( 92%) 230MB
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 1404 / 1491 ( 95%) 240MB
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 1458 / 1491 ( 98%) 251MB
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░                      1491 / 1491 (100%) 259MB
Analyzing classes...
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 286MB
Analyzing functions...
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 286MB
Analyzing methods...
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 292MB
Analyzing files...
░░░                                                    3 / 3 (100%) 295MB

> minus-x check .
> php scripts/benchmark.php
--- stdout ---
PHP 8.2.28 | 10 parallel jobs
............                                                 12/12 (100%)


Checked 12 files in 0.1 seconds
No syntax error found
PHPUnit 9.6.21 by Sebastian Bergmann and contributors.

................................................................. 65 / 97 ( 67%)
................................                                  97 / 97 (100%)

Time: 00:19.815, Memory: 53.51 MB

OK (97 tests, 561281 assertions)
CoversValidator 1.6.0

Validation complete. All @covers tags are valid.
.......... 10 / 10 (100%)


Time: 351ms; Memory: 8MB

MinusX
======
Processing /src/repo...
......................................
All good!
Testing /src/repo/scripts/testdata/washington.txt (English text)...
              cleanUp    0.2ms  150,774,946 bytes/s (no change)
                toNFC    0.2ms  202,185,975 bytes/s (no change)
                  NFC   14.2ms    2,221,413 bytes/s (no change)
        fastDecompose    4.2ms    7,470,600 bytes/s (no change)
    fastCombiningSort    7.4ms    4,280,522 bytes/s (no change)
          fastCompose    5.4ms    5,800,562 bytes/s (no change)
Testing /src/repo/scripts/testdata/berlin.txt (German text)...
              cleanUp    0.2ms  155,287,585 bytes/s (no change)
                toNFC    0.2ms  185,324,965 bytes/s (no change)
                  NFC   16.5ms    2,199,623 bytes/s (no change)
        fastDecompose    4.4ms    8,254,964 bytes/s (changed)
    fastCombiningSort    5.1ms    7,239,388 bytes/s (no change)
          fastCompose    6.3ms    5,800,639 bytes/s (changed)
Testing /src/repo/scripts/testdata/bulgakov.txt (Russian text)...
              cleanUp    0.4ms  100,687,888 bytes/s (no change)
                toNFC    0.3ms  118,524,469 bytes/s (no change)
                  NFC   20.8ms    1,773,793 bytes/s (no change)
        fastDecompose    6.1ms    6,063,631 bytes/s (changed)
    fastCombiningSort    5.7ms    6,600,388 bytes/s (no change)
          fastCompose    9.0ms    4,134,647 bytes/s (changed)
Testing /src/repo/scripts/testdata/tokyo.txt (Japanese text)...
              cleanUp    0.3ms  108,817,719 bytes/s (no change)
                toNFC    0.3ms  135,247,646 bytes/s (no change)
                  NFC   15.1ms    2,405,049 bytes/s (no change)
        fastDecompose    4.1ms    8,769,446 bytes/s (changed)
    fastCombiningSort    4.4ms    8,507,712 bytes/s (no change)
          fastCompose    6.6ms    5,648,570 bytes/s (changed)
Testing /src/repo/scripts/testdata/young.txt (Korean text)...
              cleanUp    0.4ms   88,400,798 bytes/s (no change)
                toNFC    0.3ms  106,361,984 bytes/s (no change)
                  NFC   45.7ms      802,930 bytes/s (no change)
        fastDecompose   14.4ms    2,549,966 bytes/s (changed)
    fastCombiningSort    8.3ms    9,613,791 bytes/s (no change)
          fastCompose   25.9ms    3,083,247 bytes/s (changed)

--- end ---
build: Updating mediawiki/mediawiki-codesniffer to 47.0.0

$ git add .
--- stdout ---

--- end ---
$ git commit -F /tmp/tmp2yikj6ai
--- stdout ---
[master 7c275f0] build: Updating mediawiki/mediawiki-codesniffer to 47.0.0
 1 file changed, 1 insertion(+), 1 deletion(-)

--- end ---
$ git format-patch HEAD~1 --stdout
--- stdout ---
From 7c275f0c2a53950f61e30234d059ccf3e45ac1ca Mon Sep 17 00:00:00 2001
From: libraryupgrader <tools.libraryupgrader@tools.wmflabs.org>
Date: Wed, 14 May 2025 08:19:03 +0000
Subject: [PATCH] build: Updating mediawiki/mediawiki-codesniffer to 47.0.0

Change-Id: Ic6b8e0d3bf1f5513f86d69eb4156c2783700a40b
---
 composer.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/composer.json b/composer.json
index 6fb4b8a..55078ac 100644
--- a/composer.json
+++ b/composer.json
@@ -20,7 +20,7 @@
 	},
 	"require-dev": {
 		"ext-curl": "*",
-		"mediawiki/mediawiki-codesniffer": "46.0.0",
+		"mediawiki/mediawiki-codesniffer": "47.0.0",
 		"mediawiki/mediawiki-phan-config": "0.15.1",
 		"mediawiki/minus-x": "1.1.3",
 		"ockcyp/covers-validator": "1.6.0",
-- 
2.39.5


--- end ---
Source code is licensed under the AGPL.