Classes

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

0% 20% 40% 60% 80% 100% 0 10 20 30 Line Coverage (%) Cyclomatic Complexity App\Trip\Domain\Trip — Coverage: 100.0% | Lines: 46 | Complexity: 23 App\Trip\Domain\TripInvitation — Coverage: 100.0% | Lines: 14 | Complexity: 13 App\Trip\Domain\TripMember — Coverage: 77.8% | Lines: 9 | Complexity: 8 App\Trip\Domain\ValueObject\TripRole — Coverage: 100.0% | Lines: 3 | Complexity: 5 App\Trip\Domain\Exceptions\TripAccessDenied — Coverage: 100.0% | Lines: 2 | Complexity: 2 App\Trip\Domain\Exceptions\AlreadyMemberOrInvited — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Trip\Domain\Exceptions\InvitationNotFound — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Trip\Domain\Exceptions\InviteeNotFound — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Trip\Domain\Exceptions\MemberNotFound — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Trip\Domain\Exceptions\TripNotFound — 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 1 2 3 4 Line Coverage (%) Cyclomatic Complexity App\Trip\Domain\Trip::create — Coverage: 100.0% | Lines: 13 | Complexity: 1 App\Trip\Domain\Trip::update — Coverage: 100.0% | Lines: 7 | Complexity: 1 App\Trip\Domain\Trip::sanitizeText — Coverage: 100.0% | Lines: 7 | Complexity: 3 App\Trip\Domain\Trip::assertBudget — Coverage: 100.0% | Lines: 4 | Complexity: 3 App\Trip\Domain\TripInvitation::__construct — Coverage: 100.0% | Lines: 3 | Complexity: 2 App\Trip\Domain\TripMember::changeRole — Coverage: 66.7% | Lines: 3 | Complexity: 2 App\Trip\Domain\TripMember::__construct — Coverage: 50.0% | Lines: 2 | Complexity: 2 App\Trip\Domain\Exceptions\AlreadyMemberOrInvited::create — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Trip\Domain\Exceptions\InvitationNotFound::withId — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Trip\Domain\Exceptions\InviteeNotFound::withEmail — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Trip\Domain\Exceptions\MemberNotFound::withId — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Trip\Domain\Exceptions\TripAccessDenied::cannotWriteExpense — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Trip\Domain\Exceptions\TripAccessDenied::cannotManageTrip — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Trip\Domain\Exceptions\TripNotFound::withId — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Trip\Domain\Trip::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Trip\Domain\Trip::transferOwnershipTo — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Trip\Domain\Trip::id — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Trip\Domain\Trip::ownerId — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Trip\Domain\Trip::isOwnedBy — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Trip\Domain\Trip::name — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Trip\Domain\Trip::destination — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Trip\Domain\Trip::dateRange — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Trip\Domain\Trip::currency — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Trip\Domain\Trip::budget — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Trip\Domain\Trip::createdAt — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Trip\Domain\Trip::imageName — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Trip\Domain\Trip::changeImage — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Trip\Domain\Trip::archive — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Trip\Domain\Trip::isArchived — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Trip\Domain\TripInvitation::invite — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Trip\Domain\TripInvitation::accept — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Trip\Domain\TripInvitation::decline — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Trip\Domain\TripInvitation::id — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Trip\Domain\TripInvitation::tripId — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Trip\Domain\TripInvitation::inviteeId — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Trip\Domain\TripInvitation::inviterId — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Trip\Domain\TripInvitation::role — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Trip\Domain\TripInvitation::status — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Trip\Domain\TripInvitation::isPending — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Trip\Domain\TripInvitation::createdAt — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Trip\Domain\TripMember::tripId — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Trip\Domain\TripMember::userId — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Trip\Domain\TripMember::role — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Trip\Domain\TripMember::createdAt — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Trip\Domain\ValueObject\TripRole::canWriteExpense — Coverage: 100.0% | Lines: 1 | Complexity: 2 App\Trip\Domain\ValueObject\TripRole::canManageTrip — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Trip\Domain\ValueObject\TripRole::isStorableMembership — Coverage: 100.0% | Lines: 1 | Complexity: 2

 

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

Method CRAP Coverage
App\Trip\Domain\Trip::sanitizeText3100.0%
App\Trip\Domain\Trip::assertBudget3100.0%
App\Trip\Domain\TripMember::__construct2.5050.0%
App\Trip\Domain\TripMember::changeRole2.1566.7%
App\Trip\Domain\TripInvitation::__construct2100.0%
App\Trip\Domain\ValueObject\TripRole::canWriteExpense2100.0%
App\Trip\Domain\ValueObject\TripRole::isStorableMembership2100.0%
App\Trip\Domain\Exceptions\AlreadyMemberOrInvited::create1100.0%
App\Trip\Domain\Exceptions\InvitationNotFound::withId1100.0%
App\Trip\Domain\Exceptions\InviteeNotFound::withEmail1100.0%
App\Trip\Domain\Exceptions\MemberNotFound::withId1100.0%
App\Trip\Domain\Exceptions\TripAccessDenied::cannotWriteExpense1100.0%
App\Trip\Domain\Exceptions\TripAccessDenied::cannotManageTrip1100.0%
App\Trip\Domain\Exceptions\TripNotFound::withId1100.0%
App\Trip\Domain\Trip::__construct1100.0%
App\Trip\Domain\Trip::create1100.0%
App\Trip\Domain\Trip::update1100.0%
App\Trip\Domain\Trip::transferOwnershipTo1100.0%
App\Trip\Domain\Trip::id1100.0%
App\Trip\Domain\Trip::ownerId1100.0%
App\Trip\Domain\Trip::isOwnedBy1100.0%
App\Trip\Domain\Trip::name1100.0%
App\Trip\Domain\Trip::destination1100.0%
App\Trip\Domain\Trip::dateRange1100.0%
App\Trip\Domain\Trip::currency1100.0%
App\Trip\Domain\Trip::budget1100.0%
App\Trip\Domain\Trip::createdAt1100.0%
App\Trip\Domain\Trip::imageName1100.0%
App\Trip\Domain\Trip::changeImage1100.0%
App\Trip\Domain\Trip::archive1100.0%
App\Trip\Domain\Trip::isArchived1100.0%
App\Trip\Domain\TripInvitation::invite1100.0%
App\Trip\Domain\TripInvitation::accept1100.0%
App\Trip\Domain\TripInvitation::decline1100.0%
App\Trip\Domain\TripInvitation::id1100.0%
App\Trip\Domain\TripInvitation::tripId1100.0%
App\Trip\Domain\TripInvitation::inviteeId1100.0%
App\Trip\Domain\TripInvitation::inviterId1100.0%
App\Trip\Domain\TripInvitation::role1100.0%
App\Trip\Domain\TripInvitation::status1100.0%
App\Trip\Domain\TripInvitation::isPending1100.0%
App\Trip\Domain\TripInvitation::createdAt1100.0%
App\Trip\Domain\TripMember::tripId1100.0%
App\Trip\Domain\TripMember::userId1100.0%
App\Trip\Domain\TripMember::role1100.0%
App\Trip\Domain\TripMember::createdAt1100.0%
App\Trip\Domain\ValueObject\TripRole::canManageTrip1100.0%