Table des matières
à relire pour corrections
IntelliJ Idea
IntelliJ Idea et son petit frère PHPStorm sont des IDE commerciaux qui offrent un excellent support de codage PHP. Idea prend en charge un large éventail de langages de programmation, tandis que PHPStorm est uniquement destiné à PHP.
Le projet DokuWiki a été doté d'une licence d'utilisation gratuite et illimitée pour Idea par JetBrains. Les contributeurs réguliers de DokuWiki peuvent demander la clé de licence gratuite en envoyant un simple courrier électronique à andi.
Configuration d'extensions
Après l'installation, vous devez vous assurer que vous avez au moins les extensions suivantes activées :
- CSS Support
- Git Integration
- HTML Tools
- JavaScript Support
- PHP
- PHPUnit code coverage
Les extensions peuvent être installées via File
→ Settings…
→ Plugins
. Les extensions manquantes peuvent être trouvés sur le Marketplace. Le gestionnaire d'extensions vous demandera d'installer les dépendances nécessaires.
Remarque : toutes les extensions ci-dessus peuvent ne pas être disponibles (ou nécessaires) dans PHPStorm.
Créer un projet Idea pour DokuWiki
Faire un git checkout de DokuWiki. Puis, démarrez Idea et sélectionnez File
→ New Project…
. Dans la boite de dialogue sélectionnez Create project from scratch
. Dans la boîte de dialogue finale, naviguez jusqu'au checkout et sélectionnez “Module Web”. Cliquez sur “Terminer” et vous avez fini.
Configurer Idea
Pour configurer Idea au style de programmation de DokuWiki, téléchargez le fichier suivant et placez le dans votre répertoire .IntelliJIdea13/config/codestyles
(Win/*nix) ~/Library/Preferences/IntelliJIdea13/codestyles
(OSX) :
- ~/.IntelliJIdea13/config/codestyles/DokuWiki.xml
<?xml version="1.0" encoding="UTF-8"?> <!-- Code shell pour mettre à jour: wget -O dokuwiki-codestyle.xml \ https://www.dokuwiki.org/_export/code/devel:intellij_idea?codeblock=0 --> <code_scheme name="DokuWiki"> <option name="LINE_SEPARATOR" value=" " /> <JSCodeStyleSettings> <option name="ALIGN_OBJECT_PROPERTIES" value="1" /> </JSCodeStyleSettings> <PHPCodeStyleSettings> <option name="ALIGN_KEY_VALUE_PAIRS" value="true" /> <option name="ALIGN_PHPDOC_PARAM_NAMES" value="true" /> <option name="ALIGN_PHPDOC_COMMENTS" value="true" /> <option name="ALIGN_ASSIGNMENTS" value="true" /> <option name="LOWER_CASE_BOOLEAN_CONST" value="true" /> <option name="LOWER_CASE_NULL_CONST" value="true" /> </PHPCodeStyleSettings> <XML> <option name="XML_LEGACY_SETTINGS_IMPORTED" value="true" /> </XML> <codeStyleSettings language="JavaScript"> <option name="KEEP_FIRST_COLUMN_COMMENT" value="false" /> </codeStyleSettings> <codeStyleSettings language="LESS"> <indentOptions> <option name="INDENT_SIZE" value="4" /> </indentOptions> </codeStyleSettings> <codeStyleSettings language="PHP"> <option name="KEEP_BLANK_LINES_IN_DECLARATIONS" value="1" /> <option name="KEEP_BLANK_LINES_IN_CODE" value="1" /> <option name="KEEP_BLANK_LINES_BEFORE_RBRACE" value="1" /> <option name="CLASS_BRACE_STYLE" value="1" /> <option name="METHOD_BRACE_STYLE" value="1" /> <option name="ALIGN_MULTILINE_CHAINED_METHODS" value="true" /> <option name="ALIGN_MULTILINE_PARAMETERS_IN_CALLS" value="true" /> <option name="ALIGN_MULTILINE_EXTENDS_LIST" value="true" /> <option name="ALIGN_MULTILINE_ARRAY_INITIALIZER_EXPRESSION" value="true" /> <option name="SPACE_AFTER_TYPE_CAST" value="true" /> <option name="SPACE_BEFORE_IF_PARENTHESES" value="false" /> <option name="SPACE_BEFORE_WHILE_PARENTHESES" value="false" /> <option name="SPACE_BEFORE_FOR_PARENTHESES" value="false" /> <option name="SPACE_BEFORE_CATCH_PARENTHESES" value="false" /> <option name="SPACE_BEFORE_SWITCH_PARENTHESES" value="false" /> <option name="CALL_PARAMETERS_LPAREN_ON_NEXT_LINE" value="true" /> <option name="CALL_PARAMETERS_RPAREN_ON_NEXT_LINE" value="true" /> <option name="ARRAY_INITIALIZER_LBRACE_ON_NEXT_LINE" value="true" /> <option name="ARRAY_INITIALIZER_RBRACE_ON_NEXT_LINE" value="true" /> </codeStyleSettings> <codeStyleSettings language="SCSS"> <indentOptions> <option name="INDENT_SIZE" value="4" /> <option name="CONTINUATION_INDENT_SIZE" value="4" /> </indentOptions> </codeStyleSettings> </code_scheme>
Commande pour télécharger depuis ce wiki (depuis le répertoire IntelliJIdea/config
):
wget https://www.dokuwiki.org/_export/code/devel:intellij_idea?codeblock=0 \ -O codestyles/dokuwiki-codestyle.xml
Puis allez à File
→ Settings…
→ Editor
→ Code Style
et sélectionnez DokuWiki
dans le menu déroulant. (Peut-être devez-vous d'abord redémarrer avant que le programme ne soit présenté)
En outre, vous pouvez configurer les inspections suivantes File
→ Settings…
→ Editor
→ Inspections
:
- PHP
- General
- Unresolved include : false (Idea isn't able to resolve our includes even though they are completely correct)
- PHPDoc
- Missing PHPDoc comment: true
- Spelling: false
Integration de tests unitaires
Nos tests unitaires peuvent être intégrés directement dans Idea. Pour cela allez à Run
→ Edit Configurations…
.
Définissez d'abord la configuration par défaut, puis vous n'aurez plus à le faire dans les étapes suivantes
Sous Templates
trouvez PHPUnit
et cochez Use alternative configuration file
, remplissez <path to>/_test/phpunit.xml
, laissez tout en l'état et appuyez sur Appliquer
.
Cliquer sur le bouton +
(par exemple le bouton gauche en haut avec au survol 'Add New Configuration') et choisissez PHPUnit
. Puis remplissez dans ses valeurs Remplissez ensuite ces valeurs :
- Name:
All Tests
- Test Runner
- Test Scope: Defined in the configuration file
- Use alternative configuration file:
<path to>/_test/phpunit.xml
- Command Line
- Interpreter options:
-d output_buffering=On
Répétez pour ajouter une autre configuration avec ces valeurs :
- Name:
Fast Tests
- Test Runner
- Test Scope: Defined in the configuration file
- Use alternative configuration file:
<path to>/_test/phpunit.xml
- Test Runner options:
--exclude-group slow,internet
- Command Line
- Interpreter options:
-d output_buffering=On
Vous pouvez maintenant exécuter tous ou seulement les tests rapides directement à partir du menu Exécuter
ou de la liste déroulante de la barre d'outils.
Remarque : l' option -d output_buffering=On
est nécessaire jusqu'à que ce bogue soit corrigé.
Cas de test individuel/extension
Afin d'exécuter des cas de test individuels, vous devez ajouter quelques paramètres supplémentaires. Allez dans File
→ Settings…
. → Languages & Frameworks
→ PHP
→ Test Frameworks
,
Utilisez le bouton +
pour ajouter une configuration. Ici, vous devez activer Default configuration file
et spécifier le “<chemin vers>/_test/phpunit.xml”.
Ensuite, vous devez marquer soit sous Directories
dans les paramètres du projet, soit directement dans l'arborescence du projet le _test/tests
via l'option du menu contextuel Mark directory As
→ Test Source Root
et faire de même pour tous les répertoires de test des extensions. Ensuite, vous pouvez exécuter ou déboguer des cas de test individuels en choisissant Run
ou Debug
dans le menu contextuel du fichier de l'arborescence du projet.
Auto completion PHPUnit
Pour bénéficier de toutes les faveurs d'Idea, vous devez ajouter le source PHPUnit à votre projet. Pour l'ajouter, vous devez le faire ainsi :
- Ouvrir votre projet
- Cliquer sur File → Project Structure
- Sélectionner “Libraries” tab
- Cliquer sur le “+” → Java
- Sélectionner votre répertoire PHPUnit (ex.
/usr/share/pear/PHPUnit
,/usr/share/php/PHPUnit
, etc) - Dans la boite de dialogue suivante choisissez “Sources”
- Cliquer sur “Ok”
- Cliquer sur “Ok”
- et voilà !
Idea va maintenant indexer la source PHPUnit et peut fournir l'auto-complétion à l'intérieur des tests unitaires.
Trucs et astuces
Presser CTRL-ALT-L
pour reformater le fichier actuel en fonction des paramètres de style de code. Veillez à vérifier que ces nettoyages sont effectués séparément des modifications de logique.
Si Idea ne parvient pas à comprendre le type de classe d'une variable (globale), annotez la avec une indication de type :
function foo(){ /* @var Input $INPUT */ global $INPUT; // thanks to the type hint Idea now knows this is valid: echo $INPUT->str('foo'); }
Presser ALT-Enter
pour auto-réparer les problèmes détectés par Idea. Fonctionne à merveille pour insérer les blocs de doc par exemple.
Crédits
- traduction : — digitalin 2020-08-16 09:41