Repository Analysis

getgrav/grav

Modern, Crazy Fast, Ridiculously Easy and Amazingly Powerful Flat-File CMS powered by PHP, Markdown, Twig, and Symfony

1.8 Likely human-written View on GitHub
1.8
Adjusted Score
1.8
Raw Score
100%
Time Factor
2026-05-29
Last Push
15,499
Stars
PHP
Language
125,446
Lines of Code
685
Files
188
Pattern Hits
2026-05-31
Scan Date

Score History

Severity Breakdown

CRITICAL 3HIGH 0MEDIUM 0LOW 185

Pattern Findings

188 matches across 5 categories. Click a row to expand file-level details.

Hyper-Verbose Identifiers86 hits · 92 pts
SeverityFileLineSnippet
LOW…nit/Grav/Framework/File/Formatter/CsvFormatterTest.php10 public function testEncodeWithAssocColumns(): void
LOW…nit/Grav/Framework/File/Formatter/CsvFormatterTest.php29 public function testEncodeWithIndexColumns(): void
LOWtests/unit/Grav/Common/UtilsTest.php294 public function testPathPrefixedByLangCode(): void
LOWtests/unit/Grav/Common/AssetsTest.php327 public function testAddingAssetPropertiesWithArray(): void
LOWtests/unit/Grav/Common/AssetsTest.php337 public function testAddingJSAssetPropertiesWithArrayFromCollection(): void
LOWtests/unit/Grav/Common/AssetsTest.php446 public function testAddingCSSAssetPropertiesWithArrayFromCollection(): void
LOWtests/unit/Grav/Common/AssetsTest.php476 public function testAddingAssetPropertiesWithArrayFromCollectionAndParameters(): void
LOWtests/unit/Grav/Common/AssetsTest.php576 public function testPipelineWithTimestamp(): void
LOWtests/unit/Grav/Common/AssetsTest.php735 public function testRegisterCollectionWithParameters(): void
LOWtests/unit/Grav/Common/Page/PagesTest.php252 public function testLongPathTranslatedLanguages(): void
LOWtests/unit/Grav/Common/Markdown/ParsedownTest.php182 public function testImagesSubDirAbsoluteUrls(): void
LOWtests/unit/Grav/Common/Markdown/ParsedownTest.php410 public function testRootImagesSubDirAbsoluteUrls(): void
LOWtests/unit/Grav/Common/Markdown/ParsedownTest.php506 public function testAnchorLinksLangRelativeUrls(): void
LOWtests/unit/Grav/Common/Markdown/ParsedownTest.php531 public function testAnchorLinksLangAbsoluteUrls(): void
LOWtests/unit/Grav/Common/Markdown/ParsedownTest.php588 public function testExternalLinksSubDirAbsoluteUrls(): void
LOWtests/unit/Grav/Common/Markdown/ParsedownTest.php603 public function testAnchorLinksRelativeUrls(): void
LOWtests/unit/Grav/Common/Markdown/ParsedownTest.php625 public function testAnchorLinksAbsoluteUrls(): void
LOWtests/unit/Grav/Common/Markdown/ParsedownTest.php648 public function testAnchorLinksWithPortAbsoluteUrls(): void
LOWtests/unit/Grav/Common/Markdown/ParsedownTest.php671 public function testAnchorLinksSubDirRelativeUrls(): void
LOWtests/unit/Grav/Common/Markdown/ParsedownTest.php693 public function testAnchorLinksSubDirAbsoluteUrls(): void
LOWtests/unit/Grav/Common/Markdown/ParsedownTest.php762 public function testSlugRelativeLinksAbsoluteUrls(): void
LOWtests/unit/Grav/Common/Markdown/ParsedownTest.php809 public function testSlugRelativeLinksSubDir(): void
LOWtests/unit/Grav/Common/Markdown/ParsedownTest.php855 public function testSlugRelativeLinksSubDirAbsoluteUrls(): void
LOWtests/unit/Grav/Common/Markdown/ParsedownTest.php903 public function testDirectoryRelativeLinks(): void
LOWtests/unit/Grav/Common/Markdown/ParsedownTest.php972 public function testDirectoryAbsoluteLinksSubDir(): void
LOWtests/unit/Grav/Common/Markdown/ParsedownTest.php1006 public function testDirectoryAbsoluteLinksSubDirAbsoluteUrl(): void
LOWtests/unit/Grav/Common/Markdown/ParsedownTest.php1067 public function testSpecialProtocolsSubDir(): void
LOWtests/unit/Grav/Common/Markdown/ParsedownTest.php1093 public function testSpecialProtocolsSubDirAbsoluteUrl(): void
LOWtests/unit/Grav/Common/Markdown/ParsedownTest.php1220 public function testInvalidLinksSubDirAbsoluteUrl(): void
LOWtests/unit/Grav/Common/GPM/GPMTest.php56 public function testCalculateMergedDependenciesOfPackages(): void
LOWtests/unit/Grav/Common/GPM/GPMTest.php274 public function testVersionFormatIsNextSignificantRelease(): void
LOWtests/unit/Grav/Common/GPM/GPMTest.php284 public function testVersionFormatIsEqualOrHigher(): void
LOWtests/unit/Grav/Common/GPM/GPMTest.php293 public function testCheckNextSignificantReleasesAreCompatible(): void
LOWtests/unit/Grav/Common/GPM/GPMTest.php319 public function testCalculateVersionNumberFromDependencyVersion(): void
LOWtests/unit/Grav/Common/GPM/UpgraderFamilyTest.php66 public function testOneEightToTwoZeroIsBlocked(): void
LOWtests/unit/Grav/Common/GPM/UpgraderFamilyTest.php75 public function testOneSevenToTwoZeroIsBlocked(): void
LOWtests/unit/Grav/Common/GPM/UpgraderFamilyTest.php83 public function testOneSevenToOneEightIsBlocked(): void
LOWtests/unit/Grav/Common/GPM/UpgraderFamilyTest.php95 public function testOneSevenSameFamilyUpgrade(): void
LOWtests/unit/Grav/Common/GPM/UpgraderFamilyTest.php102 public function testOneEightPrereleaseUpgrade(): void
LOWtests/unit/Grav/Common/GPM/UpgraderFamilyTest.php109 public function testTwoZeroSameFamilyUpgrade(): void
LOWtests/unit/Grav/Common/GPM/UpgraderFamilyTest.php120 public function testSameVersionNotUpgradable(): void
LOWtests/unit/Grav/Common/GPM/UpgraderFamilyTest.php131 public function testNextMajorNotFiredForMinorIncrement(): void
LOWtests/unit/Grav/Common/GPM/UpgraderFamilyTest.php137 public function testNextMajorFiredCorrectly(): void
LOWtests/unit/Grav/Common/GPM/UpgraderFamilyTest.php144 public function testNextMajorNotFiredWhenOnTwoZero(): void
LOWtests/unit/Grav/Common/GPM/UpgraderFamilyTest.php153 public function testNextMajorNotFiredWithoutHint(): void
LOWtests/unit/Grav/Common/Data/BlueprintTest.php24 public function testValidateStrictRequired(): void
LOWtests/unit/Grav/Common/Data/BlueprintTest.php45 public function testValidateStrictExtraException(): void
LOWsystem/src/Grav/Framework/Compat/Serializable.php43 protected function getUnserializeAllowedClasses()
LOW…m/src/Grav/Framework/RequestHandler/RequestHandler.php25class RequestHandler implements RequestHandlerInterface
LOW…rc/Grav/Framework/File/Formatter/AbstractFormatter.php65 public function getSupportedFileExtensions(): array
LOW…v/Framework/File/Interfaces/FileFormatterInterface.php53 public function getSupportedFileExtensions(): array;
LOWsystem/src/Grav/Framework/Flex/FlexDirectoryForm.php418 protected function getUnserializeAllowedClasses()
LOWsystem/src/Grav/Framework/Flex/FlexForm.php504 protected function getUnserializeAllowedClasses()
LOW…stem/src/Grav/Framework/Flex/Storage/FolderStorage.php634 protected function buildPrefixedIndexFromFilesystem($path)
LOW…v/Framework/Flex/Storage/AbstractFilesystemStorage.php110 public function extractKeysFromStorageKey(string $key): array
LOWsystem/src/Grav/Common/Uri.php128 public function initializeWithUrlAndRootPath($url, $root_path)
LOWsystem/src/Grav/Common/Utils.php445 public static function arrayMergeRecursiveUnique($array1, $array2)
LOWsystem/src/Grav/Common/Utils.php469 public static function arrayDiffMultidimensional($array1, $array2)
LOWsystem/src/Grav/Common/Utils.php1265 public static function arrayUnflattenDotNotation($array, $separator = '.')
LOWsystem/src/Grav/Common/Scheduler/Scheduler.php672 private function addSchedulerVerboseOutput($string)
26 more matches not shown…
Fake / Example Data90 hits · 90 pts
SeverityFileLineSnippet
LOWtests/fake/nested-site/user/pages/01.item1/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOWtests/fake/nested-site/user/pages/01.item1/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOW…/nested-site/user/pages/01.item1/01.item1-1/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOW…/nested-site/user/pages/01.item1/01.item1-1/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOW…user/pages/01.item1/01.item1-1/02.item1-1-2/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOW…user/pages/01.item1/01.item1-1/02.item1-1-2/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOW…user/pages/01.item1/01.item1-1/01.item1-1-1/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOW…user/pages/01.item1/01.item1-1/01.item1-1-1/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOW…user/pages/01.item1/01.item1-1/03.item1-1-3/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOW…user/pages/01.item1/01.item1-1/03.item1-1-3/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOW…/nested-site/user/pages/01.item1/03.item1-3/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOW…/nested-site/user/pages/01.item1/03.item1-3/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOW…user/pages/01.item1/03.item1-3/02.item1-3-2/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOW…user/pages/01.item1/03.item1-3/02.item1-3-2/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOW…user/pages/01.item1/03.item1-3/01.item1-3-1/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOW…user/pages/01.item1/03.item1-3/01.item1-3-1/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOW…user/pages/01.item1/03.item1-3/03.item1-3-3/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOW…user/pages/01.item1/03.item1-3/03.item1-3-3/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOW…/nested-site/user/pages/01.item1/02.item1-2/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOW…/nested-site/user/pages/01.item1/02.item1-2/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOW…user/pages/01.item1/02.item1-2/01.item1-2-1/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOW…user/pages/01.item1/02.item1-2/01.item1-2-1/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOW…user/pages/01.item1/02.item1-2/03.item1-2-3/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOW…user/pages/01.item1/02.item1-2/03.item1-2-3/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOW…user/pages/01.item1/02.item1-2/02.item1-2-2/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOW…user/pages/01.item1/02.item1-2/02.item1-2-2/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOWtests/fake/nested-site/user/pages/02.item2/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOWtests/fake/nested-site/user/pages/02.item2/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOW…/nested-site/user/pages/02.item2/01.item2-1/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOW…/nested-site/user/pages/02.item2/01.item2-1/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOW…user/pages/02.item2/01.item2-1/02.item2-1-2/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOW…user/pages/02.item2/01.item2-1/02.item2-1-2/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOW…user/pages/02.item2/01.item2-1/03.item2-1-3/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOW…user/pages/02.item2/01.item2-1/03.item2-1-3/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOW…user/pages/02.item2/01.item2-1/01.item2-1-1/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOW…user/pages/02.item2/01.item2-1/01.item2-1-1/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOW…/nested-site/user/pages/02.item2/03.item2-3/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOW…/nested-site/user/pages/02.item2/03.item2-3/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOW…user/pages/02.item2/03.item2-3/02.item2-3-2/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOW…user/pages/02.item2/03.item2-3/02.item2-3-2/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOW…user/pages/02.item2/03.item2-3/03.item2-3-3/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOW…user/pages/02.item2/03.item2-3/03.item2-3-3/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOW…user/pages/02.item2/03.item2-3/01.item2-3-1/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOW…user/pages/02.item2/03.item2-3/01.item2-3-1/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOW…/nested-site/user/pages/02.item2/02.item2-2/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOW…/nested-site/user/pages/02.item2/02.item2-2/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOW…user/pages/02.item2/02.item2-2/03.item2-2-3/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOW…user/pages/02.item2/02.item2-2/03.item2-2-3/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOW…user/pages/02.item2/02.item2-2/01.item2-2-1/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOW…user/pages/02.item2/02.item2-2/01.item2-2-1/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOW…user/pages/02.item2/02.item2-2/02.item2-2-2/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOW…user/pages/02.item2/02.item2-2/02.item2-2-2/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOWtests/fake/nested-site/user/pages/03.item3/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOWtests/fake/nested-site/user/pages/03.item3/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOW…/nested-site/user/pages/03.item3/03.item3-3/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOW…/nested-site/user/pages/03.item3/03.item3-3/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOW…user/pages/03.item3/03.item3-3/02.item3-3-2/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOW…user/pages/03.item3/03.item3-3/02.item3-3-2/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOW…user/pages/03.item3/03.item3-3/03.item3-3-3/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
LOW…user/pages/03.item3/03.item3-3/03.item3-3-3/default.md5Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
30 more matches not shown…
Hallucination Indicators3 hits · 30 pts
SeverityFileLineSnippet
CRITICALsystem/assets/jquery/jquery-2.x.min.js3}catch(e){}O.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return O.hasData(a)||N.hasData(a)},data:fun
CRITICALsystem/assets/jquery/jquery-3.x.min.js2!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):f
CRITICALsystem/assets/jquery/jquery-2.1.4.min.js4void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(
Over-Commented Block8 hits · 8 pts
SeverityFileLineSnippet
LOWtests/functional.suite.yml1# Codeception Test Suite Configuration
LOWsystem/blueprints/config/system.yaml1881 accounts.avatar:
LOWsystem/blueprints/config/system.yaml1901# type: section
LOWsystem/config/site.yaml21# '/old/(.*)': '/new/$1' # Would redirect /old/my-page to /new/my-page
LOWwebserver-configs/htaccess.txt1<IfModule mod_rewrite.c>
LOWwebserver-configs/htaccess.txt21# RewriteCond %{HTTP:X-Forwarded-Proto} https
LOWwebserver-configs/htaccess.txt41# Return 403 Forbidden header and show the content of the root homepage
LOW.github/workflows/tests.yaml61# fields: repo,message,author,action
Verbosity Indicators1 hit · 2 pts
SeverityFileLineSnippet
LOWsystem/src/Grav/Common/Utils.php100 // If URL has a scheme, we need to check if it's one of Grav streams.