phan (new static analysis tool) is now voting on MediaWiki core
Thanks to some awesome work by Erik Bernhardson, phan, a new static
analysis tool, is now voting on MediaWiki core patches.
It's significantly more advanced than any of our other current tools,
and should help identify some types of errors. It uses PHP 7's AST to
process code, but is capable of analyzing PHP5 code.
There's documentation on mediawiki.org about how it is currently
configured, and how to set it up locally. You'll need PHP 7 with the ast
extension to actually run phan. If that's not possible for your system,
you can rely on jenkins to run it for you.
> There's documentation on mediawiki.org about how it is currently
> configured, and how to set it up locally. You'll need PHP 7 with the ast
> extension to actually run phan. If that's not possible for your system,
> you can rely on jenkins to run it for you.
I wonder how hard would it be to add php7/phan to mediawiki-vagrant?
Re: phan (new static analysis tool) is now voting on MediaWiki core
Getting Phan voting is a great first step, but we need everyone's help to
improve the strictness of analysis we apply. For this initial rollout Phan
is only voting on critical errors. These are typically PHP fatal errors
like referencing a class that doesn't exist (missing use statement?) and
calling methods that don't exist (fat fingers? Incomplete refactor?).
I'll soon have merged a change that reduces the minimum error level from
critical to low, and adds a blacklist of all issue types that currently
exist. Please take a look at tests/phan/config.php and choose a type to
fix. There is a comment with each item that says how many exist. Remove
the item from the blacklist, fix the issues, and get it merged to
strengthen the analysis we apply to all patches.
I should also note that Phan isn't trying to guarantee that code is
correct. It is trying to find code that is most likely to be incorrect.
There are occasionally false positives but that's life. A patch
implementing per line issue suppression is being worked on to address these.