Classes

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

0% 20% 40% 60% 80% 100% 0 5 10 15 20 Line Coverage (%) Cyclomatic Complexity App\Expense\Domain\Expense — Coverage: 100.0% | Lines: 29 | Complexity: 14 App\Expense\Domain\CategorySetting — Coverage: 100.0% | Lines: 26 | Complexity: 14 App\Expense\Application\Query\ExpenseView — Coverage: 100.0% | Lines: 23 | Complexity: 3 App\Expense\Infrastructure\Controllers\RecordExpenseController — Coverage: 100.0% | Lines: 21 | Complexity: 6 App\Expense\Infrastructure\Controllers\UpdateExpenseController — Coverage: 95.2% | Lines: 21 | Complexity: 7 App\Expense\Application\Command\RecordExpenseHandler — Coverage: 100.0% | Lines: 19 | Complexity: 2 App\Expense\Domain\Category — Coverage: 100.0% | Lines: 18 | Complexity: 18 App\Expense\Application\Command\UpdateExpenseHandler — Coverage: 100.0% | Lines: 16 | Complexity: 2 App\Expense\Infrastructure\Controllers\Admin\UpdateCategoryController — Coverage: 100.0% | Lines: 14 | Complexity: 4 App\Expense\Infrastructure\Persistence\Doctrine\Type\CategoryType — Coverage: 100.0% | Lines: 12 | Complexity: 6 App\Expense\Application\OwnedExpenseFinder — Coverage: 100.0% | Lines: 11 | Complexity: 7 App\Expense\Application\Query\ExpenseViewFactory — Coverage: 100.0% | Lines: 10 | Complexity: 4 App\Expense\Infrastructure\Controllers\DeleteExpenseController — Coverage: 80.0% | Lines: 10 | Complexity: 6 App\Expense\Infrastructure\Controllers\GetExpenseController — Coverage: 100.0% | Lines: 10 | Complexity: 5 App\Expense\Infrastructure\Controllers\ListExpensesController — Coverage: 100.0% | Lines: 10 | Complexity: 4 App\Expense\Application\Query\ListCategoriesHandler — Coverage: 100.0% | Lines: 8 | Complexity: 5 App\Expense\Infrastructure\Persistence\Doctrine\DoctrineCategorySettingRepository — Coverage: 100.0% | Lines: 8 | Complexity: 5 App\Expense\Infrastructure\Persistence\Doctrine\DoctrineExpenseRepository — Coverage: 100.0% | Lines: 8 | Complexity: 5 App\Expense\Application\Command\DeleteExpenseHandler — Coverage: 100.0% | Lines: 7 | Complexity: 2 App\Expense\Application\Command\UpdateCategoryHandler — Coverage: 100.0% | Lines: 7 | Complexity: 2 App\Expense\Application\Query\CategoryView — Coverage: 100.0% | Lines: 7 | Complexity: 1 App\Expense\Application\Query\GetExpenseHandler — Coverage: 100.0% | Lines: 7 | Complexity: 3 App\Expense\Application\Query\ListExpensesHandler — Coverage: 100.0% | Lines: 7 | Complexity: 2 App\Expense\Infrastructure\Http\ValidatesExpenseId — Coverage: 100.0% | Lines: 3 | Complexity: 2 App\Expense\Infrastructure\Controllers\Admin\ListAdminCategoriesController — Coverage: 100.0% | Lines: 2 | Complexity: 2 App\Expense\Infrastructure\Controllers\ListCategoriesController — Coverage: 100.0% | Lines: 2 | Complexity: 2 App\Expense\Application\Command\DeleteExpenseCommand — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Application\Command\RecordExpenseCommand — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Application\Command\UpdateCategoryCommand — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Application\Command\UpdateExpenseCommand — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Application\Query\GetExpenseQuery — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Application\Query\ListCategoriesQuery — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Application\Query\ListExpensesQuery — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Domain\Exceptions\CategoryNotFound — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Domain\Exceptions\ExpenseNotFound — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Infrastructure\Persistence\Doctrine\Type\ExpenseIdType — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Infrastructure\Persistence\Doctrine\Type\ExpenseTripIdType — Coverage: 100.0% | Lines: 1 | Complexity: 1

 

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

Class CRAP Coverage
App\Expense\Domain\Category18100.0%
App\Expense\Domain\CategorySetting14100.0%
App\Expense\Domain\Expense14100.0%
App\Expense\Application\OwnedExpenseFinder7100.0%
App\Expense\Infrastructure\Controllers\UpdateExpenseController795.2%
App\Expense\Infrastructure\Controllers\DeleteExpenseController6.2980.0%
App\Expense\Infrastructure\Controllers\RecordExpenseController6100.0%
App\Expense\Infrastructure\Persistence\Doctrine\Type\CategoryType6100.0%
App\Expense\Application\Query\ListCategoriesHandler5100.0%
App\Expense\Infrastructure\Controllers\GetExpenseController5100.0%
App\Expense\Infrastructure\Persistence\Doctrine\DoctrineCategorySettingRepository5100.0%
App\Expense\Infrastructure\Persistence\Doctrine\DoctrineExpenseRepository5100.0%
App\Expense\Application\Query\ExpenseViewFactory4100.0%
App\Expense\Infrastructure\Controllers\Admin\UpdateCategoryController4100.0%
App\Expense\Infrastructure\Controllers\ListExpensesController4100.0%
App\Expense\Application\Query\ExpenseView3100.0%
App\Expense\Application\Query\GetExpenseHandler3100.0%
App\Expense\Application\Command\DeleteExpenseHandler2100.0%
App\Expense\Application\Command\RecordExpenseHandler2100.0%
App\Expense\Application\Command\UpdateCategoryHandler2100.0%
App\Expense\Application\Command\UpdateExpenseHandler2100.0%
App\Expense\Application\Query\ListExpensesHandler2100.0%
App\Expense\Infrastructure\Controllers\Admin\ListAdminCategoriesController2100.0%
App\Expense\Infrastructure\Controllers\ListCategoriesController2100.0%
App\Expense\Infrastructure\Http\ValidatesExpenseId2100.0%
App\Expense\Application\Command\DeleteExpenseCommand1100.0%
App\Expense\Application\Command\RecordExpenseCommand1100.0%
App\Expense\Application\Command\UpdateCategoryCommand1100.0%
App\Expense\Application\Command\UpdateExpenseCommand1100.0%
App\Expense\Application\Query\CategoryView1100.0%
App\Expense\Application\Query\GetExpenseQuery1100.0%
App\Expense\Application\Query\ListCategoriesQuery1100.0%
App\Expense\Application\Query\ListExpensesQuery1100.0%
App\Expense\Domain\Exceptions\CategoryNotFound1100.0%
App\Expense\Domain\Exceptions\ExpenseNotFound1100.0%
App\Expense\Infrastructure\Persistence\Doctrine\Type\ExpenseIdType1100.0%
App\Expense\Infrastructure\Persistence\Doctrine\Type\ExpenseTripIdType1100.0%
App\Expense\Domain\ValueObject\ExpenseId0100.0%
App\Expense\Domain\ValueObject\TripId0100.0%

Methods

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

0% 20% 40% 60% 80% 100% 0 2 4 6 8 Line Coverage (%) Cyclomatic Complexity App\Expense\Infrastructure\Controllers\RecordExpenseController::record — Coverage: 100.0% | Lines: 20 | Complexity: 5 App\Expense\Infrastructure\Controllers\UpdateExpenseController::update — Coverage: 95.0% | Lines: 20 | Complexity: 6 App\Expense\Application\Command\RecordExpenseHandler::handle — Coverage: 100.0% | Lines: 18 | Complexity: 1 App\Expense\Application\Command\UpdateExpenseHandler::handle — Coverage: 100.0% | Lines: 15 | Complexity: 1 App\Expense\Infrastructure\Controllers\Admin\UpdateCategoryController::update — Coverage: 100.0% | Lines: 13 | Complexity: 3 App\Expense\Application\Query\ExpenseView::fromExpense — Coverage: 100.0% | Lines: 11 | Complexity: 1 App\Expense\Application\Query\ExpenseView::toArray — Coverage: 100.0% | Lines: 11 | Complexity: 1 App\Expense\Domain\Expense::record — Coverage: 100.0% | Lines: 11 | Complexity: 1 App\Expense\Application\Query\ExpenseViewFactory::create — Coverage: 100.0% | Lines: 9 | Complexity: 3 App\Expense\Infrastructure\Controllers\DeleteExpenseController::delete — Coverage: 77.8% | Lines: 9 | Complexity: 5 App\Expense\Infrastructure\Controllers\GetExpenseController::get — Coverage: 100.0% | Lines: 9 | Complexity: 4 App\Expense\Infrastructure\Controllers\ListExpensesController::list — Coverage: 100.0% | Lines: 9 | Complexity: 3 App\Expense\Application\Query\CategoryView::of — Coverage: 100.0% | Lines: 7 | Complexity: 1 App\Expense\Application\Query\ListCategoriesHandler::handle — Coverage: 100.0% | Lines: 7 | Complexity: 4 App\Expense\Domain\CategorySetting::change — Coverage: 100.0% | Lines: 7 | Complexity: 1 App\Expense\Application\Command\DeleteExpenseHandler::handle — Coverage: 100.0% | Lines: 6 | Complexity: 1 App\Expense\Application\Command\UpdateCategoryHandler::handle — Coverage: 100.0% | Lines: 6 | Complexity: 1 App\Expense\Application\Query\GetExpenseHandler::handle — Coverage: 100.0% | Lines: 6 | Complexity: 2 App\Expense\Application\Query\ListExpensesHandler::handle — Coverage: 100.0% | Lines: 6 | Complexity: 1 App\Expense\Domain\Category::label — Coverage: 100.0% | Lines: 6 | Complexity: 6 App\Expense\Domain\Category::icon — Coverage: 100.0% | Lines: 6 | Complexity: 6 App\Expense\Domain\Category::color — Coverage: 100.0% | Lines: 6 | Complexity: 6 App\Expense\Domain\CategorySetting::normalizeLabel — Coverage: 100.0% | Lines: 6 | Complexity: 3 App\Expense\Domain\CategorySetting::normalize — Coverage: 100.0% | Lines: 6 | Complexity: 3 App\Expense\Infrastructure\Persistence\Doctrine\Type\CategoryType::convertToDatabaseValue — Coverage: 100.0% | Lines: 6 | Complexity: 3 App\Expense\Domain\Expense::update — Coverage: 100.0% | Lines: 5 | Complexity: 1 App\Expense\Application\OwnedExpenseFinder::expenseOnTrip — Coverage: 100.0% | Lines: 4 | Complexity: 3 App\Expense\Domain\Expense::assertAmount — Coverage: 100.0% | Lines: 4 | Complexity: 3 App\Expense\Infrastructure\Persistence\Doctrine\DoctrineCategorySettingRepository::all — Coverage: 100.0% | Lines: 4 | Complexity: 2 App\Expense\Infrastructure\Persistence\Doctrine\Type\CategoryType::convertToPHPValue — Coverage: 100.0% | Lines: 4 | Complexity: 2 App\Expense\Application\OwnedExpenseFinder::findReadable — Coverage: 100.0% | Lines: 3 | Complexity: 2 App\Expense\Application\OwnedExpenseFinder::getForWrite — Coverage: 100.0% | Lines: 3 | Complexity: 1 App\Expense\Infrastructure\Http\ValidatesExpenseId::parseExpenseId — Coverage: 100.0% | Lines: 3 | Complexity: 2 App\Expense\Infrastructure\Persistence\Doctrine\DoctrineCategorySettingRepository::save — Coverage: 100.0% | Lines: 2 | Complexity: 1 App\Expense\Infrastructure\Persistence\Doctrine\DoctrineExpenseRepository::save — Coverage: 100.0% | Lines: 2 | Complexity: 1 App\Expense\Infrastructure\Persistence\Doctrine\DoctrineExpenseRepository::remove — Coverage: 100.0% | Lines: 2 | Complexity: 1 App\Expense\Infrastructure\Persistence\Doctrine\DoctrineExpenseRepository::ofTrip — Coverage: 100.0% | Lines: 2 | Complexity: 1 App\Expense\Infrastructure\Persistence\Doctrine\Type\CategoryType::getSQLDeclaration — Coverage: 100.0% | Lines: 2 | Complexity: 1 App\Expense\Application\Command\DeleteExpenseCommand::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Application\Command\DeleteExpenseHandler::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Application\Command\RecordExpenseCommand::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Application\Command\RecordExpenseHandler::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Application\Command\UpdateCategoryCommand::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Application\Command\UpdateCategoryHandler::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Application\Command\UpdateExpenseCommand::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Application\Command\UpdateExpenseHandler::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Application\OwnedExpenseFinder::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Application\Query\ExpenseView::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Application\Query\ExpenseViewFactory::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Application\Query\GetExpenseHandler::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Application\Query\GetExpenseQuery::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Application\Query\ListCategoriesHandler::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Application\Query\ListCategoriesQuery::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Application\Query\ListExpensesHandler::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Application\Query\ListExpensesQuery::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Domain\CategorySetting::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Domain\CategorySetting::for — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Domain\CategorySetting::category — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Domain\CategorySetting::label — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Domain\CategorySetting::icon — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Domain\CategorySetting::color — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Domain\CategorySetting::isActive — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Domain\Exceptions\CategoryNotFound::withValue — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Domain\Exceptions\ExpenseNotFound::withId — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Domain\Expense::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Domain\Expense::belongsToTrip — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Domain\Expense::id — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Domain\Expense::tripId — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Domain\Expense::money — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Domain\Expense::category — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Domain\Expense::description — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Domain\Expense::spentAt — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Domain\Expense::createdAt — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Infrastructure\Controllers\Admin\ListAdminCategoriesController::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Infrastructure\Controllers\Admin\ListAdminCategoriesController::list — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Infrastructure\Controllers\Admin\UpdateCategoryController::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Infrastructure\Controllers\DeleteExpenseController::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Infrastructure\Controllers\GetExpenseController::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Infrastructure\Controllers\ListCategoriesController::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Infrastructure\Controllers\ListCategoriesController::list — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Infrastructure\Controllers\ListExpensesController::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Infrastructure\Controllers\RecordExpenseController::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Infrastructure\Controllers\UpdateExpenseController::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Infrastructure\Persistence\Doctrine\DoctrineCategorySettingRepository::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Infrastructure\Persistence\Doctrine\DoctrineCategorySettingRepository::ofCategory — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Infrastructure\Persistence\Doctrine\DoctrineExpenseRepository::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Infrastructure\Persistence\Doctrine\DoctrineExpenseRepository::ofId — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Infrastructure\Persistence\Doctrine\Type\ExpenseIdType::className — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Expense\Infrastructure\Persistence\Doctrine\Type\ExpenseTripIdType::className — Coverage: 100.0% | Lines: 1 | Complexity: 1

 

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

Method CRAP Coverage
App\Expense\Domain\Category::label6100.0%
App\Expense\Domain\Category::icon6100.0%
App\Expense\Domain\Category::color6100.0%
App\Expense\Infrastructure\Controllers\UpdateExpenseController::update695.0%
App\Expense\Infrastructure\Controllers\DeleteExpenseController::delete5.2777.8%
App\Expense\Infrastructure\Controllers\RecordExpenseController::record5100.0%
App\Expense\Application\Query\ListCategoriesHandler::handle4100.0%
App\Expense\Infrastructure\Controllers\GetExpenseController::get4100.0%
App\Expense\Application\OwnedExpenseFinder::expenseOnTrip3100.0%
App\Expense\Application\Query\ExpenseViewFactory::create3100.0%
App\Expense\Domain\CategorySetting::normalizeLabel3100.0%
App\Expense\Domain\CategorySetting::normalize3100.0%
App\Expense\Domain\Expense::assertAmount3100.0%
App\Expense\Infrastructure\Controllers\Admin\UpdateCategoryController::update3100.0%
App\Expense\Infrastructure\Controllers\ListExpensesController::list3100.0%
App\Expense\Infrastructure\Persistence\Doctrine\Type\CategoryType::convertToDatabaseValue3100.0%
App\Expense\Application\OwnedExpenseFinder::findReadable2100.0%
App\Expense\Application\Query\GetExpenseHandler::handle2100.0%
App\Expense\Infrastructure\Persistence\Doctrine\DoctrineCategorySettingRepository::all2100.0%
App\Expense\Infrastructure\Persistence\Doctrine\Type\CategoryType::convertToPHPValue2100.0%
App\Expense\Infrastructure\Http\ValidatesExpenseId::parseExpenseId2100.0%
App\Expense\Application\Command\DeleteExpenseCommand::__construct1100.0%
App\Expense\Application\Command\DeleteExpenseHandler::__construct1100.0%
App\Expense\Application\Command\DeleteExpenseHandler::handle1100.0%
App\Expense\Application\Command\RecordExpenseCommand::__construct1100.0%
App\Expense\Application\Command\RecordExpenseHandler::__construct1100.0%
App\Expense\Application\Command\RecordExpenseHandler::handle1100.0%
App\Expense\Application\Command\UpdateCategoryCommand::__construct1100.0%
App\Expense\Application\Command\UpdateCategoryHandler::__construct1100.0%
App\Expense\Application\Command\UpdateCategoryHandler::handle1100.0%
App\Expense\Application\Command\UpdateExpenseCommand::__construct1100.0%
App\Expense\Application\Command\UpdateExpenseHandler::__construct1100.0%
App\Expense\Application\Command\UpdateExpenseHandler::handle1100.0%
App\Expense\Application\OwnedExpenseFinder::__construct1100.0%
App\Expense\Application\OwnedExpenseFinder::getForWrite1100.0%
App\Expense\Application\Query\CategoryView::of1100.0%
App\Expense\Application\Query\ExpenseView::__construct1100.0%
App\Expense\Application\Query\ExpenseView::fromExpense1100.0%
App\Expense\Application\Query\ExpenseView::toArray1100.0%
App\Expense\Application\Query\ExpenseViewFactory::__construct1100.0%
App\Expense\Application\Query\GetExpenseHandler::__construct1100.0%
App\Expense\Application\Query\GetExpenseQuery::__construct1100.0%
App\Expense\Application\Query\ListCategoriesHandler::__construct1100.0%
App\Expense\Application\Query\ListCategoriesQuery::__construct1100.0%
App\Expense\Application\Query\ListExpensesHandler::__construct1100.0%
App\Expense\Application\Query\ListExpensesHandler::handle1100.0%
App\Expense\Application\Query\ListExpensesQuery::__construct1100.0%
App\Expense\Domain\CategorySetting::__construct1100.0%
App\Expense\Domain\CategorySetting::for1100.0%
App\Expense\Domain\CategorySetting::change1100.0%
App\Expense\Domain\CategorySetting::category1100.0%
App\Expense\Domain\CategorySetting::label1100.0%
App\Expense\Domain\CategorySetting::icon1100.0%
App\Expense\Domain\CategorySetting::color1100.0%
App\Expense\Domain\CategorySetting::isActive1100.0%
App\Expense\Domain\Exceptions\CategoryNotFound::withValue1100.0%
App\Expense\Domain\Exceptions\ExpenseNotFound::withId1100.0%
App\Expense\Domain\Expense::__construct1100.0%
App\Expense\Domain\Expense::record1100.0%
App\Expense\Domain\Expense::update1100.0%
App\Expense\Domain\Expense::belongsToTrip1100.0%
App\Expense\Domain\Expense::id1100.0%
App\Expense\Domain\Expense::tripId1100.0%
App\Expense\Domain\Expense::money1100.0%
App\Expense\Domain\Expense::category1100.0%
App\Expense\Domain\Expense::description1100.0%
App\Expense\Domain\Expense::spentAt1100.0%
App\Expense\Domain\Expense::createdAt1100.0%
App\Expense\Infrastructure\Controllers\Admin\ListAdminCategoriesController::__construct1100.0%
App\Expense\Infrastructure\Controllers\Admin\ListAdminCategoriesController::list1100.0%
App\Expense\Infrastructure\Controllers\Admin\UpdateCategoryController::__construct1100.0%
App\Expense\Infrastructure\Controllers\DeleteExpenseController::__construct1100.0%
App\Expense\Infrastructure\Controllers\GetExpenseController::__construct1100.0%
App\Expense\Infrastructure\Controllers\ListCategoriesController::__construct1100.0%
App\Expense\Infrastructure\Controllers\ListCategoriesController::list1100.0%
App\Expense\Infrastructure\Controllers\ListExpensesController::__construct1100.0%
App\Expense\Infrastructure\Controllers\RecordExpenseController::__construct1100.0%
App\Expense\Infrastructure\Controllers\UpdateExpenseController::__construct1100.0%
App\Expense\Infrastructure\Persistence\Doctrine\DoctrineCategorySettingRepository::__construct1100.0%
App\Expense\Infrastructure\Persistence\Doctrine\DoctrineCategorySettingRepository::save1100.0%
App\Expense\Infrastructure\Persistence\Doctrine\DoctrineCategorySettingRepository::ofCategory1100.0%
App\Expense\Infrastructure\Persistence\Doctrine\DoctrineExpenseRepository::__construct1100.0%
App\Expense\Infrastructure\Persistence\Doctrine\DoctrineExpenseRepository::save1100.0%
App\Expense\Infrastructure\Persistence\Doctrine\DoctrineExpenseRepository::remove1100.0%
App\Expense\Infrastructure\Persistence\Doctrine\DoctrineExpenseRepository::ofId1100.0%
App\Expense\Infrastructure\Persistence\Doctrine\DoctrineExpenseRepository::ofTrip1100.0%
App\Expense\Infrastructure\Persistence\Doctrine\Type\CategoryType::getSQLDeclaration1100.0%
App\Expense\Infrastructure\Persistence\Doctrine\Type\ExpenseIdType::className1100.0%
App\Expense\Infrastructure\Persistence\Doctrine\Type\ExpenseTripIdType::className1100.0%