mediawiki/mediawiki-phan-config
Shared Phan configuration for MediaWiki projects. Provides two base configs: config.php for MediaWiki extensions/skins and config-library.php for external PHP libraries. Include the appropriate file and customize for your project; CI guidance linked on mediawiki.org.
Begin by installing the package in your MediaWiki extension or skin project:
composer require --dev mediawiki/mediawiki-phan-config
Create a phan.php at the project root and include the appropriate base config (config.php for MediaWiki code, config-library.php for standalone libraries):
<?php
return require __DIR__ . '/vendor/mediawiki/mediawiki-phan-config/config.php';
Run Phan immediately to catch issues:
vendor/bin/phan
Refer to Phan CI docs for GitHub Actions/Jenkins integration.
config.php across all MediaWiki extensions/skins to unify static analysis—ensuring uniform adherence to MediaWiki coding standards, taint analysis, and deprecation coverage.$cfg['directory_list'], suppressions) after require—avoid duplicating core logic:
$cfg['directory_list'] = array_merge($cfg['directory_list'], ['includes/']);
$cfg['suppress_issue_types'] = ['PhanPluginTaintNoSource']; // for trusted input wrappers
mediawiki/phan-taint-check-plugin is auto-enabled. Annotate functions with @taint (e.g., @taint output for XSS-prone methods) to enable flow tracking.mediawiki/mediawiki-codesniffer (for sniffing) and covers-validator (for test coverage gates) to create a unified quality pipeline.php --version in CI.require_once, wfRunHooks(), GlobalVar magic) often triggers PhanUndeclaredProperty or PhanUndeclaredMethod. Fix via:
@phan-var annotations on globalsstubs/MediaWiki.php)suppress_issue_types (never blanket disables)--debug for verbose logs, or pipe output to Checkstyle for CI reporting:
vendor/bin/phan --output-format=checkstyle > phan-results.xml
phan-legacy.php inheriting config.php but relaxing strictness (e.g., $cfg['null_casts_as_any_type'] = true; $cfg['allow_array_cast'] = true;) and run in a separate CI job.phan-taint-check-plugin loads before your custom config’s require—otherwise taint checks may not apply. Verify via composer show mediawiki/phan-taint-check-plugin.How can I help you explore Laravel packages today?