Classes

Line coverage against cyclomatic complexity. Bubble size is the number of executable lines; hover for details, click to navigate.

0% 20% 40% 60% 80% 100% 0 5 10 15 Line Coverage (%) Cyclomatic Complexity App\Security\GoogleIdentityAuthenticator — Coverage: 97.0% | Lines: 33 | Complexity: 11 App\Security\GoogleApiTokenAuthenticator — Coverage: 89.7% | Lines: 29 | Complexity: 9 App\Security\LoginFormAuthenticator — Coverage: 100.0% | Lines: 23 | Complexity: 7 App\Security\ApiTokenStore — Coverage: 100.0% | Lines: 21 | Complexity: 13 App\Security\GoogleUserResolver — Coverage: 100.0% | Lines: 20 | Complexity: 10 App\Security\FakeGoogleIdTokenVerifier — Coverage: 90.0% | Lines: 10 | Complexity: 7 App\Security\GoogleIdTokenVerifier — Coverage: 0.0% | Lines: 7 | Complexity: 4 App\Security\DevGoogleIdTokenVerifier — Coverage: 100.0% | Lines: 4 | Complexity: 4 App\Security\Voter\AgentStatVoter — Coverage: 100.0% | Lines: 4 | Complexity: 4 App\Security\Voter\DoneBannerVoter — Coverage: 100.0% | Lines: 4 | Complexity: 4 App\Security\Voter\TimelineEventVoter — Coverage: 100.0% | Lines: 4 | Complexity: 4 App\Security\ApiToken — Coverage: 100.0% | Lines: 1 | Complexity: 1

Sorted by descending CRAP index.

Methods

Line coverage against cyclomatic complexity. Bubble size is the number of executable lines; hover for details, click to navigate.

0% 20% 40% 60% 80% 100% 0 2 4 6 8 Line Coverage (%) Cyclomatic Complexity App\Security\GoogleIdentityAuthenticator::authenticate — Coverage: 94.4% | Lines: 18 | Complexity: 6 App\Security\LoginFormAuthenticator::authenticate — Coverage: 100.0% | Lines: 15 | Complexity: 3 App\Security\GoogleApiTokenAuthenticator::authenticate — Coverage: 85.7% | Lines: 14 | Complexity: 3 App\Security\GoogleUserResolver::resolve — Coverage: 100.0% | Lines: 12 | Complexity: 3 App\Security\GoogleApiTokenAuthenticator::unauthorized — Coverage: 100.0% | Lines: 10 | Complexity: 1 App\Security\ApiTokenStore::fromSession — Coverage: 100.0% | Lines: 9 | Complexity: 6 App\Security\FakeGoogleIdTokenVerifier::verify — Coverage: 88.9% | Lines: 9 | Complexity: 4 App\Security\ApiTokenStore::get — Coverage: 100.0% | Lines: 7 | Complexity: 4 App\Security\GoogleIdentityAuthenticator::onAuthenticationFailure — Coverage: 100.0% | Lines: 7 | Complexity: 1 App\Security\GoogleUserResolver::identity — Coverage: 100.0% | Lines: 7 | Complexity: 6 App\Security\GoogleIdTokenVerifier::verify — Coverage: 0.0% | Lines: 6 | Complexity: 3 App\Security\GoogleIdentityAuthenticator::onAuthenticationSuccess — Coverage: 100.0% | Lines: 6 | Complexity: 2 App\Security\LoginFormAuthenticator::onAuthenticationSuccess — Coverage: 100.0% | Lines: 6 | Complexity: 2 App\Security\ApiTokenStore::store — Coverage: 100.0% | Lines: 4 | Complexity: 2 App\Security\DevGoogleIdTokenVerifier::verify — Coverage: 100.0% | Lines: 3 | Complexity: 3 App\Security\Voter\AgentStatVoter::voteOnAttribute — Coverage: 100.0% | Lines: 3 | Complexity: 2 App\Security\Voter\DoneBannerVoter::voteOnAttribute — Coverage: 100.0% | Lines: 3 | Complexity: 2 App\Security\Voter\TimelineEventVoter::voteOnAttribute — Coverage: 100.0% | Lines: 3 | Complexity: 2 App\Security\ApiToken::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Security\ApiTokenStore::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Security\DevGoogleIdTokenVerifier::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Security\FakeGoogleIdTokenVerifier::token — Coverage: 100.0% | Lines: 1 | Complexity: 3 App\Security\GoogleApiTokenAuthenticator::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Security\GoogleApiTokenAuthenticator::supports — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Security\GoogleApiTokenAuthenticator::onAuthenticationSuccess — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Security\GoogleApiTokenAuthenticator::onAuthenticationFailure — Coverage: 0.0% | Lines: 1 | Complexity: 1 App\Security\GoogleApiTokenAuthenticator::start — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Security\GoogleIdTokenVerifier::__construct — Coverage: 0.0% | Lines: 1 | Complexity: 1 App\Security\GoogleIdentityAuthenticator::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Security\GoogleIdentityAuthenticator::supports — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Security\GoogleUserResolver::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Security\LoginFormAuthenticator::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Security\LoginFormAuthenticator::getLoginUrl — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Security\Voter\AgentStatVoter::supports — Coverage: 100.0% | Lines: 1 | Complexity: 2 App\Security\Voter\DoneBannerVoter::supports — Coverage: 100.0% | Lines: 1 | Complexity: 2 App\Security\Voter\TimelineEventVoter::supports — Coverage: 100.0% | Lines: 1 | Complexity: 2

Sorted by descending CRAP index.

Method CRAP Coverage
App\Security\GoogleIdTokenVerifier::verify120.0%
App\Security\GoogleIdentityAuthenticator::authenticate6.0194.4%
App\Security\ApiTokenStore::fromSession6100.0%
App\Security\GoogleUserResolver::identity6100.0%
App\Security\FakeGoogleIdTokenVerifier::verify4.0288.9%
App\Security\ApiTokenStore::get4100.0%
App\Security\GoogleApiTokenAuthenticator::authenticate3.0385.7%
App\Security\DevGoogleIdTokenVerifier::verify3100.0%
App\Security\FakeGoogleIdTokenVerifier::token3100.0%
App\Security\GoogleUserResolver::resolve3100.0%
App\Security\LoginFormAuthenticator::authenticate3100.0%
App\Security\ApiTokenStore::store2100.0%
App\Security\GoogleApiTokenAuthenticator::onAuthenticationFailure20.0%
App\Security\GoogleIdTokenVerifier::__construct20.0%
App\Security\GoogleIdentityAuthenticator::onAuthenticationSuccess2100.0%
App\Security\LoginFormAuthenticator::onAuthenticationSuccess2100.0%
App\Security\Voter\AgentStatVoter::supports2100.0%
App\Security\Voter\AgentStatVoter::voteOnAttribute2100.0%
App\Security\Voter\DoneBannerVoter::supports2100.0%
App\Security\Voter\DoneBannerVoter::voteOnAttribute2100.0%
App\Security\Voter\TimelineEventVoter::supports2100.0%
App\Security\Voter\TimelineEventVoter::voteOnAttribute2100.0%
App\Security\ApiToken::__construct1100.0%
App\Security\ApiTokenStore::__construct1100.0%
App\Security\DevGoogleIdTokenVerifier::__construct1100.0%
App\Security\GoogleApiTokenAuthenticator::__construct1100.0%
App\Security\GoogleApiTokenAuthenticator::supports1100.0%
App\Security\GoogleApiTokenAuthenticator::onAuthenticationSuccess1100.0%
App\Security\GoogleApiTokenAuthenticator::start1100.0%
App\Security\GoogleApiTokenAuthenticator::unauthorized1100.0%
App\Security\GoogleIdentityAuthenticator::__construct1100.0%
App\Security\GoogleIdentityAuthenticator::supports1100.0%
App\Security\GoogleIdentityAuthenticator::onAuthenticationFailure1100.0%
App\Security\GoogleUserResolver::__construct1100.0%
App\Security\LoginFormAuthenticator::__construct1100.0%
App\Security\LoginFormAuthenticator::getLoginUrl1100.0%