From 5a359604344925a7ff1b324b947bace86eb7705f Mon Sep 17 00:00:00 2001 From: James Cole Date: Sat, 4 Nov 2023 14:09:51 +0100 Subject: [PATCH] Expand action and clean up code. --- .ci/php-cs-fixer/.php-cs-fixer.php | 12 +++-- .ci/php-cs-fixer/composer.lock | 12 ++--- .ci/phpcs.sh | 23 +++++++- .ci/phpmd/phpmd.xml | 2 + .github/workflows/sonarcloud.yml | 3 ++ .../Controllers/Chart/AccountController.php | 10 ++-- .../Model/BudgetLimit/ListController.php | 52 +++++++++---------- .../Commands/System/ForceDecimalSize.php | 4 +- .../Commands/Upgrade/MigrateToRules.php | 2 +- .../Upgrade/UpgradeLiabilitiesEight.php | 4 +- app/Exceptions/IntervalException.php | 6 +-- app/Helpers/Attachments/AttachmentHelper.php | 3 +- .../Transaction/MassController.php | 2 +- app/Repositories/Tag/TagRepository.php | 2 +- app/Rules/IsBoolean.php | 1 - app/Rules/IsDateOrTime.php | 16 +++--- app/Rules/IsTransferAccount.php | 1 - app/Rules/ValidJournals.php | 1 - .../Update/RecurrenceUpdateService.php | 6 ++- app/Support/Navigation.php | 30 +++++------ app/Support/Steam.php | 18 +++---- .../V2/TransactionGroupTransformer.php | 1 - app/Validation/FireflyValidator.php | 1 - 23 files changed, 119 insertions(+), 93 deletions(-) diff --git a/.ci/php-cs-fixer/.php-cs-fixer.php b/.ci/php-cs-fixer/.php-cs-fixer.php index 1e5a1c2dff..a6af9177fd 100644 --- a/.ci/php-cs-fixer/.php-cs-fixer.php +++ b/.ci/php-cs-fixer/.php-cs-fixer.php @@ -27,7 +27,7 @@ $paths = [ $current . '/../../database', $current . '/../../routes', $current . '/../../tests', - $current . '/../../resources/lang', + $current . '/../../resources/lang/en_US', ]; $finder = PhpCsFixer\Finder::create() @@ -36,9 +36,11 @@ $finder = PhpCsFixer\Finder::create() $config = new PhpCsFixer\Config(); return $config->setRules([ - '@PSR12' => true, - 'declare_strict_types' => true, - 'strict_param' => true, - 'array_syntax' => ['syntax' => 'short'], + '@PhpCsFixer:risky' => true, + // '@PSR12:risky' => true, + 'declare_strict_types' => true, + 'strict_param' => true, + 'array_syntax' => ['syntax' => 'short'], + 'native_function_invocation' => false, ]) ->setFinder($finder); diff --git a/.ci/php-cs-fixer/composer.lock b/.ci/php-cs-fixer/composer.lock index e68e86b2d3..0e28dfb1d6 100644 --- a/.ci/php-cs-fixer/composer.lock +++ b/.ci/php-cs-fixer/composer.lock @@ -226,16 +226,16 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.37.0", + "version": "v3.37.1", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "d5ccc3807fd496ac2b448e8e5e57aa0772f0d18b" + "reference": "c3fe76976081ab871aa654e872da588077e19679" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/d5ccc3807fd496ac2b448e8e5e57aa0772f0d18b", - "reference": "d5ccc3807fd496ac2b448e8e5e57aa0772f0d18b", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/c3fe76976081ab871aa654e872da588077e19679", + "reference": "c3fe76976081ab871aa654e872da588077e19679", "shasum": "" }, "require": { @@ -307,7 +307,7 @@ ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.37.0" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.37.1" }, "funding": [ { @@ -315,7 +315,7 @@ "type": "github" } ], - "time": "2023-10-28T14:49:50+00:00" + "time": "2023-10-29T20:51:23+00:00" }, { "name": "psr/container", diff --git a/.ci/phpcs.sh b/.ci/phpcs.sh index 49c6420f04..fac892de3e 100755 --- a/.ci/phpcs.sh +++ b/.ci/phpcs.sh @@ -28,11 +28,30 @@ SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) # enable test .env file. # cp .ci/.env.ci .env +OUTPUT_FORMAT=txt +EXTRA_PARAMS="" + +if [[ $GITHUB_ACTIONS = "true" ]] +then + OUTPUT_FORMAT=github + EXTRA_PARAMS="--diff --dry-run" +fi + # clean up php code cd $SCRIPT_DIR/php-cs-fixer composer update --quiet rm -f .php-cs-fixer.cache -PHP_CS_FIXER_IGNORE_ENV=true ./vendor/bin/php-cs-fixer fix --config $SCRIPT_DIR/php-cs-fixer/.php-cs-fixer.php --allow-risky=yes +PHP_CS_FIXER_IGNORE_ENV=true +./vendor/bin/php-cs-fixer fix \ + --config $SCRIPT_DIR/php-cs-fixer/.php-cs-fixer.php \ + --format=$OUTPUT_FORMAT \ + --allow-risky=yes \ + $EXTRA_PARAMS + +EXIT_CODE=$? + +echo "Exit code for CS fixer is $EXIT_CODE." + cd $SCRIPT_DIR/.. -exit 0 +exit $EXIT_CODE diff --git a/.ci/phpmd/phpmd.xml b/.ci/phpmd/phpmd.xml index 47c3f85687..9255fde854 100644 --- a/.ci/phpmd/phpmd.xml +++ b/.ci/phpmd/phpmd.xml @@ -66,6 +66,8 @@ phpmd database,app,tests html /gdrive-all/development/phpmd/phpmd.xml > public/r + + diff --git a/.github/workflows/sonarcloud.yml b/.github/workflows/sonarcloud.yml index 1b01749d34..f219315ac5 100644 --- a/.github/workflows/sonarcloud.yml +++ b/.github/workflows/sonarcloud.yml @@ -54,6 +54,9 @@ jobs: - name: PHPMD run: .ci/phpmd.sh + - name: PHP CS Fixer + run: .ci/phpcs.sh + - name: "Create database file" run: touch storage/database/database.sqlite diff --git a/app/Api/V2/Controllers/Chart/AccountController.php b/app/Api/V2/Controllers/Chart/AccountController.php index b45fa09e9f..15442e4d84 100644 --- a/app/Api/V2/Controllers/Chart/AccountController.php +++ b/app/Api/V2/Controllers/Chart/AccountController.php @@ -96,15 +96,17 @@ class AccountController extends Controller // user's preferences $defaultSet = $this->repository->getAccountsByType([AccountType::ASSET, AccountType::DEFAULT])->pluck('id')->toArray(); $frontPage = app('preferences')->get('frontPageAccounts', $defaultSet); - /** @var TransactionCurrency $default */ - $default = app('amount')->getDefaultCurrency(); - $accounts = $this->repository->getAccountsById($frontPage->data); - $chartData = []; if (!(is_array($frontPage->data) && count($frontPage->data) > 0)) { $frontPage->data = $defaultSet; $frontPage->save(); } + + /** @var TransactionCurrency $default */ + $default = app('amount')->getDefaultCurrency(); + $accounts = $this->repository->getAccountsById($frontPage->data); + $chartData = []; + /** @var Account $account */ foreach ($accounts as $account) { $currency = $this->repository->getAccountCurrency($account); diff --git a/app/Api/V2/Controllers/Model/BudgetLimit/ListController.php b/app/Api/V2/Controllers/Model/BudgetLimit/ListController.php index c921ed72b9..4cfbb19069 100644 --- a/app/Api/V2/Controllers/Model/BudgetLimit/ListController.php +++ b/app/Api/V2/Controllers/Model/BudgetLimit/ListController.php @@ -38,19 +38,19 @@ use Illuminate\Pagination\LengthAwarePaginator; */ class ListController extends Controller { -// private BudgetLimitRepositoryInterface $repository; -// -// public function __construct() -// { -// parent::__construct(); -// $this->middleware( -// function ($request, $next) { -// $this->repository = app(BudgetLimitRepositoryInterface::class); -// -// return $next($request); -// } -// ); -// } + // private BudgetLimitRepositoryInterface $repository; + // + // public function __construct() + // { + // parent::__construct(); + // $this->middleware( + // function ($request, $next) { + // $this->repository = app(BudgetLimitRepositoryInterface::class); + // + // return $next($request); + // } + // ); + // } /** * This endpoint is documented at: @@ -59,18 +59,18 @@ class ListController extends Controller public function index(DateRequest $request, Budget $budget): JsonResponse { return response()->json([]); -// throw new FireflyException('Needs refactoring, move to IndexController.'); -// $pageSize = $this->parameters->get('limit'); -// $dates = $request->getAll(); -// $collection = $this->repository->getBudgetLimits($budget, $dates['start'], $dates['end']); -// $total = $collection->count(); -// $collection->slice($pageSize * $this->parameters->get('page'), $pageSize); -// -// $paginator = new LengthAwarePaginator($collection, $total, $pageSize, $this->parameters->get('page')); -// $transformer = new BudgetLimitTransformer(); -// -// return response() -// ->api($this->jsonApiList('budget-limits', $paginator, $transformer)) -// ->header('Content-Type', self::CONTENT_TYPE); + // throw new FireflyException('Needs refactoring, move to IndexController.'); + // $pageSize = $this->parameters->get('limit'); + // $dates = $request->getAll(); + // $collection = $this->repository->getBudgetLimits($budget, $dates['start'], $dates['end']); + // $total = $collection->count(); + // $collection->slice($pageSize * $this->parameters->get('page'), $pageSize); + // + // $paginator = new LengthAwarePaginator($collection, $total, $pageSize, $this->parameters->get('page')); + // $transformer = new BudgetLimitTransformer(); + // + // return response() + // ->api($this->jsonApiList('budget-limits', $paginator, $transformer)) + // ->header('Content-Type', self::CONTENT_TYPE); } } diff --git a/app/Console/Commands/System/ForceDecimalSize.php b/app/Console/Commands/System/ForceDecimalSize.php index 685324f20c..5d963ff900 100644 --- a/app/Console/Commands/System/ForceDecimalSize.php +++ b/app/Console/Commands/System/ForceDecimalSize.php @@ -53,8 +53,8 @@ class ForceDecimalSize extends Command { use ShowsFriendlyMessages; - protected $description = 'This command resizes DECIMAL columns in MySQL or PostgreSQL and correct amounts (only MySQL).'; - protected $signature = 'firefly-iii:force-decimal-size'; + protected $description = 'This command resizes DECIMAL columns in MySQL or PostgreSQL and correct amounts (only MySQL).'; + protected $signature = 'firefly-iii:force-decimal-size'; private string $cast; private array $classes = [ diff --git a/app/Console/Commands/Upgrade/MigrateToRules.php b/app/Console/Commands/Upgrade/MigrateToRules.php index d35610d6d5..43a325544f 100644 --- a/app/Console/Commands/Upgrade/MigrateToRules.php +++ b/app/Console/Commands/Upgrade/MigrateToRules.php @@ -56,7 +56,7 @@ class MigrateToRules extends Command * * @var string */ - protected $signature = 'firefly-iii:bills-to-rules {--F|force : Force the execution of this command.}'; + protected $signature = 'firefly-iii:bills-to-rules {--F|force : Force the execution of this command.}'; private BillRepositoryInterface $billRepository; private int $count; private RuleGroupRepositoryInterface $ruleGroupRepository; diff --git a/app/Console/Commands/Upgrade/UpgradeLiabilitiesEight.php b/app/Console/Commands/Upgrade/UpgradeLiabilitiesEight.php index f1f23df484..8e3699eaab 100644 --- a/app/Console/Commands/Upgrade/UpgradeLiabilitiesEight.php +++ b/app/Console/Commands/Upgrade/UpgradeLiabilitiesEight.php @@ -249,11 +249,11 @@ class UpgradeLiabilitiesEight extends Command // code is kept in place so I can revisit my reasoning. $delete = false; -// if ($delete) { + // if ($delete) { $service = app(TransactionGroupDestroyService::class); $service->destroy($journal->transactionGroup); $count++; -// } + // } } return $count; diff --git a/app/Exceptions/IntervalException.php b/app/Exceptions/IntervalException.php index 6c14be925e..6c841b0462 100644 --- a/app/Exceptions/IntervalException.php +++ b/app/Exceptions/IntervalException.php @@ -34,11 +34,10 @@ use Throwable; */ final class IntervalException extends Exception { - public array $availableIntervals; public Periodicity $periodicity; /** @var string */ - protected $message = 'The periodicity %s is unknown. Choose one of available periodicity: %s'; + protected $message = 'The periodicity %s is unknown. Choose one of available periodicity: %s'; public function __construct(string $message = '', int $code = 0, ?Throwable $previous = null) { @@ -60,8 +59,7 @@ final class IntervalException extends Exception array $intervals, int $code = 0, ?Throwable $previous = null - ): IntervalException - { + ): IntervalException { $message = sprintf( 'The periodicity %s is unknown. Choose one of available periodicity: %s', $periodicity->name, diff --git a/app/Helpers/Attachments/AttachmentHelper.php b/app/Helpers/Attachments/AttachmentHelper.php index c4f11c87e9..9e0761f11b 100644 --- a/app/Helpers/Attachments/AttachmentHelper.php +++ b/app/Helpers/Attachments/AttachmentHelper.php @@ -48,8 +48,7 @@ class AttachmentHelper implements AttachmentHelperInterface protected array $allowedMimes = []; protected int $maxUploadSize = 0; - /** @var Filesystem The disk where attachments are stored. */ - protected $uploadDisk; + protected Filesystem $uploadDisk; /** * AttachmentHelper constructor. diff --git a/app/Http/Controllers/Transaction/MassController.php b/app/Http/Controllers/Transaction/MassController.php index 60d331fe03..a7e3b61b8c 100644 --- a/app/Http/Controllers/Transaction/MassController.php +++ b/app/Http/Controllers/Transaction/MassController.php @@ -252,7 +252,7 @@ class MassController extends Controller try { $carbon = Carbon::parse($value[$journalId]); } catch (InvalidArgumentException $e) { - Log::warning(sprintf('Could not parse "%s" but dont mind',$value[$journalId])); + Log::warning(sprintf('Could not parse "%s" but dont mind', $value[$journalId])); Log::warning($e->getMessage()); return null; diff --git a/app/Repositories/Tag/TagRepository.php b/app/Repositories/Tag/TagRepository.php index c9ad7e71c5..654309c22d 100644 --- a/app/Repositories/Tag/TagRepository.php +++ b/app/Repositories/Tag/TagRepository.php @@ -113,7 +113,7 @@ class TagRepository implements TagRepositoryInterface */ public function setUser(User | Authenticatable | null $user): void { - if ($user instanceof User ) { + if ($user instanceof User) { $this->user = $user; } } diff --git a/app/Rules/IsBoolean.php b/app/Rules/IsBoolean.php index 22c4cda2b7..7b45e3bb04 100644 --- a/app/Rules/IsBoolean.php +++ b/app/Rules/IsBoolean.php @@ -32,7 +32,6 @@ use Illuminate\Contracts\Validation\ValidationRule; */ class IsBoolean implements ValidationRule { - /** * @param string $attribute * @param mixed $value diff --git a/app/Rules/IsDateOrTime.php b/app/Rules/IsDateOrTime.php index 8de0a1ffd7..4c5f637d5e 100644 --- a/app/Rules/IsDateOrTime.php +++ b/app/Rules/IsDateOrTime.php @@ -35,7 +35,6 @@ use Illuminate\Contracts\Validation\ValidationRule; */ class IsDateOrTime implements ValidationRule { - /** * @param string $attribute * @param mixed $value @@ -47,7 +46,8 @@ class IsDateOrTime implements ValidationRule { $value = (string)$value; if ('' === $value) { - $fail('validation.date_or_time')->translate();; + $fail('validation.date_or_time')->translate(); + ; return; } if (10 === strlen($value)) { @@ -57,12 +57,14 @@ class IsDateOrTime implements ValidationRule } catch (InvalidDateException $e) { // @phpstan-ignore-line app('log')->error(sprintf('"%s" is not a valid date: %s', $value, $e->getMessage())); - $fail('validation.date_or_time')->translate();; + $fail('validation.date_or_time')->translate(); + ; return; } catch (InvalidFormatException $e) { // @phpstan-ignore-line app('log')->error(sprintf('"%s" is of an invalid format: %s', $value, $e->getMessage())); - $fail('validation.date_or_time')->translate();; + $fail('validation.date_or_time')->translate(); + ; return; } @@ -74,12 +76,14 @@ class IsDateOrTime implements ValidationRule } catch (InvalidDateException $e) { // @phpstan-ignore-line app('log')->error(sprintf('"%s" is not a valid date or time: %s', $value, $e->getMessage())); - $fail('validation.date_or_time')->translate();; + $fail('validation.date_or_time')->translate(); + ; return; } catch (InvalidFormatException $e) { app('log')->error(sprintf('"%s" is of an invalid format: %s', $value, $e->getMessage())); - $fail('validation.date_or_time')->translate();; + $fail('validation.date_or_time')->translate(); + ; return; } } diff --git a/app/Rules/IsTransferAccount.php b/app/Rules/IsTransferAccount.php index 34688b262f..6c69a0fd03 100644 --- a/app/Rules/IsTransferAccount.php +++ b/app/Rules/IsTransferAccount.php @@ -34,7 +34,6 @@ use Illuminate\Contracts\Validation\ValidationRule; */ class IsTransferAccount implements ValidationRule { - /** * @param string $attribute * @param mixed $value diff --git a/app/Rules/ValidJournals.php b/app/Rules/ValidJournals.php index d1d4a02b23..580d38a7f4 100644 --- a/app/Rules/ValidJournals.php +++ b/app/Rules/ValidJournals.php @@ -35,7 +35,6 @@ use Illuminate\Contracts\Validation\ValidationRule; */ class ValidJournals implements ValidationRule { - /** * @param string $attribute * @param mixed $value diff --git a/app/Services/Internal/Update/RecurrenceUpdateService.php b/app/Services/Internal/Update/RecurrenceUpdateService.php index b66ef92be2..95f5ab6188 100644 --- a/app/Services/Internal/Update/RecurrenceUpdateService.php +++ b/app/Services/Internal/Update/RecurrenceUpdateService.php @@ -293,7 +293,8 @@ class RecurrenceUpdateService if (array_key_exists('currency_id', $submitted) || array_key_exists('currency_code', $submitted)) { $currency = $currencyFactory->find( array_key_exists('currency_id', $submitted) ? (int)$submitted['currency_id'] : null, - array_key_exists('currency_code', $submitted) ? $submitted['currency_code'] : null); + array_key_exists('currency_code', $submitted) ? $submitted['currency_code'] : null + ); } if (null === $currency) { unset($submitted['currency_id'], $submitted['currency_code']); @@ -304,7 +305,8 @@ class RecurrenceUpdateService if (array_key_exists('foreign_currency_id', $submitted) || array_key_exists('foreign_currency_code', $submitted)) { $foreignCurrency = $currencyFactory->find( array_key_exists('foreign_currency_id', $submitted) ? (int)$submitted['foreign_currency_id'] : null, - array_key_exists('foreign_currency_code', $submitted) ? $submitted['foreign_currency_code'] : null); + array_key_exists('foreign_currency_code', $submitted) ? $submitted['foreign_currency_code'] : null + ); } if (null === $foreignCurrency) { unset($submitted['foreign_currency_id'], $currency['foreign_currency_code']); diff --git a/app/Support/Navigation.php b/app/Support/Navigation.php index 2ba2956767..f9a43667c0 100644 --- a/app/Support/Navigation.php +++ b/app/Support/Navigation.php @@ -89,10 +89,10 @@ class Navigation if (!array_key_exists($repeatFreq, $functionMap)) { Log::error(sprintf( - 'The periodicity %s is unknown. Choose one of available periodicity: %s', - $repeatFreq, - join(', ', array_keys($functionMap)) - )); + 'The periodicity %s is unknown. Choose one of available periodicity: %s', + $repeatFreq, + join(', ', array_keys($functionMap)) + )); return $theDate; } @@ -352,12 +352,12 @@ class Navigation public function diffInPeriods(string $period, int $skip, Carbon $beginning, Carbon $end): int { Log::debug(sprintf( - 'diffInPeriods: %s (skip: %d), between %s and %s.', - $period, - $skip, - $beginning->format('Y-m-d'), - $end->format('Y-m-d') - )); + 'diffInPeriods: %s (skip: %d), between %s and %s.', + $period, + $skip, + $beginning->format('Y-m-d'), + $end->format('Y-m-d') + )); $map = [ 'daily' => 'floatDiffInDays', 'weekly' => 'floatDiffInWeeks', @@ -394,11 +394,11 @@ class Navigation $parameter = $skip + 1; $diff = ceil($diff / $parameter) * $parameter; Log::debug(sprintf( - 'diffInPeriods: skip is %d, so param is %d, and diff becomes %d', - $skip, - $parameter, - $diff - )); + 'diffInPeriods: skip is %d, so param is %d, and diff becomes %d', + $skip, + $parameter, + $diff + )); } return (int)$diff; diff --git a/app/Support/Steam.php b/app/Support/Steam.php index 609ee56836..d200dd681a 100644 --- a/app/Support/Steam.php +++ b/app/Support/Steam.php @@ -322,15 +322,15 @@ class Steam $balances[$format] = $currentBalance; app('log')->debug(sprintf( - '%s: transaction in %s(!). Conversion rate is %s. %s %s = %s %s', - $format, - $currency->code, - $rate, - $currency->code, - $transaction['amount'], - $native->code, - $convertedAmount - )); + '%s: transaction in %s(!). Conversion rate is %s. %s %s = %s %s', + $format, + $currency->code, + $rate, + $currency->code, + $transaction['amount'], + $native->code, + $convertedAmount + )); } diff --git a/app/Transformers/V2/TransactionGroupTransformer.php b/app/Transformers/V2/TransactionGroupTransformer.php index ca31cae79f..6868554516 100644 --- a/app/Transformers/V2/TransactionGroupTransformer.php +++ b/app/Transformers/V2/TransactionGroupTransformer.php @@ -43,7 +43,6 @@ use stdClass; */ class TransactionGroupTransformer extends AbstractTransformer { - private ExchangeRateConverter $converter; private array $currencies = []; private TransactionCurrency $default; diff --git a/app/Validation/FireflyValidator.php b/app/Validation/FireflyValidator.php index ca0c9f0087..c980bb6d22 100644 --- a/app/Validation/FireflyValidator.php +++ b/app/Validation/FireflyValidator.php @@ -47,7 +47,6 @@ use PragmaRX\Google2FA\Exceptions\InvalidCharactersException; use PragmaRX\Google2FA\Exceptions\SecretKeyTooShortException; use ValueError; - /** * Class FireflyValidator. */