Classes

Bubble size = executable lines. Hover for details, click to navigate.

0% 20% 40% 60% 80% 100% 0 50 100 150 Line Coverage (%) Cyclomatic Complexity phpMyFAQ\Auth\Oidc\OidcIdTokenValidator — Coverage: 87.2% | Lines: 172 | Complexity: 96 phpMyFAQ\Auth\Oidc\OidcClient — Coverage: 100.0% | Lines: 59 | Complexity: 17 phpMyFAQ\Auth\Oidc\OidcDiscoveryDocument — Coverage: 100.0% | Lines: 26 | Complexity: 9 phpMyFAQ\Auth\Oidc\OidcPkceGenerator — Coverage: 100.0% | Lines: 23 | Complexity: 8 phpMyFAQ\Auth\Oidc\OidcDiscoveryService — Coverage: 100.0% | Lines: 21 | Complexity: 6 phpMyFAQ\Auth\Oidc\OidcSession — Coverage: 100.0% | Lines: 15 | Complexity: 7 phpMyFAQ\Auth\Oidc\OidcClientConfig — Coverage: 100.0% | Lines: 2 | Complexity: 2 phpMyFAQ\Auth\Oidc\OidcProviderConfig — Coverage: 100.0% | Lines: 1 | Complexity: 1

Methods

Bubble size = executable lines. Hover for details, click to navigate.

0% 20% 40% 60% 80% 100% 0 10 20 30 40 Line Coverage (%) Cyclomatic Complexity phpMyFAQ\Auth\Oidc\OidcIdTokenValidator::validateClaims — Coverage: 97.5% | Lines: 40 | Complexity: 31 phpMyFAQ\Auth\Oidc\OidcDiscoveryDocument::fromArray — Coverage: 100.0% | Lines: 25 | Complexity: 8 phpMyFAQ\Auth\Oidc\OidcDiscoveryService::discover — Coverage: 100.0% | Lines: 20 | Complexity: 5 phpMyFAQ\Auth\Oidc\OidcIdTokenValidator::createPemFromJwk — Coverage: 94.4% | Lines: 18 | Complexity: 4 phpMyFAQ\Auth\Oidc\OidcClient::exchangeAuthorizationCode — Coverage: 100.0% | Lines: 16 | Complexity: 4 phpMyFAQ\Auth\Oidc\OidcClient::decodeJsonResponse — Coverage: 100.0% | Lines: 15 | Complexity: 5 phpMyFAQ\Auth\Oidc\OidcIdTokenValidator::validateSignature — Coverage: 85.7% | Lines: 14 | Complexity: 6 phpMyFAQ\Auth\Oidc\OidcIdTokenValidator::findKey — Coverage: 57.1% | Lines: 14 | Complexity: 9 phpMyFAQ\Auth\Oidc\OidcIdTokenValidator::validate — Coverage: 100.0% | Lines: 13 | Complexity: 2 phpMyFAQ\Auth\Oidc\OidcIdTokenValidator::fetchJwks — Coverage: 69.2% | Lines: 13 | Complexity: 5 phpMyFAQ\Auth\Oidc\OidcPkceGenerator::generateChallenge — Coverage: 100.0% | Lines: 12 | Complexity: 4 phpMyFAQ\Auth\Oidc\OidcClient::buildAuthorizationUrl — Coverage: 100.0% | Lines: 11 | Complexity: 1 phpMyFAQ\Auth\Oidc\OidcPkceGenerator::generateVerifier — Coverage: 100.0% | Lines: 11 | Complexity: 4 phpMyFAQ\Auth\Oidc\OidcClient::buildLogoutUrl — Coverage: 100.0% | Lines: 10 | Complexity: 5 phpMyFAQ\Auth\Oidc\OidcIdTokenValidator::decodeSegment — Coverage: 90.0% | Lines: 10 | Complexity: 4 phpMyFAQ\Auth\Oidc\OidcIdTokenValidator::isValidAudience — Coverage: 75.0% | Lines: 8 | Complexity: 7 phpMyFAQ\Auth\Oidc\OidcIdTokenValidator::audienceMatches — Coverage: 75.0% | Lines: 8 | Complexity: 6 phpMyFAQ\Auth\Oidc\OidcIdTokenValidator::asn1Length — Coverage: 100.0% | Lines: 7 | Complexity: 3 phpMyFAQ\Auth\Oidc\OidcClient::fetchUserInfo — Coverage: 100.0% | Lines: 6 | Complexity: 1 phpMyFAQ\Auth\Oidc\OidcIdTokenValidator::base64UrlDecode — Coverage: 83.3% | Lines: 6 | Complexity: 2 phpMyFAQ\Auth\Oidc\OidcIdTokenValidator::asn1Integer — Coverage: 80.0% | Lines: 5 | Complexity: 3 phpMyFAQ\Auth\Oidc\OidcSession::getAuthorizationState — Coverage: 100.0% | Lines: 5 | Complexity: 1 phpMyFAQ\Auth\Oidc\OidcIdTokenValidator::splitToken — Coverage: 100.0% | Lines: 4 | Complexity: 5 phpMyFAQ\Auth\Oidc\OidcIdTokenValidator::normalizeKey — Coverage: 100.0% | Lines: 4 | Complexity: 2 phpMyFAQ\Auth\Oidc\OidcIdTokenValidator::getCurrentTimestamp — Coverage: 66.7% | Lines: 3 | Complexity: 2 phpMyFAQ\Auth\Oidc\OidcSession::setAuthorizationState — Coverage: 100.0% | Lines: 3 | Complexity: 1 phpMyFAQ\Auth\Oidc\OidcSession::clearAuthorizationState — Coverage: 100.0% | Lines: 3 | Complexity: 1 phpMyFAQ\Auth\Oidc\OidcClient::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 phpMyFAQ\Auth\Oidc\OidcClientConfig::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 phpMyFAQ\Auth\Oidc\OidcClientConfig::getScopesAsString — Coverage: 100.0% | Lines: 1 | Complexity: 1 phpMyFAQ\Auth\Oidc\OidcDiscoveryDocument::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 phpMyFAQ\Auth\Oidc\OidcDiscoveryService::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 phpMyFAQ\Auth\Oidc\OidcIdTokenValidator::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 phpMyFAQ\Auth\Oidc\OidcIdTokenValidator::asn1Sequence — Coverage: 100.0% | Lines: 1 | Complexity: 1 phpMyFAQ\Auth\Oidc\OidcIdTokenValidator::asn1ObjectIdentifier — Coverage: 100.0% | Lines: 1 | Complexity: 1 phpMyFAQ\Auth\Oidc\OidcIdTokenValidator::asn1Null — Coverage: 100.0% | Lines: 1 | Complexity: 1 phpMyFAQ\Auth\Oidc\OidcIdTokenValidator::asn1BitString — Coverage: 100.0% | Lines: 1 | Complexity: 1 phpMyFAQ\Auth\Oidc\OidcProviderConfig::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 phpMyFAQ\Auth\Oidc\OidcSession::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 phpMyFAQ\Auth\Oidc\OidcSession::setIdToken — Coverage: 100.0% | Lines: 1 | Complexity: 1 phpMyFAQ\Auth\Oidc\OidcSession::getIdToken — Coverage: 100.0% | Lines: 1 | Complexity: 1 phpMyFAQ\Auth\Oidc\OidcSession::clearIdToken — Coverage: 100.0% | Lines: 1 | Complexity: 1

 

Sorted by descending CRAP (Change Risk Anti-Patterns) index.

Method CRAP Coverage
phpMyFAQ\Auth\Oidc\OidcIdTokenValidator::validateClaims3197.5%
phpMyFAQ\Auth\Oidc\OidcIdTokenValidator::findKey15.3857.1%
phpMyFAQ\Auth\Oidc\OidcDiscoveryDocument::fromArray8100.0%
phpMyFAQ\Auth\Oidc\OidcIdTokenValidator::isValidAudience7.7775.0%
phpMyFAQ\Auth\Oidc\OidcIdTokenValidator::audienceMatches6.5675.0%
phpMyFAQ\Auth\Oidc\OidcIdTokenValidator::validateSignature6.1085.7%
phpMyFAQ\Auth\Oidc\OidcIdTokenValidator::fetchJwks5.7369.2%
phpMyFAQ\Auth\Oidc\OidcClient::buildLogoutUrl5100.0%
phpMyFAQ\Auth\Oidc\OidcClient::decodeJsonResponse5100.0%
phpMyFAQ\Auth\Oidc\OidcDiscoveryService::discover5100.0%
phpMyFAQ\Auth\Oidc\OidcIdTokenValidator::splitToken5100.0%
phpMyFAQ\Auth\Oidc\OidcIdTokenValidator::decodeSegment4.0290.0%
phpMyFAQ\Auth\Oidc\OidcClient::exchangeAuthorizationCode4100.0%
phpMyFAQ\Auth\Oidc\OidcIdTokenValidator::createPemFromJwk4.0094.4%
phpMyFAQ\Auth\Oidc\OidcPkceGenerator::generateVerifier4100.0%
phpMyFAQ\Auth\Oidc\OidcPkceGenerator::generateChallenge4100.0%
phpMyFAQ\Auth\Oidc\OidcIdTokenValidator::asn1Integer3.0780.0%
phpMyFAQ\Auth\Oidc\OidcIdTokenValidator::asn1Length3100.0%
phpMyFAQ\Auth\Oidc\OidcIdTokenValidator::getCurrentTimestamp2.1566.7%
phpMyFAQ\Auth\Oidc\OidcIdTokenValidator::base64UrlDecode2.0283.3%
phpMyFAQ\Auth\Oidc\OidcIdTokenValidator::validate2100.0%
phpMyFAQ\Auth\Oidc\OidcIdTokenValidator::normalizeKey2100.0%
phpMyFAQ\Auth\Oidc\OidcClient::__construct1100.0%
phpMyFAQ\Auth\Oidc\OidcClient::buildAuthorizationUrl1100.0%
phpMyFAQ\Auth\Oidc\OidcClient::fetchUserInfo1100.0%
phpMyFAQ\Auth\Oidc\OidcClientConfig::__construct1100.0%
phpMyFAQ\Auth\Oidc\OidcClientConfig::getScopesAsString1100.0%
phpMyFAQ\Auth\Oidc\OidcDiscoveryDocument::__construct1100.0%
phpMyFAQ\Auth\Oidc\OidcDiscoveryService::__construct1100.0%
phpMyFAQ\Auth\Oidc\OidcIdTokenValidator::__construct1100.0%
phpMyFAQ\Auth\Oidc\OidcIdTokenValidator::asn1Sequence1100.0%
phpMyFAQ\Auth\Oidc\OidcIdTokenValidator::asn1ObjectIdentifier1100.0%
phpMyFAQ\Auth\Oidc\OidcIdTokenValidator::asn1Null1100.0%
phpMyFAQ\Auth\Oidc\OidcIdTokenValidator::asn1BitString1100.0%
phpMyFAQ\Auth\Oidc\OidcProviderConfig::__construct1100.0%
phpMyFAQ\Auth\Oidc\OidcSession::__construct1100.0%
phpMyFAQ\Auth\Oidc\OidcSession::setAuthorizationState1100.0%
phpMyFAQ\Auth\Oidc\OidcSession::getAuthorizationState1100.0%
phpMyFAQ\Auth\Oidc\OidcSession::clearAuthorizationState1100.0%
phpMyFAQ\Auth\Oidc\OidcSession::setIdToken1100.0%
phpMyFAQ\Auth\Oidc\OidcSession::getIdToken1100.0%
phpMyFAQ\Auth\Oidc\OidcSession::clearIdToken1100.0%