mediawiki-extensions-Discus.../.phan/config.php
Bartosz Dziewoński af68c835bb Update exception handling for new code conventions
Change code to match the documented consensus formed on T321683:
https://www.mediawiki.org/wiki/Manual:Coding_conventions/PHP#Exception_handling

* Do not directly throw Exception, Error or MWException
* Document checked exceptions with @throws
* Do not document unchecked exceptions

For this extension, I think it makes sense to consider DOMException an
unchecked exception too (in addition to the usual LogicException and
RuntimeException).

Depends-On: Id07e301c3f20afa135e5469ee234a27354485652
Depends-On: I869af06896b9757af18488b916211c5a41a8c563
Depends-On: I42d9b7465d1406a22ef1b3f6d8de426c60c90e2c
Change-Id: Ic9d9efd031a87fa5a93143f714f0adb20f0dd956
2023-01-22 18:17:11 +00:00

58 lines
1.5 KiB
PHP

<?php
$cfg = require __DIR__ . '/../vendor/mediawiki/mediawiki-phan-config/src/config.php';
$cfg['directory_list'] = array_merge(
$cfg['directory_list'],
[
'../../extensions/VisualEditor',
'../../extensions/Echo',
'../../extensions/EventLogging',
'../../extensions/Gadgets',
]
);
$cfg['exclude_analysis_directory_list'] = array_merge(
$cfg['exclude_analysis_directory_list'],
[
'../../extensions/VisualEditor',
'../../extensions/Echo',
'../../extensions/EventLogging',
'../../extensions/Gadgets',
]
);
$cfg['warn_about_undocumented_throw_statements'] = true;
$cfg['exception_classes_with_optional_throws_phpdoc'] = [
'LogicException',
'RuntimeException',
'DOMException',
];
$cfg['warn_about_undocumented_exceptions_thrown_by_invoked_functions'] = true;
/**
* Quick implementation of a recursive directory list.
* @param string $dir The directory to list
* @param ?array &$result Where to put the result
*/
function wfCollectPhpFiles( string $dir, ?array &$result = [] ) {
if ( !is_dir( $dir ) ) {
return;
}
foreach ( scandir( $dir ) as $f ) {
if ( $f === '.' || $f === '..' ) {
continue;
}
$fullName = $dir . DIRECTORY_SEPARATOR . $f;
wfCollectPhpFiles( $fullName, $result );
if ( is_file( $fullName ) && preg_match( '/\.php$/D', $fullName ) ) {
$result[] = $fullName;
}
}
}
// Exclude Parsoid's src/DOM in favour of .phan/stubs/DomImpl.php
wfCollectPhpFiles( "{$VP}/vendor/wikimedia/parsoid/src/DOM", $cfg['exclude_file_list'] );
return $cfg;