Skip to content

Commit 8171245

Browse files
walmir-silvaWalmir Silva
andauthored
Develop (#6)
* add data structure contracts and tests * feat: Add and configure PHP quality and testing libraries - Added `friendsofphp/php-cs-fixer` for code style fixing. - Added `nunomaduro/phpinsights` for code quality and insights. - Updated `phpunit/phpunit` to version 10.5 for unit testing. - Added `squizlabs/php_codesniffer` for code style checking. - Added `mockery/mockery` for mocking objects in unit tests. - Added `enlightn/security-checker` for checking security vulnerabilities in dependencies. Configured these libraries to ensure code quality, consistency, and security. ### Changes Introduced 1. **Code Style Fixing**: - Added `friendsofphp/php-cs-fixer` (^3.58) to automatically fix PHP code to follow defined coding standards. 2. **Code Quality Insights**: - Added `nunomaduro/phpinsights` (^2.11) to provide code quality and performance insights. 3. **Unit Testing**: - Updated `phpunit/phpunit` to version ^10.5 to ensure robust and comprehensive testing of the codebase. 4. **Code Style Checking**: - Added `squizlabs/php_codesniffer` (^3.10) to detect violations of defined coding standards. 5. **Mocking in Unit Tests**: - Added `mockery/mockery` (^1.6) to provide an expressive and flexible API for mocking objects in unit tests. 6. **Security Vulnerability Checking**: - Added `enlightn/security-checker` (^2.0) to scan for known security vulnerabilities in project dependencies. ### Usage - **Code Style Fixing**: ```sh vendor/bin/php-cs-fixer fix ``` - **Code Quality Insights**: ```sh vendor/bin/phpinsights ``` - **Unit Testing**: ```sh vendor/bin/phpunit ``` - **Code Style Checking**: ```sh vendor/bin/phpcs ``` - **Mocking in Unit Tests**: - Use Mockery within your PHPUnit tests to create mocks and set expectations. - **Security Vulnerability Checking**: ```sh vendor/bin/security-checker security:check ``` ### Benefits - Ensures consistent code style across the project. - Provides actionable insights to improve code quality. - Enhances testing capabilities with updated PHPUnit and Mockery. - Ensures project dependencies are free from known security vulnerabilities. ### Notes - Ensure that the required binaries are executable in your environment. - Integrate these tools into your CI/CD pipeline for automated checks. * resolve style PSR * add Translate README to Brazilian Portuguese * update ci * Update composer.json to exclude unnecessary files and directories for package distribution * adjust lock composer * adjust lock composer * adjust .env.example * update .env.example --------- Co-authored-by: Walmir Silva <walmir.silva@growthdev.com.br>
1 parent 1c27b46 commit 8171245

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+4114
-1913
lines changed

.env.example

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
KARIRI_APP=develop
2-
3-
KARIRI_PHP_VERSION=8.3
4-
KARIRI_PHP_PORT=9303
5-
6-
PACKAGIST_TOKEN=
1+
KARIRICODE_APP=develop
2+
KARIRICODE_PHP_VERSION=8.3
3+
KARIRICODE_PHP_PORT=9303

.github/workflows/kariri-ci-cd.yml

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -29,18 +29,18 @@ jobs:
2929
with:
3030
php-version: ${{ matrix.php }}
3131
extensions: mbstring, xml
32-
tools: composer:v2, php-cs-fixer, phpstan, phpunit, phpcs
32+
tools: composer:v2, php-cs-fixer, phpunit
3333

3434
- name: Install dependencies
35-
run: composer install --prefer-dist --no-progress --no-suggest
35+
run: composer install --prefer-dist --no-progress
3636

3737
- name: Validate composer.json
3838
run: composer validate
3939

4040
- name: Coding Standards Check
4141
run: vendor/bin/php-cs-fixer fix --dry-run --diff
4242

43-
static-analysis:
43+
unit-tests:
4444
needs: setup-and-lint
4545
runs-on: ubuntu-latest
4646

@@ -52,25 +52,21 @@ jobs:
5252
with:
5353
path: vendor
5454
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
55+
restore-keys: |
56+
${{ runner.os }}-composer-
5557
56-
- name: Static Analysis with PHPStan
57-
run: vendor/bin/phpstan analyse
58-
59-
unit-tests:
60-
needs: setup-and-lint
61-
runs-on: ubuntu-latest
62-
63-
steps:
64-
- uses: actions/checkout@v3
65-
66-
- name: Download Composer Cache
67-
uses: actions/cache@v3
58+
- name: Set up PHP ${{ matrix.php }}
59+
uses: shivammathur/setup-php@v2
6860
with:
69-
path: vendor
70-
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
61+
php-version: ${{ matrix.php }}
62+
extensions: mbstring, xml
63+
tools: composer:v2, php-cs-fixer, phpunit
64+
65+
- name: Install dependencies
66+
run: composer install --prefer-dist --no-progress
7167

7268
- name: Run PHPUnit Tests
73-
run: vendor/bin/phpunit --coverage-text
69+
run: XDEBUG_MODE=coverage vendor/bin/phpunit --coverage-text
7470

7571
- name: Security Check
7672
run: vendor/bin/security-checker security:check

.php-cs-fixer.php

Lines changed: 61 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,65 @@
11
<?php
22

33
$finder = PhpCsFixer\Finder::create()
4-
->exclude('vendor')
5-
->in(__DIR__);
4+
->in(__DIR__ . '/src')
5+
->in(__DIR__ . '/tests')
6+
->exclude('var')
7+
->exclude('config')
8+
->exclude('vendor');
69

7-
$config = new PhpCsFixer\Config();
8-
return $config->setRules([
9-
'@PSR12' => true,
10-
'full_opening_tag' => false,
11-
'phpdoc_var_without_name' => false,
12-
'phpdoc_to_comment' => false,
13-
'no_unused_imports' => true,
14-
'array_syntax' => [
15-
'syntax' => 'short',
16-
],
17-
'no_trailing_whitespace' => true, // Remove espaços no final das linhas
18-
'no_whitespace_in_blank_line' => true, // Remove espaços em linhas em branco
19-
'binary_operator_spaces' => [
20-
'default' => 'single_space', // Garante um espaço em operadores binários
21-
],
22-
'method_argument_space' => [
23-
'on_multiline' => 'ensure_fully_multiline', // Formata espaços em argumentos de métodos em múltiplas linhas
24-
'after_heredoc' => true,
25-
],
26-
'trim_array_spaces' => true, // Remove espaços desnecessários em arrays
27-
'single_blank_line_at_eof' => true, // Garante uma única linha em branco no final do arquivo
28-
// Adicione outras regras conforme necessário
29-
])->setFinder($finder);
10+
return (new PhpCsFixer\Config())
11+
->setParallelConfig(new PhpCsFixer\Runner\Parallel\ParallelConfig(4, 20))
12+
->setRules([
13+
'@PSR12' => true,
14+
'@Symfony' => true,
15+
'full_opening_tag' => false,
16+
'phpdoc_var_without_name' => false,
17+
'phpdoc_to_comment' => false,
18+
'array_syntax' => ['syntax' => 'short'],
19+
'concat_space' => ['spacing' => 'one'],
20+
'binary_operator_spaces' => [
21+
'default' => 'single_space',
22+
'operators' => [
23+
'=' => 'single_space',
24+
'=>' => 'single_space',
25+
],
26+
],
27+
'blank_line_before_statement' => [
28+
'statements' => ['return']
29+
],
30+
'cast_spaces' => ['space' => 'single'],
31+
'class_attributes_separation' => [
32+
'elements' => [
33+
'const' => 'none',
34+
'method' => 'one',
35+
'property' => 'none'
36+
]
37+
],
38+
'declare_equal_normalize' => ['space' => 'none'],
39+
'function_typehint_space' => true,
40+
'lowercase_cast' => true,
41+
'no_unused_imports' => true,
42+
'not_operator_with_successor_space' => true,
43+
'ordered_imports' => true,
44+
'phpdoc_align' => ['align' => 'left'],
45+
'phpdoc_no_alias_tag' => ['replacements' => ['type' => 'var', 'link' => 'see']],
46+
'phpdoc_order' => true,
47+
'phpdoc_scalar' => true,
48+
'single_quote' => true,
49+
'standardize_not_equals' => true,
50+
'trailing_comma_in_multiline' => ['elements' => ['arrays']],
51+
'trim_array_spaces' => true,
52+
'unary_operator_spaces' => true,
53+
'visibility_required' => ['elements' => ['const', 'method', 'property']],
54+
'multiline_whitespace_before_semicolons' => [
55+
'strategy' => 'no_multi_line',
56+
],
57+
'method_chaining_indentation' => true,
58+
'class_definition' => [
59+
'single_item_single_line' => false,
60+
'multi_line_extends_each_single_line' => true,
61+
],
62+
])
63+
->setRiskyAllowed(true)
64+
->setFinder($finder)
65+
->setUsingCache(false);

.phpcs-cache

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"config":{"phpVersion":80308,"phpExtensions":"8fab9f49dd9f972e8c3521e490e96b80","tabWidth":4,"encoding":"utf-8","recordErrors":true,"annotations":true,"configData":{"installed_paths":"..\/..\/slevomat\/coding-standard"},"codeHash":"2262759546115f5ddab5ae60f21cd773","rulesetHash":"a1799b49768b6828a638979ad9e38f0a"},"\/app\/src\/DataStructure\/Tree.php":{"hash":"75dfe8b3d5b2cca6e3c29a9ce425073033188","errors":[],"warnings":[],"metrics":{"Declarations and side effects mixed":{"values":{"no":1}},"PHP short open tag used":{"values":{"no":1}},"EOL char":{"values":{"\\n":1}},"Number of newlines at EOF":{"values":{"1":1}},"PHP closing tag at end of PHP-only file":{"values":{"no":1}},"Line length":{"values":{"80 or less":44}},"Line indent":{"values":{"spaces":28}},"PHP keyword case":{"values":{"lower":11}},"Multiple statements on same line":{"values":{"no":6}},"One class per file":{"values":{"yes":1}},"Class defined in namespace":{"values":{"yes":1}},"PascalCase class name":{"values":{"yes":1}},"Class opening brace placement":{"values":{"new line":1}},"CamelCase method name":{"values":{"yes":4}},"PHP type case":{"values":{"lower":6}}},"errorCount":0,"warningCount":0,"fixableCount":0,"numTokens":244},"\/app\/src\/DataStructure\/CollectionList.php":{"hash":"e8a434907640b1489c3f41535c4dadc233188","errors":[],"warnings":[],"metrics":{"Declarations and side effects mixed":{"values":{"no":1}},"PHP short open tag used":{"values":{"no":1}},"EOL char":{"values":{"\\n":1}},"Number of newlines at EOF":{"values":{"1":1}},"PHP closing tag at end of PHP-only file":{"values":{"no":1}},"Line length":{"values":{"80 or less":42,"81-120":1}},"Line indent":{"values":{"spaces":26}},"PHP keyword case":{"values":{"lower":12}},"Multiple statements on same line":{"values":{"no":6}},"One class per file":{"values":{"yes":1}},"Class defined in namespace":{"values":{"yes":1}},"PascalCase class name":{"values":{"yes":1}},"Class opening brace placement":{"values":{"new line":1}},"CamelCase method name":{"values":{"yes":4}},"PHP type case":{"values":{"lower":7}}},"errorCount":0,"warningCount":0,"fixableCount":0,"numTokens":249},"\/app\/src\/DataStructure\/IterableCollection.php":{"hash":"07a17928757efe31293039b8b75e90f233188","errors":[],"warnings":[],"metrics":{"Declarations and side effects mixed":{"values":{"no":1}},"PHP short open tag used":{"values":{"no":1}},"EOL char":{"values":{"\\n":1}},"Number of newlines at EOF":{"values":{"1":1}},"PHP closing tag at end of PHP-only file":{"values":{"no":1}},"Line length":{"values":{"80 or less":22}},"Line indent":{"values":{"spaces":6}},"PHP keyword case":{"values":{"lower":6}},"Multiple statements on same line":{"values":{"no":3}},"One class per file":{"values":{"yes":1}},"Class defined in namespace":{"values":{"yes":1}},"PascalCase class name":{"values":{"yes":1}},"Class opening brace placement":{"values":{"new line":1}},"CamelCase method name":{"values":{"yes":1}}},"errorCount":0,"warningCount":0,"fixableCount":0,"numTokens":114},"\/app\/src\/DataStructure\/Queue.php":{"hash":"632541089da9ae51f2be435278ebc52233188","errors":[],"warnings":[],"metrics":{"Declarations and side effects mixed":{"values":{"no":1}},"PHP short open tag used":{"values":{"no":1}},"EOL char":{"values":{"\\n":1}},"Number of newlines at EOF":{"values":{"1":1}},"PHP closing tag at end of PHP-only file":{"values":{"no":1}},"Line length":{"values":{"80 or less":40}},"Line indent":{"values":{"spaces":24}},"PHP keyword case":{"values":{"lower":12}},"Multiple statements on same line":{"values":{"no":6}},"One class per file":{"values":{"yes":1}},"Class defined in namespace":{"values":{"yes":1}},"PascalCase class name":{"values":{"yes":1}},"Class opening brace placement":{"values":{"new line":1}},"CamelCase method name":{"values":{"yes":4}},"PHP type case":{"values":{"lower":5}}},"errorCount":0,"warningCount":0,"fixableCount":0,"numTokens":221},"\/app\/src\/DataStructure\/Stack.php":{"hash":"f91712d0ed562b4d49da13ee607a537833188","errors":[],"warnings":[],"metrics":{"Declarations and side effects mixed":{"values":{"no":1}},"PHP short open tag used":{"values":{"no":1}},"EOL char":{"values":{"\\n":1}},"Number of newlines at EOF":{"values":{"1":1}},"PHP closing tag at end of PHP-only file":{"values":{"no":1}},"Line length":{"values":{"80 or less":40}},"Line indent":{"values":{"spaces":24}},"PHP keyword case":{"values":{"lower":12}},"Multiple statements on same line":{"values":{"no":6}},"One class per file":{"values":{"yes":1}},"Class defined in namespace":{"values":{"yes":1}},"PascalCase class name":{"values":{"yes":1}},"Class opening brace placement":{"values":{"new line":1}},"CamelCase method name":{"values":{"yes":4}},"PHP type case":{"values":{"lower":5}}},"errorCount":0,"warningCount":0,"fixableCount":0,"numTokens":221},"\/app\/src\/DataStructure\/Map.php":{"hash":"6796eba673f24279a7d29287f04e123733188","errors":[],"warnings":[],"metrics":{"Declarations and side effects mixed":{"values":{"no":1}},"PHP short open tag used":{"values":{"no":1}},"EOL char":{"values":{"\\n":1}},"Number of newlines at EOF":{"values":{"1":1}},"PHP closing tag at end of PHP-only file":{"values":{"no":1}},"Line length":{"values":{"80 or less":59}},"Line indent":{"values":{"spaces":43}},"PHP keyword case":{"values":{"lower":16}},"Multiple statements on same line":{"values":{"no":8}},"One class per file":{"values":{"yes":1}},"Class defined in namespace":{"values":{"yes":1}},"PascalCase class name":{"values":{"yes":1}},"Class opening brace placement":{"values":{"new line":1}},"CamelCase method name":{"values":{"yes":6}},"PHP type case":{"values":{"lower":11}}},"errorCount":0,"warningCount":0,"fixableCount":0,"numTokens":346},"\/app\/src\/DataStructure\/Heap.php":{"hash":"50a1eb336d6ed6a9cf8873fc0288314333188","errors":[],"warnings":[],"metrics":{"Declarations and side effects mixed":{"values":{"no":1}},"PHP short open tag used":{"values":{"no":1}},"EOL char":{"values":{"\\n":1}},"Number of newlines at EOF":{"values":{"1":1}},"PHP closing tag at end of PHP-only file":{"values":{"no":1}},"Line length":{"values":{"80 or less":40}},"Line indent":{"values":{"spaces":24}},"PHP keyword case":{"values":{"lower":12}},"Multiple statements on same line":{"values":{"no":6}},"One class per file":{"values":{"yes":1}},"Class defined in namespace":{"values":{"yes":1}},"PascalCase class name":{"values":{"yes":1}},"Class opening brace placement":{"values":{"new line":1}},"CamelCase method name":{"values":{"yes":4}},"PHP type case":{"values":{"lower":5}}},"errorCount":0,"warningCount":0,"fixableCount":0,"numTokens":221},"\/app\/tests\/DataStructure\/TreeTest.php":{"hash":"cad6ad886a919553d50313506f26920833188","errors":{"28":{"21":[{"message":"Expected 1 space after class keyword; 0 found","source":"PSR12.Classes.AnonClassDeclaration.SpaceAfterKeyword","listener":"PHP_CodeSniffer\\Standards\\PSR12\\Sniffs\\Classes\\AnonClassDeclarationSniff","severity":5,"fixable":true}]}},"warnings":[],"metrics":{"Declarations and side effects mixed":{"values":{"no":1}},"PHP short open tag used":{"values":{"no":1}},"EOL char":{"values":{"\\n":1}},"Number of newlines at EOF":{"values":{"1":1}},"PHP closing tag at end of PHP-only file":{"values":{"no":1}},"Line length":{"values":{"80 or less":58}},"Line indent":{"values":{"spaces":50}},"PHP keyword case":{"values":{"lower":24}},"Multiple statements on same line":{"values":{"no":26}},"One class per file":{"values":{"yes":1}},"Class defined in namespace":{"values":{"yes":1}},"PascalCase class name":{"values":{"yes":1}},"Class opening brace placement":{"values":{"new line":1}},"CamelCase method name":{"values":{"yes":5}},"PHP type case":{"values":{"lower":5}},"Function opening brace placement":{"values":{"new line":5}},"PHP constant case":{"values":{"lower":1}},"Spaces after control structure open parenthesis":{"values":[1]},"Spaces before control structure close parenthesis":{"values":[1]},"Blank lines at start of control structure":{"values":[1]},"Blank lines at end of control structure":{"values":[1]},"Control structure defined inline":{"values":{"no":1}}},"errorCount":1,"warningCount":0,"fixableCount":1,"numTokens":518},"\/app\/tests\/DataStructure\/HeapTest.php":{"hash":"05a750810e94204a98caa9a83250a10433188","errors":[],"warnings":[],"metrics":{"Declarations and side effects mixed":{"values":{"no":1}},"PHP short open tag used":{"values":{"no":1}},"EOL char":{"values":{"\\n":1}},"Number of newlines at EOF":{"values":{"1":1}},"PHP closing tag at end of PHP-only file":{"values":{"no":1}},"Line length":{"values":{"80 or less":43}},"Line indent":{"values":{"spaces":35}},"PHP keyword case":{"values":{"lower":15}},"Multiple statements on same line":{"values":{"no":19}},"One class per file":{"values":{"yes":1}},"Class defined in namespace":{"values":{"yes":1}},"PascalCase class name":{"values":{"yes":1}},"Class opening brace placement":{"values":{"new line":1}},"CamelCase method name":{"values":{"yes":4}},"PHP type case":{"values":{"lower":4}},"Function opening brace placement":{"values":{"new line":4}},"PHP constant case":{"values":{"lower":1}}},"errorCount":0,"warningCount":0,"fixableCount":0,"numTokens":387},"\/app\/tests\/DataStructure\/CollectionListTest.php":{"hash":"7d3e48545ac6fb0f73dd05882f018e6133188","errors":[],"warnings":[],"metrics":{"Declarations and side effects mixed":{"values":{"no":1}},"PHP short open tag used":{"values":{"no":1}},"EOL char":{"values":{"\\n":1}},"Number of newlines at EOF":{"values":{"1":1}},"PHP closing tag at end of PHP-only file":{"values":{"no":1}},"Line length":{"values":{"80 or less":45}},"Line indent":{"values":{"spaces":37}},"PHP keyword case":{"values":{"lower":15}},"Multiple statements on same line":{"values":{"no":20}},"One class per file":{"values":{"yes":1}},"Class defined in namespace":{"values":{"yes":1}},"PascalCase class name":{"values":{"yes":1}},"Class opening brace placement":{"values":{"new line":1}},"CamelCase method name":{"values":{"yes":4}},"PHP type case":{"values":{"lower":4}},"Function opening brace placement":{"values":{"new line":4}},"PHP constant case":{"values":{"lower":1}}},"errorCount":0,"warningCount":0,"fixableCount":0,"numTokens":396},"\/app\/tests\/DataStructure\/MapTest.php":{"hash":"0195c30d6c0184fb43ab17dbd20abe5833188","errors":[],"warnings":[],"metrics":{"Declarations and side effects mixed":{"values":{"no":1}},"PHP short open tag used":{"values":{"no":1}},"EOL char":{"values":{"\\n":1}},"Number of newlines at EOF":{"values":{"1":1}},"PHP closing tag at end of PHP-only file":{"values":{"no":1}},"Line length":{"values":{"80 or less":67}},"Line indent":{"values":{"spaces":59}},"PHP keyword case":{"values":{"lower":19}},"Multiple statements on same line":{"values":{"no":30}},"One class per file":{"values":{"yes":1}},"Class defined in namespace":{"values":{"yes":1}},"PascalCase class name":{"values":{"yes":1}},"Class opening brace placement":{"values":{"new line":1}},"CamelCase method name":{"values":{"yes":6}},"PHP type case":{"values":{"lower":6}},"Function opening brace placement":{"values":{"new line":6}},"PHP constant case":{"values":{"lower":2}}},"errorCount":0,"warningCount":0,"fixableCount":0,"numTokens":622},"\/app\/tests\/DataStructure\/StackTest.php":{"hash":"9eca664ad4ea1298d9e064993f51364933188","errors":[],"warnings":[],"metrics":{"Declarations and side effects mixed":{"values":{"no":1}},"PHP short open tag used":{"values":{"no":1}},"EOL char":{"values":{"\\n":1}},"Number of newlines at EOF":{"values":{"1":1}},"PHP closing tag at end of PHP-only file":{"values":{"no":1}},"Line length":{"values":{"80 or less":43}},"Line indent":{"values":{"spaces":35}},"PHP keyword case":{"values":{"lower":15}},"Multiple statements on same line":{"values":{"no":19}},"One class per file":{"values":{"yes":1}},"Class defined in namespace":{"values":{"yes":1}},"PascalCase class name":{"values":{"yes":1}},"Class opening brace placement":{"values":{"new line":1}},"CamelCase method name":{"values":{"yes":4}},"PHP type case":{"values":{"lower":4}},"Function opening brace placement":{"values":{"new line":4}},"PHP constant case":{"values":{"lower":1}}},"errorCount":0,"warningCount":0,"fixableCount":0,"numTokens":387},"\/app\/tests\/DataStructure\/QueueTest.php":{"hash":"cac83d07be0dee6cc597f402f6e4e50c33188","errors":[],"warnings":[],"metrics":{"Declarations and side effects mixed":{"values":{"no":1}},"PHP short open tag used":{"values":{"no":1}},"EOL char":{"values":{"\\n":1}},"Number of newlines at EOF":{"values":{"1":1}},"PHP closing tag at end of PHP-only file":{"values":{"no":1}},"Line length":{"values":{"80 or less":43}},"Line indent":{"values":{"spaces":35}},"PHP keyword case":{"values":{"lower":15}},"Multiple statements on same line":{"values":{"no":19}},"One class per file":{"values":{"yes":1}},"Class defined in namespace":{"values":{"yes":1}},"PascalCase class name":{"values":{"yes":1}},"Class opening brace placement":{"values":{"new line":1}},"CamelCase method name":{"values":{"yes":4}},"PHP type case":{"values":{"lower":4}},"Function opening brace placement":{"values":{"new line":4}},"PHP constant case":{"values":{"lower":1}}},"errorCount":0,"warningCount":0,"fixableCount":0,"numTokens":387},"\/app\/tests\/DataStructure\/IterableCollectionTest.php":{"hash":"1d027ebf9aa76d8d98869fc1659ecea333188","errors":[],"warnings":[],"metrics":{"Declarations and side effects mixed":{"values":{"no":1}},"PHP short open tag used":{"values":{"no":1}},"EOL char":{"values":{"\\n":1}},"Number of newlines at EOF":{"values":{"1":1}},"PHP closing tag at end of PHP-only file":{"values":{"no":1}},"Line length":{"values":{"80 or less":17}},"Line indent":{"values":{"spaces":9}},"PHP keyword case":{"values":{"lower":9}},"Multiple statements on same line":{"values":{"no":8}},"One class per file":{"values":{"yes":1}},"Class defined in namespace":{"values":{"yes":1}},"PascalCase class name":{"values":{"yes":1}},"Class opening brace placement":{"values":{"new line":1}},"CamelCase method name":{"values":{"yes":1}},"PHP type case":{"values":{"lower":1}},"Function opening brace placement":{"values":{"new line":1}}},"errorCount":0,"warningCount":0,"fixableCount":0,"numTokens":152}}

0 commit comments

Comments
 (0)