44 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			44 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								# Drupal custom PHPStan rules
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								This directory contains PHPStan rules specifically developed for Drupal.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Subdirectories
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								* _Rules_: contains the actual rules.
							 | 
						||
| 
								 | 
							
								* _tests_: contains PHPUnit tests for the rules.
							 | 
						||
| 
								 | 
							
								* _fixtures_: contains fixture files for the PHPUnit tests of the rules.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Enabling rules
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Rules are executed when they are added to the the phpstan.neon(.dist)
							 | 
						||
| 
								 | 
							
								configuration file of a PHPStan scan run. You need to add them under the
							 | 
						||
| 
								 | 
							
								`rules` entry in the file, specifying the fully qualified class name of the
							 | 
						||
| 
								 | 
							
								rule. For example:
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								rules:
							 | 
						||
| 
								 | 
							
								  - Drupal\PHPStan\Rules\ComponentTestDoesNotExtendCoreTest
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Testing rules
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								PHPStan rules must be tested in the context of the PHPStan testing framework,
							 | 
						||
| 
								 | 
							
								that differs in terms of dependencies from Drupal's one.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Note that for this reason, these tests are run _separately_ from Drupal core
							 | 
						||
| 
								 | 
							
								tests.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								A _composer.json_ file is present in this directory, indicating the required
							 | 
						||
| 
								 | 
							
								packages for the execution of the tests. Installing via composer
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								$ composer install
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								builds a _vendor_ subdirectory that includes all the packages required. Note
							 | 
						||
| 
								 | 
							
								this packages' codebase is totally independent from Drupal core's one.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								In the context of this directory, you can then execute the rule tests like
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								$ vendor/bin/phpunit tests
							 | 
						||
| 
								 | 
							
								```
							 |