From 6783f9ab3313fa0ec6990074b61a5f2ff129351f Mon Sep 17 00:00:00 2001 From: Dave Liddament Date: Thu, 23 Dec 2021 17:05:11 +0000 Subject: [PATCH 1/2] ADD support for PHP Magic Number Detector --- .../PhpMagicNumberDetectorIdentifier.php | 33 +++++++ .../PhpMagicNumberDetectorResultsParser.php | 78 +++++++++++++++++ .../PhpMagicNumberResultsParserTest.php | 86 +++++++++++++++++++ tests/resources/phpmnd/phpmnd.txt | 19 ++++ 4 files changed, 216 insertions(+) create mode 100644 src/Plugins/ResultsParsers/PhpMagicNumberDetectorResultsParser/PhpMagicNumberDetectorIdentifier.php create mode 100644 src/Plugins/ResultsParsers/PhpMagicNumberDetectorResultsParser/PhpMagicNumberDetectorResultsParser.php create mode 100644 tests/Unit/Plugins/ResultsParsers/PhpMagicNumberDetectorResultsParser/PhpMagicNumberResultsParserTest.php create mode 100644 tests/resources/phpmnd/phpmnd.txt diff --git a/src/Plugins/ResultsParsers/PhpMagicNumberDetectorResultsParser/PhpMagicNumberDetectorIdentifier.php b/src/Plugins/ResultsParsers/PhpMagicNumberDetectorResultsParser/PhpMagicNumberDetectorIdentifier.php new file mode 100644 index 00000000..f7c8c375 --- /dev/null +++ b/src/Plugins/ResultsParsers/PhpMagicNumberDetectorResultsParser/PhpMagicNumberDetectorIdentifier.php @@ -0,0 +1,33 @@ +'; + } +} diff --git a/src/Plugins/ResultsParsers/PhpMagicNumberDetectorResultsParser/PhpMagicNumberDetectorResultsParser.php b/src/Plugins/ResultsParsers/PhpMagicNumberDetectorResultsParser/PhpMagicNumberDetectorResultsParser.php new file mode 100644 index 00000000..19fb24b0 --- /dev/null +++ b/src/Plugins/ResultsParsers/PhpMagicNumberDetectorResultsParser/PhpMagicNumberDetectorResultsParser.php @@ -0,0 +1,78 @@ +addAnalysisResult($analysisResult); + } + } + + return $analysisResultsBuilder->build(); + } + + public function getIdentifier(): Identifier + { + return new PhpMagicNumberDetectorIdentifier(); + } + + public function showTypeGuessingWarning(): bool + { + return false; + } +} diff --git a/tests/Unit/Plugins/ResultsParsers/PhpMagicNumberDetectorResultsParser/PhpMagicNumberResultsParserTest.php b/tests/Unit/Plugins/ResultsParsers/PhpMagicNumberDetectorResultsParser/PhpMagicNumberResultsParserTest.php new file mode 100644 index 00000000..e7efc043 --- /dev/null +++ b/tests/Unit/Plugins/ResultsParsers/PhpMagicNumberDetectorResultsParser/PhpMagicNumberResultsParserTest.php @@ -0,0 +1,86 @@ +phpMagicNumberDetectorResultsParser = new PhpMagicNumberDetectorResultsParser(); + $original = $this->getResource('phpmnd/phpmnd.txt'); + + // Convert both ways + $this->analysisResults = $this->phpMagicNumberDetectorResultsParser->convertFromString($original, $projectRoot); + } + + public function testConversion(): void + { + $this->assertCount(3, $this->analysisResults->getAnalysisResults()); + + $result1 = $this->analysisResults->getAnalysisResults()[0]; + $result2 = $this->analysisResults->getAnalysisResults()[1]; + $result3 = $this->analysisResults->getAnalysisResults()[2]; + + $this->assertMatch($result1, + 'src/File1.php', + 6, + '123' + ); + $this->assertSame( + 'Magic number 123', + $result1->getMessage() + ); + + $this->assertMatch($result2, + 'src/foo/bar/File 2.php', + 11, + '1.7' + ); + + $this->assertMatch($result3, + 'tests/MyTest1.php', + 16, + '10' + ); + } + + public function testTypeGuesser(): void + { + $this->assertFalse($this->phpMagicNumberDetectorResultsParser->showTypeGuessingWarning()); + } + + public function testGetIdentifier(): void + { + $this->assertEquals( + new PhpMagicNumberDetectorIdentifier(), + $this->phpMagicNumberDetectorResultsParser->getIdentifier() + ); + } +} diff --git a/tests/resources/phpmnd/phpmnd.txt b/tests/resources/phpmnd/phpmnd.txt new file mode 100644 index 00000000..0ea11b3c --- /dev/null +++ b/tests/resources/phpmnd/phpmnd.txt @@ -0,0 +1,19 @@ +phpmnd version 2.5.0 by Povilas Susinskas + + + +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + +src/File1.php:6. Magic number: 123 + > 6| return "123"; + +src/foo/bar/File 2.php:11. Magic number: 1.7 + > 11| return 1.7; + +tests/MyTest1.php:16. Magic number: 10 + > 16| return 10; + +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + +Total of Magic Numbers: 3 +Time: 00:00.058, Memory: 8.00 MB From 5403014414a306d30238208ea3ec430093f5894d Mon Sep 17 00:00:00 2001 From: Dave Liddament Date: Thu, 23 Dec 2021 17:26:02 +0000 Subject: [PATCH 2/2] ADD phpmnd to README --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index 0d36121b..d5c7b3d1 100644 --- a/README.md +++ b/README.md @@ -156,6 +156,14 @@ vendor/bin/phpstan analyse --error-format=json | vendor/bin/sarb remove phpstan. ``` NOTE: Checkout PHPStan's built in [baseline feature](https://phpstan.org/user-guide/baseline). Learn how [it differs from SARB](docs/SarbVsOtherBaseliningTechniques.md). +#### [PHP Magic Number Detector](https://github.com/povils/phpmnd) +```shell +vendor/bin/phpmnd . | vendor/bin/sarb create --input-format="phpmnd" phpmnd.baseline +vendor/bin/phpmnd . | vendor/bin/sarb remove phpmnd.baseline +``` + +See notes on [relative paths](docs/ResultsWithRelativePaths.md). + ## My tool isn't supported... That's no problem there are 3 methods to [integrate a static analysis tool](docs/CustomInputFormats.md) with SARB.