No known key found for this signature in database
GPG Key ID: B49A324B7EAD6D80
11 changed files with 2585 additions and 8 deletions
-
250.ci/firefly-iii-standard.yml
-
1.ci/php-cs-fixer/.gitignore
-
44.ci/php-cs-fixer/.php-cs-fixer.php
-
5.ci/php-cs-fixer/composer.json
-
2096.ci/php-cs-fixer/composer.lock
-
37.ci/phpcs.sh
-
59.ci/phpstan.neon
-
8.ci/phpstan.sh
-
33.ci/phpunit.sh
-
3composer.json
-
57composer.lock
@ -0,0 +1,250 @@ |
|||
parameters: |
|||
indentation: spaces |
|||
|
|||
file_extensions: |
|||
- php |
|||
|
|||
exclude_files: |
|||
- fixtures/* |
|||
- fixtures*/* |
|||
- temp/* |
|||
- tmp/* |
|||
|
|||
services: |
|||
# Checkers bellow aim on 1:1 copy of https://nette.org/en/coding-standard |
|||
|
|||
# General rules - https://nette.org/en/coding-standard#toc-general-rules |
|||
|
|||
# use tabs over spaces |
|||
# PHP_CodeSniffer\Standards\Generic\Sniffs\WhiteSpace\DisallowSpaceIndentSniff: ~ |
|||
# PHP code must use only UTF-8 without BOM |
|||
PhpCsFixer\Fixer\Basic\EncodingFixer: ~ |
|||
# <?php opening tag |
|||
PhpCsFixer\Fixer\PhpTag\FullOpeningTagFixer: ~ |
|||
# Ensure there is no code on the same line as the PHP open tag. |
|||
PhpCsFixer\Fixer\PhpTag\LinebreakAfterOpeningTagFixer: ~ |
|||
# The closing ?> tag must be omitted from files containing only PHP. |
|||
PhpCsFixer\Fixer\PhpTag\NoClosingTagFixer: ~ |
|||
# There must not be trailing whitespace at the end of lines. |
|||
PhpCsFixer\Fixer\Whitespace\NoTrailingWhitespaceFixer: ~ |
|||
# ...and at the end of blank lines. |
|||
PhpCsFixer\Fixer\Whitespace\NoWhitespaceInBlankLineFixer: ~ |
|||
# All files must end with a single blank line. |
|||
PhpCsFixer\Fixer\Whitespace\SingleBlankLineAtEofFixer: ~ |
|||
# File name should match class name if possible. |
|||
PhpCsFixer\Fixer\Basic\Psr4Fixer: ~ |
|||
# Enforces using shorthand scalar typehint variants in phpDocs: `int` instead of `integer` and `bool` instead of `boolean` |
|||
SlevomatCodingStandard\Sniffs\TypeHints\LongTypeHintsSniff: ~ |
|||
|
|||
# File Header - https://nette.org/en/coding-standard#toc-file-header |
|||
|
|||
# empty line before namespace |
|||
PhpCsFixer\Fixer\NamespaceNotation\SingleBlankLineBeforeNamespaceFixer: ~ |
|||
# 1 Use statement per line |
|||
PhpCsFixer\Fixer\Import\SingleImportPerStatementFixer: ~ |
|||
# Use statements are alphabetically ordered |
|||
PhpCsFixer\Fixer\Import\OrderedImportsFixer: ~ |
|||
# disallow group use declarations use FooLibrary\Bar\Baz\{ ClassA, ClassB, ClassC, ClassD as Fizbo } |
|||
SlevomatCodingStandard\Sniffs\Namespaces\DisallowGroupUseSniff: ~ |
|||
# Disallows leading backslash in use statement: use \Foo\Bar; |
|||
SlevomatCodingStandard\Sniffs\Namespaces\UseDoesNotStartWithBackslashSniff: ~ |
|||
# Looks for unused imports from other namespaces. |
|||
Nette\CodingStandard\Sniffs\Namespaces\UnusedUsesSniff: |
|||
searchAnnotations: yes |
|||
ignoredAnnotationNames: ['@testCase'] |
|||
ignoredAnnotations: ['@internal'] |
|||
|
|||
# Language Construct (should be placed before some other fixers) |
|||
|
|||
# Functions should be used with `$strict` param set to `true` |
|||
PhpCsFixer\Fixer\Strict\StrictParamFixer: ~ |
|||
# replaces is_null(parameter) expression with `null === parameter`. |
|||
PhpCsFixer\Fixer\LanguageConstruct\IsNullFixer: |
|||
use_yoda_style: true |
|||
# Calling `unset` on multiple items should be done in one call. |
|||
PhpCsFixer\Fixer\LanguageConstruct\CombineConsecutiveUnsetsFixer: ~ |
|||
# Replace all `<>` with `!=`. |
|||
PhpCsFixer\Fixer\Operator\StandardizeNotEqualsFixer: ~ |
|||
# Include/Require and file path should be divided with a single space. File path should not be placed under brackets. |
|||
PhpCsFixer\Fixer\ControlStructure\IncludeFixer: ~ |
|||
# Requires short ternary operator ?: when possible |
|||
SlevomatCodingStandard\Sniffs\ControlStructures\RequireShortTernaryOperatorSniff: ~ |
|||
|
|||
# Arrays - https://nette.org/en/coding-standard#toc-arrays |
|||
|
|||
# use short array fixes |
|||
PhpCsFixer\Fixer\ArrayNotation\ArraySyntaxFixer: |
|||
syntax: short |
|||
# use trailing command in last array element |
|||
PhpCsFixer\Fixer\ArrayNotation\TrailingCommaInMultilineArrayFixer: ~ |
|||
# PHP single-line arrays should not have trailing comma. |
|||
# PhpCsFixer\Fixer\ArrayNotation\NoTrailingCommaInSinglelineArrayFixer: ~ |
|||
# In array declaration, there MUST NOT be a whitespace before each comma. |
|||
PhpCsFixer\Fixer\ArrayNotation\NoWhitespaceBeforeCommaInArrayFixer: ~ |
|||
# Arrays should be formatted like function/method arguments, without leading or trailing single line space. |
|||
PhpCsFixer\Fixer\ArrayNotation\TrimArraySpacesFixer: ~ |
|||
# In array declaration, there MUST be a whitespace after each comma. |
|||
PhpCsFixer\Fixer\ArrayNotation\WhitespaceAfterCommaInArrayFixer: ~ |
|||
|
|||
# Strings |
|||
|
|||
# Convert `heredoc` to `nowdoc` where possible. |
|||
PhpCsFixer\Fixer\StringNotation\HeredocToNowdocFixer: ~ |
|||
# Convert double quotes to single quotes for simple strings. |
|||
PhpCsFixer\Fixer\StringNotation\SingleQuoteFixer: ~ |
|||
|
|||
# Keywords and True/False/Null - https://nette.org/en/coding-standard#toc-keywords-and-true-false-null |
|||
|
|||
# PHP keywords must be in lower case |
|||
PhpCsFixer\Fixer\Casing\LowercaseKeywordsFixer: ~ |
|||
# The PHP constants `true`, `false`, and `null` MUST be in lower case |
|||
PhpCsFixer\Fixer\Casing\LowercaseConstantsFixer: ~ |
|||
|
|||
# Method and Functions Calls - https://nette.org/en/coding-standard#toc-method-and-function-calls |
|||
|
|||
# Function defined by PHP should be called using the correct casing |
|||
PhpCsFixer\Fixer\Casing\NativeFunctionCasingFixer: ~ |
|||
# In the argument list, there must be one space after each comma, and there must no be a space before each comma |
|||
PhpCsFixer\Fixer\FunctionNotation\MethodArgumentSpaceFixer: ~ |
|||
# This sniff checks that there are two blank lines between functions declarations and single between signatures. |
|||
#Nette\CodingStandard\Sniffs\WhiteSpace\FunctionSpacingSniff: ~ |
|||
|
|||
# Classes - https://nette.org/en/coding-standard#toc-classes |
|||
|
|||
# Inside a classy element "self" should be preferred to the class name itself. |
|||
PhpCsFixer\Fixer\ClassNotation\SelfAccessorFixer: ~ |
|||
# class element order: constants, properties, from public to private |
|||
PhpCsFixer\Fixer\ClassNotation\OrderedClassElementsFixer: |
|||
order: |
|||
- use_trait |
|||
- constant |
|||
- constant_public |
|||
- constant_protected |
|||
- constant_private |
|||
- property_public |
|||
- property_protected |
|||
- property_private |
|||
|
|||
# Constants - https://nette.org/en/coding-standard#toc-constants |
|||
|
|||
# constant names are CAPITALIZED (manuall fixing only :() |
|||
PHP_CodeSniffer\Standards\Generic\Sniffs\NamingConventions\UpperCaseConstantNameSniff: ~ |
|||
|
|||
# Class Properties - https://nette.org/en/coding-standard#toc-class-properties |
|||
|
|||
# There MUST NOT be more than one property declared per statement. |
|||
PhpCsFixer\Fixer\ClassNotation\SingleClassElementPerStatementFixer: |
|||
elements: ['property'] |
|||
|
|||
# Methods - https://nette.org/en/coding-standard#toc-methods |
|||
|
|||
# They must be declared in camelCase. |
|||
PHP_CodeSniffer\Standards\PSR1\Sniffs\Methods\CamelCapsMethodNameSniff: ~ |
|||
# Checks that there's a single space between a typehint and a parameter name and no whitespace between a nullability symbol and a typehint |
|||
SlevomatCodingStandard\Sniffs\TypeHints\ParameterTypeHintSpacingSniff: ~ |
|||
# Spaces should be properly placed in a function declaration. |
|||
PhpCsFixer\Fixer\FunctionNotation\FunctionDeclarationFixer: ~ |
|||
# In function arguments there must not be arguments with default values before non-default ones. |
|||
PhpCsFixer\Fixer\FunctionNotation\NoUnreachableDefaultArgumentValueFixer: ~ |
|||
|
|||
# Constans, Class Properties, Methods |
|||
|
|||
# Constants and Properties should be separated by 1 blank line |
|||
#PhpCsFixer\Fixer\ClassNotation\ClassAttributesSeparationFixer: |
|||
# elements: [const, property] |
|||
|
|||
# Last property and 1st method should be separated by 2 spaces |
|||
Nette\CodingStandard\Fixer\ClassNotation\LastPropertyAndFirstMethodSeparationFixer: |
|||
space_count: 2 |
|||
|
|||
# Control Statements - https://nette.org/en/coding-standard#toc-control-statements |
|||
|
|||
# The keyword `elseif` should be used instead of `else if` so that all control keywords look like single words. |
|||
PhpCsFixer\Fixer\ControlStructure\ElseifFixer: ~ |
|||
# Remove useless semicolon statements. |
|||
PhpCsFixer\Fixer\Semicolon\NoEmptyStatementFixer: ~ |
|||
# Remove trailing commas in list() calls. |
|||
PhpCsFixer\Fixer\ControlStructure\NoTrailingCommaInListCallFixer: ~ |
|||
# Removes unneeded parentheses around control statements. |
|||
PhpCsFixer\Fixer\ControlStructure\NoUnneededControlParenthesesFixer: ~ |
|||
# A case should be followed by a colon and not a semicolon. |
|||
PhpCsFixer\Fixer\ControlStructure\SwitchCaseSemicolonToColonFixer: ~ |
|||
# The structure body must be indented once. |
|||
# The closing brace must be on the next line after the body. |
|||
# There should not be more than one statement per line. |
|||
#Nette\CodingStandard\Fixer\Basic\BracesFixer: |
|||
# allow_single_line_closure: true |
|||
# changes if (1 === $cond) to if ($cond === 1) |
|||
#SlevomatCodingStandard\Sniffs\ControlStructures\DisallowYodaComparisonSniff: ~ |
|||
# finds unreachable catch blocks: |
|||
SlevomatCodingStandard\Sniffs\Exceptions\DeadCatchSniff: ~ |
|||
|
|||
# Casting |
|||
|
|||
# A single space or none should be between cast and variable (int) $val |
|||
PhpCsFixer\Fixer\CastNotation\CastSpacesFixer: ~ |
|||
# Cast should be written in lower case. |
|||
PhpCsFixer\Fixer\CastNotation\LowercaseCastFixer: ~ |
|||
# Replaces `intval`, `floatval`, `doubleval`, `strval` and `boolval` function calls with according type casting operator |
|||
PhpCsFixer\Fixer\CastNotation\ModernizeTypesCastingFixer: ~ |
|||
# Short cast `bool` using double exclamation mark should not be used |
|||
PhpCsFixer\Fixer\CastNotation\NoShortBoolCastFixer: ~ |
|||
# Cast `(boolean)` and `(integer)` should be written as `(bool)` and `(int)`, `(double)` and `(real)` as `(float)` |
|||
PhpCsFixer\Fixer\CastNotation\ShortScalarCastFixer: ~ |
|||
|
|||
# Language Whitespace |
|||
|
|||
# Binary operators should be surrounded by at least one space. DO NOT USE |
|||
#PhpCsFixer\Fixer\Operator\BinaryOperatorSpacesFixer: ~ |
|||
# Unary operators should be placed adjacent to their operands. |
|||
PhpCsFixer\Fixer\Operator\UnaryOperatorSpacesFixer: ~ |
|||
# No space after the opening parenthesis and before the closing parenthesis |
|||
PhpCsFixer\Fixer\Whitespace\NoSpacesInsideParenthesisFixer: ~ |
|||
# There MUST NOT be spaces around offset braces $a[0] |
|||
PhpCsFixer\Fixer\Whitespace\NoSpacesAroundOffsetFixer: ~ |
|||
# There should not be space before or after object `T_OBJECT_OPERATOR` `->`. |
|||
PhpCsFixer\Fixer\Operator\ObjectOperatorWithoutWhitespaceFixer: ~ |
|||
# Standardize spaces around ternary operator. |
|||
PhpCsFixer\Fixer\Operator\TernaryOperatorSpacesFixer: ~ |
|||
# Concatenation $a . $b should be spaced according configuration |
|||
PhpCsFixer\Fixer\Operator\ConcatSpaceFixer: |
|||
spacing: one |
|||
# Removes extra spaces between colon and case value. |
|||
PhpCsFixer\Fixer\ControlStructure\SwitchCaseSpaceFixer: ~ |
|||
|
|||
# Comments |
|||
|
|||
# Docblocks should have the same indentation as the documented subject. |
|||
PhpCsFixer\Fixer\Phpdoc\PhpdocIndentFixer: ~ |
|||
# There should not be any empty comments. |
|||
PhpCsFixer\Fixer\Comment\NoEmptyCommentFixer: ~ |
|||
# There should not be empty PHPDoc blocks. |
|||
#PhpCsFixer\Fixer\Phpdoc\NoEmptyPhpdocFixer: ~ |
|||
# Phpdocs should start and end with content, excluding the very first and last line of the docblocks. |
|||
PhpCsFixer\Fixer\Phpdoc\PhpdocTrimFixer: ~ |
|||
# Single-line comments comments with only one line of actual content should use the `//` syntax. |
|||
PhpCsFixer\Fixer\Comment\SingleLineCommentStyleFixer: |
|||
comment_types: ['hash'] |
|||
# Require comments with single-line content to be written as one-liners |
|||
SlevomatCodingStandard\Sniffs\Commenting\RequireOneLinePropertyDocCommentSniff: ~ |
|||
|
|||
|
|||
# Properties MUST not be explicitly initialized with `null`. |
|||
#PhpCsFixer\Fixer\ClassNotation\NoNullPropertyInitializationFixer: ~ |
|||
|
|||
PhpCsFixer\Fixer\ControlStructure\NoBreakCommentFixer: |
|||
comment_text: 'break omitted' |
|||
|
|||
# declare(strict_types=1); |
|||
PhpCsFixer\Fixer\Strict\DeclareStrictTypesFixer: ~ |
|||
# Enforces consistent formatting of return typehints: function foo(): ?int |
|||
SlevomatCodingStandard\Sniffs\TypeHints\ReturnTypeHintSpacingSniff: ~ |
|||
# Use `null` coalescing operator `??` where possible. |
|||
PhpCsFixer\Fixer\Operator\TernaryToNullCoalescingFixer: ~ |
|||
|
|||
Nette\CodingStandard\Fixer\ClassNotation\ClassAndTraitVisibilityRequiredFixer: |
|||
elements: ['const', 'property', 'method'] |
|||
|
|||
# short list() syntax [] |
|||
PhpCsFixer\Fixer\ListNotation\ListSyntaxFixer: |
|||
syntax: short |
@ -0,0 +1 @@ |
|||
vendor |
@ -0,0 +1,44 @@ |
|||
<?php |
|||
/* |
|||
* .php-cs-fixer.php |
|||
* Copyright (c) 2022 james@firefly-iii.org |
|||
* |
|||
* This file is part of Firefly III (https://github.com/firefly-iii). |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU Affero General Public License as |
|||
* published by the Free Software Foundation, either version 3 of the |
|||
* License, or (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU Affero General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU Affero General Public License |
|||
* along with this program. If not, see <https://www.gnu.org/licenses/>. |
|||
*/ |
|||
|
|||
$current = __DIR__; |
|||
|
|||
$paths = [ |
|||
$current . '/../../app', |
|||
$current . '/../../config', |
|||
$current . '/../../database', |
|||
$current . '/../../routes', |
|||
$current . '/../../tests', |
|||
$current . '/../../resources/lang', |
|||
]; |
|||
|
|||
$finder = PhpCsFixer\Finder::create() |
|||
->in($paths); |
|||
|
|||
|
|||
$config = new PhpCsFixer\Config(); |
|||
return $config->setRules([ |
|||
'@PSR12' => true, |
|||
'strict_param' => true, |
|||
'array_syntax' => ['syntax' => 'short'], |
|||
]) |
|||
->setFinder($finder) |
|||
; |
@ -0,0 +1,5 @@ |
|||
{ |
|||
"require": { |
|||
"friendsofphp/php-cs-fixer": "^3.12" |
|||
} |
|||
} |
2096
.ci/php-cs-fixer/composer.lock
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1,37 @@ |
|||
#!/usr/bin/env bash |
|||
|
|||
# |
|||
# phpstan.sh |
|||
# Copyright (c) 2021 james@firefly-iii.org |
|||
# |
|||
# This file is part of Firefly III (https://github.com/firefly-iii). |
|||
# |
|||
# This program is free software: you can redistribute it and/or modify |
|||
# it under the terms of the GNU Affero General Public License as |
|||
# published by the Free Software Foundation, either version 3 of the |
|||
# License, or (at your option) any later version. |
|||
# |
|||
# This program is distributed in the hope that it will be useful, |
|||
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
# GNU Affero General Public License for more details. |
|||
# |
|||
# You should have received a copy of the GNU Affero General Public License |
|||
# along with this program. If not, see <https://www.gnu.org/licenses/>. |
|||
# |
|||
|
|||
# Install composer packages |
|||
#composer install --no-scripts --no-ansi |
|||
|
|||
SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" |
|||
|
|||
# enable test .env file. |
|||
# cp .ci/.env.ci .env |
|||
|
|||
# clean up php code |
|||
cd $SCRIPT_DIR/php-cs-fixer |
|||
composer update |
|||
./vendor/bin/php-cs-fixer fix --config $SCRIPT_DIR/php-cs-fixer/.php-cs-fixer.php --allow-risky=yes |
|||
cd $SCRIPT_DIR/.. |
|||
|
|||
exit 0 |
@ -0,0 +1,33 @@ |
|||
#!/usr/bin/env bash |
|||
|
|||
# |
|||
# phpunit.sh |
|||
# Copyright (c) 2021 james@firefly-iii.org |
|||
# |
|||
# This file is part of Firefly III (https://github.com/firefly-iii). |
|||
# |
|||
# This program is free software: you can redistribute it and/or modify |
|||
# it under the terms of the GNU Affero General Public License as |
|||
# published by the Free Software Foundation, either version 3 of the |
|||
# License, or (at your option) any later version. |
|||
# |
|||
# This program is distributed in the hope that it will be useful, |
|||
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
# GNU Affero General Public License for more details. |
|||
# |
|||
# You should have received a copy of the GNU Affero General Public License |
|||
# along with this program. If not, see <https://www.gnu.org/licenses/>. |
|||
# |
|||
|
|||
# enable test .env file. |
|||
cp .ci/.env.ci ../.env |
|||
|
|||
# download test database |
|||
# TODO no longer exists |
|||
wget --quiet https://raw.githubusercontent.com/firefly-iii/test-data/main/test_db.sqlite -o storage/database/test_db.sqlite |
|||
|
|||
# run phpunit |
|||
./vendor/bin/phpunit --configuration phpunit.coverage.xml |
|||
|
|||
exit 0 |
Write
Preview
Loading…
Cancel
Save
Reference in new issue