Download the PHP package povils/phpmnd without Composer
On this page you can find all versions of the php package povils/phpmnd. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download povils/phpmnd
More information about povils/phpmnd
Files in povils/phpmnd
Package phpmnd
Short Description A tool to detect Magic numbers in codebase
License MIT
Informations about the package phpmnd
PHP Magic Number Detector (PHPMND)
phpmnd
is a tool that aims to help you to detect magic numbers in your PHP code. By default 0 and 1 are not considered to be magic numbers.
What is a magic number?
A magic number is a numeric literal that is not defined as a constant, but which may change at a later stage, and therefore can be hard to update. It's considered a bad programming practice to use numbers directly in any source code without an explanation. In most cases this makes programs harder to read, understand, and maintain.
Consider the following hypothetical code:
which should be refactored to:
This clearly improves the code readability and also reduces its maintenance cost.
Of course not every literal number is a magic number.
Surely in this case the number 2 is not a magic number.
My rule of thumb:
Installation
Locally
You can add this tool as a local, per-project, development dependency to your project by using Composer:
Afterwards you can then invoke it using the vendor/bin/phpmnd
executable.
Globally
To install it globally simply run:
Afterwards make sure you have the global Composer binaries directory in your PATH
. Example for some Unix systems:
Usage Example
Demo
Basic usage
The --allow-array-mapping
option allow keys as strings when using "array" extension.
The --exclude-file
option will exclude a file from the code analysis. Multiple values are allowed.
The --exclude-path
option will exclude a path, which must be relative to the source, from the code analysis. Multiple values are allowed.
The --exclude
option will exclude a directory, which must be relative to the source, from the code analysis. Multiple values are allowed (e.g. --exclude=tests --exclude=examples).
The --extensions
option lets you extend the code analysis. The provided extensions must be comma separated.
The --hint
option will suggest replacements for magic numbers based on your codebase constants.
The --ignore-funcs
option will exclude a list of comma separated functions from the code analysis, when using the "argument" extension. Defaults to intval
, floatval
, strval
.
The --ignore-numbers
option will exclude a list of comma separated numbers from the code analysis.
The --ignore-strings
option will exclude strings from the code analysis, when using the "strings" option.
The --include-numeric-string
option forces numeric strings such as "1234" to also be treated as a number.
The --progress
option will display a progress bar.
The --strings
option will include strings literal search in code analysis.
The --suffixes
option will configure a comma separated list of valid source code filename extensions.
The --whitelist
option will only process the files listed in the file specified. This is useful for incremental analysis.
The --xml-output
option will generate an report in an Xml format to the path specified by the option.
By default it analyses conditions, return statements, and switch cases.
Extensions
-
argument
-
array
-
assign
-
default_parameter
-
operation
-
property
-
return (default)
- condition (default)
-
switch_case (default)
- all To include all extensions.
If extensions start with a minus, it means that these will be removed from the code analysis. I would recommend to clean up your code by using the default extension before using any of these extensions.
Ignoring a number from analysis
Sometimes magic numbers are required. For example implementing a known mathematical formula, by default intval
, floatval
and strval
mark a number as not magic.
eg
would show 100 as a magic number
would mark 100 as not magic.
Contributing
Please see CONTRIBUTING.md for more information.
License
The MIT License (MIT). Please see LICENSE for more information.
All versions of phpmnd with dependencies
composer-runtime-api Version ^2.0
nikic/php-parser Version ^4.18 || ^5.0
php-parallel-lint/php-console-highlighter Version ^1.0
phpunit/php-timer Version ^2.0 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0
symfony/console Version ^4.4 || ^5.0 || ^6.0 || ^7.0
symfony/finder Version ^4.4 || ^5.0 || ^6.0 || ^7.0