<?xml 
version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="https://www.spip.net/spip.php?page=backend.xslt" ?>
<rss version="2.0" 
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:atom="http://www.w3.org/2005/Atom"
>

<channel xml:lang="fr">
	<title>SPIP</title>
	<link>https://www.spip.net/</link>
	<description>Syst&#232;me de Publication pour Internet</description>
	<language>fr</language>
	<generator>SPIP - www.spip.net</generator>
	<atom:link href="https://www.spip.net/spip.php?id_auteur=9611&amp;page=backend" rel="self" type="application/rss+xml" />

	<image>
		<title>SPIP</title>
		<url>https://www.spip.net/local/cache-vignettes/L144xH107/siteon0-0ecda.png?1615902774</url>
		<link>https://www.spip.net/</link>
		<height>107</height>
		<width>144</width>
	</image>



<item xml:lang="fr">
		<title>Utiliser Rector</title>
		<link>https://www.spip.net/fr_article7090.html</link>
		<guid isPermaLink="true">https://www.spip.net/fr_article7090.html</guid>
		<dc:date>2025-03-20T13:43:48Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>bricebou</dc:creator>



		<description>
&lt;p&gt;Rector est un outil de refactoring et d'am&#233;lioration automatis&#233; de code PHP ; SPIP s'est dot&#233; d'un jeu de r&#232;gles : https://git.spip.net/spip-league/rector. &lt;br class='autobr' /&gt; * Pr&#233;alable &lt;br class='autobr' /&gt;
Il faut un fichier composer.json &#224; la racine du plugin, dans lequel on d&#233;clare le d&#233;p&#244;t composer propre &#224; SPIP : &#034;repositories&#034; : &#034;spip&#034; : &#034;type&#034; : &#034;composer&#034;, &#034;url&#034; : &#034;https://get.spip.net/composer&#034; &lt;br class='autobr' /&gt; * (&#8230;)&lt;/p&gt;


-
&lt;a href="https://www.spip.net/fr_rubrique809.html" rel="directory"&gt;Outils de d&#233;veloppement&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;Rector est un outil de refactoring et d'am&#233;lioration automatis&#233; de code PHP ; SPIP s'est dot&#233; d'un jeu de r&#232;gles : &lt;a href=&#034;https://git.spip.net/spip-league/rector&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;https://git.spip.net/spip-league/rector&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;!--sommaire--&gt;&lt;div class=&#034;well nav-sommaire nav-sommaire-4&#034; id=&#034;nav69f585cb1cc2d6.79974364&#034;&gt;
&lt;h2&gt;Sommaire&lt;/h2&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a id=&#034;s-Prealable&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Prealable&#034; class=&#034;spip_ancre&#034;&gt;Pr&#233;alable&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Installation&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Installation&#034; class=&#034;spip_ancre&#034;&gt;Installation&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Configuration&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Configuration&#034; class=&#034;spip_ancre&#034;&gt;Configuration&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Usage&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Usage&#034; class=&#034;spip_ancre&#034;&gt;Usage&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;!--/sommaire--&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Prealable&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Prealable'&gt; Pr&#233;alable&lt;a class='sommaire-back sommaire-back-4' href='#s-Prealable' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Il faut un fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;composer.json&lt;/code&gt; &#224; la racine du plugin, dans lequel on d&#233;clare le d&#233;p&#244;t composer propre &#224; SPIP :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;json&#034; class='spip_code spip_code_block language-json' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;{ &#034;repositories&#034;: { &#034;spip&#034;: { &#034;type&#034;: &#034;composer&#034;, &#034;url&#034;: &#034;https://get.spip.net/composer&#034; } } } &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Installation&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Installation'&gt; Installation&lt;a class='sommaire-back sommaire-back-4' href='#s-Installation' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;console&#034; class='spip_code spip_code_block language-console' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;composer require --dev rector/rector spip-league/rector:&#034;dev-main&#034; &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Configuration&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Configuration'&gt; Configuration&lt;a class='sommaire-back sommaire-back-4' href='#s-Configuration' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;La configuration se fait dans le fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;rector.php&lt;/code&gt; &#224; la racine de votre plugin :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;php&#034; class='spip_code spip_code_block language-php' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;&lt;?php declare(strict_types=1); use Rector\Config\RectorConfig; use Rector\Set\ValueObject\LevelSetList; use SpipLeague\Component\Rector\Set\SpipSetList; return RectorConfig::configure() -&gt;withPaths([__DIR__]) -&gt;withRootFiles() -&gt;withSets([SpipSetList::SPIP_41, LevelSetList::UP_TO_PHP_74]) -&gt;withSkip([ __DIR__ . '/lang', __DIR__ . '/vendor', ]) ; &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;On peut configurer des scripts dans le fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;composer.json&lt;/code&gt; :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;json&#034; class='spip_code spip_code_block language-json' dir='ltr' style='text-align:left;'&gt;&lt;code&gt; &#034;scripts&#034;: { &#034;rector&#034;: &#034;vendor/bin/rector process --ansi&#034;, &#034;rector-dry-run&#034;: &#034;vendor/bin/rector process --dry-run --ansi&#034; } &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Usage&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Usage'&gt; Usage&lt;a class='sommaire-back sommaire-back-4' href='#s-Usage' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;console&#034; class='spip_code spip_code_block language-console' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;composer rector-dry-run composer rector composer rector dossier/fichier &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/section&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Utiliser ECS</title>
		<link>https://www.spip.net/fr_article7086.html</link>
		<guid isPermaLink="true">https://www.spip.net/fr_article7086.html</guid>
		<dc:date>2025-03-20T13:40:49Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>bricebou</dc:creator>



		<description>
&lt;p&gt;SPIP propose un jeu de r&#232;gles pour Easy Coding Standard (https://github.com/easy-coding-standard/easy-coding-standard) via le d&#233;p&#244;t spip-league/easy-coding-standard. &lt;br class='autobr' /&gt;
L'utiliser permet de s'assurer de respecter les conventions d'&#233;criture PHP utilis&#233;es dans la communaut&#233; SPIP. &lt;br class='autobr' /&gt; * Pr&#233;alable &lt;br class='autobr' /&gt;
Il faut un fichier composer.json &#224; la racine du plugin, dans lequel on d&#233;clare le d&#233;p&#244;t composer propre &#224; SPIP : &#034;repositories&#034; : &#034;spip&#034; : (&#8230;)&lt;/p&gt;


-
&lt;a href="https://www.spip.net/fr_rubrique809.html" rel="directory"&gt;Outils de d&#233;veloppement&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;SPIP propose un jeu de r&#232;gles pour Easy Coding Standard (&lt;a href=&#034;https://github.com/easy-coding-standard/easy-coding-standard&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;https://github.com/easy-coding-standard/easy-coding-standard&lt;/a&gt;) via le d&#233;p&#244;t &lt;a href=&#034;https://git.spip.net/spip-league/easy-coding-standard&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;spip-league/easy-coding-standard&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;L'utiliser permet de s'assurer de respecter les conventions d'&#233;criture PHP utilis&#233;es dans la communaut&#233; SPIP.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;!--sommaire--&gt;&lt;div class=&#034;well nav-sommaire nav-sommaire-4&#034; id=&#034;nav69f585cb1e7dd3.61245477&#034;&gt;
&lt;h2&gt;Sommaire&lt;/h2&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a id=&#034;s-Prealable&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Prealable&#034; class=&#034;spip_ancre&#034;&gt;Pr&#233;alable&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Installation&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Installation&#034; class=&#034;spip_ancre&#034;&gt;Installation&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Configuration&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Configuration&#034; class=&#034;spip_ancre&#034;&gt;Configuration&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Usage&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Usage&#034; class=&#034;spip_ancre&#034;&gt;Usage&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;!--/sommaire--&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Prealable&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Prealable'&gt; Pr&#233;alable&lt;a class='sommaire-back sommaire-back-4' href='#s-Prealable' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Il faut un fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;composer.json&lt;/code&gt; &#224; la racine du plugin, dans lequel on d&#233;clare le d&#233;p&#244;t composer propre &#224; SPIP :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;json&#034; class='spip_code spip_code_block language-json' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;{ &#034;repositories&#034;: { &#034;spip&#034;: { &#034;type&#034;: &#034;composer&#034;, &#034;url&#034;: &#034;https://get.spip.net/composer&#034; } } } &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Installation&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Installation'&gt; Installation&lt;a class='sommaire-back sommaire-back-4' href='#s-Installation' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;L'installation se fait avec la commande :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;console&#034; class='spip_code spip_code_block language-console' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;composer require --dev spip-league/easy-coding-standard &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Configuration&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Configuration'&gt; Configuration&lt;a class='sommaire-back sommaire-back-4' href='#s-Configuration' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Cr&#233;ez le fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;ecs.php&lt;/code&gt; &#224; la racine de votre plugin :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;php&#034; class='spip_code spip_code_block language-php' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;&lt;?php use SpipLeague\EasyCodingStandard\Set\SetList; use Symplify\EasyCodingStandard\Config\ECSConfig; return ECSConfig::configure() -&gt;withSets([SetList::SPIP]) -&gt;withPaths([__DIR__]) -&gt;withRootFiles() -&gt;withSkip([__DIR__ . '/lang', __DIR__ . '/vendor']) ; &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Usage&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Usage'&gt; Usage&lt;a class='sommaire-back sommaire-back-4' href='#s-Usage' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Pour en faciliter l'usage, on peut ajouter des &#034;alias&#034; dans les scripts du fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;composer.json&lt;/code&gt; :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;json&#034; class='spip_code spip_code_block language-json' dir='ltr' style='text-align:left;'&gt;&lt;code&gt; &#034;scripts&#034;: { &#034;check-cs&#034;: &#034;vendor/bin/ecs check --ansi&#034;, &#034;fix-cs&#034;: &#034;vendor/bin/ecs check --fix --ansi&#034; } &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;console&#034; class='spip_code spip_code_block language-console' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;composer fix-cs composer fix-cs inc/inc.inc &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/section&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Les outils utilis&#233;s pour le d&#233;veloppement</title>
		<link>https://www.spip.net/fr_article6924.html</link>
		<guid isPermaLink="true">https://www.spip.net/fr_article6924.html</guid>
		<dc:date>2025-01-14T06:58:03Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>bricebou, b_b, James, Ma&#239;eul, Matthieu Marcillaud, placido, tofulm</dc:creator>



		<description>
&lt;p&gt;L'&#233;quipe de maintenance utilise ces outils pour maintenir et d&#233;velopper SPIP. Cet article r&#233;sume succinctement le r&#244;le des outils et les liens de documentation. &lt;br class='autobr' /&gt; |Nom de l'outil|R&#244;le|Documentation sp&#233;cifique &#224; la communaut&#233; SPIP| D&#233;veloppement c&#244;t&#233; serveur ou back-end PHP Langage dans lequel SPIP est &#233;crit c&#244;t&#233; serveur PHPdoc Commentaire du code Composer Installer les biblioth&#232;ques de code (library) dont le projet principal a besoin Qualit&#233; de code Easy Coding Standard (&#8230;)&lt;/p&gt;


-
&lt;a href="https://www.spip.net/fr_rubrique809.html" rel="directory"&gt;Outils de d&#233;veloppement&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;L'&#233;quipe de maintenance utilise ces outils pour maintenir et d&#233;velopper SPIP. Cet article r&#233;sume succinctement le r&#244;le des outils et les liens de documentation.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;table class=&#034;table spip&#034;&gt;
&lt;thead&gt;&lt;tr class='row_first'&gt;&lt;th id='id7894_c0'&gt;Nom de l'outil&lt;/th&gt;&lt;th id='id7894_c1'&gt;R&#244;le&lt;/th&gt;&lt;th id='id7894_c2'&gt;Documentation sp&#233;cifique &#224; la communaut&#233; SPIP&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;table class=&#034;table spip&#034;&gt;
&lt;tbody&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td colspan='3'&gt;&lt;strong&gt;D&#233;veloppement c&#244;t&#233; serveur ou &lt;i&gt;back-end&lt;/i&gt; &lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;&lt;a href=&#034;https://www.php.net/manual/fr&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;PHP&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Langage dans lequel SPIP est &#233;crit c&#244;t&#233; serveur&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;&lt;a href=&#034;https://docs.phpdoc.org/guide/getting-started/index.html#getting-started&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;PHPdoc&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Commentaire du code&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;&lt;a href=&#034;https://getcomposer.org/doc&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Composer&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Installer les biblioth&#232;ques de code (library) dont le projet principal a besoin&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td colspan='3'&gt;&lt;strong&gt;Qualit&#233; de code&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;&lt;a href=&#034;https://github.com/easy-coding-standard/easy-coding-standard&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Easy Coding Standard&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Automatiser le respect des r&#233;gles de codages&lt;/td&gt;
&lt;td&gt;&lt;a href='https://www.spip.net/fr_article7086.html' class=&#034;spip_in&#034;&gt;Utiliser ECS&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;&lt;a href=&#034;https://getrector.com/documentation&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Rector&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Corriger du code historique pour le rendre plus durable&lt;/td&gt;
&lt;td&gt;&lt;a href='https://www.spip.net/fr_article7090.html' class=&#034;spip_in&#034;&gt;Utiliser Rector&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;&lt;a href=&#034;https://www.php-fig.org/psr/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;PSR&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Bonne pratiques de codage&lt;/td&gt;
&lt;td&gt;&lt;a href='https://www.spip.net/fr_rubrique783.html' class=&#034;spip_in&#034;&gt;Conventions&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;&lt;a href=&#034;https://phpunit.de/documentation.html&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;PHPUnit&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Tester le code&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;&lt;a href=&#034;https://phpstan.org/user-guide/getting-started&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;PHPStan&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Analyser le code&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;&lt;a href=&#034;https://refactoring.guru/design-patterns/php&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Refactoring Guru&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Inspiration pour transformer le code proc&#233;dural historique en code POO et pour gagner en robustesse&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;&lt;a href=&#034;https://12factor.net/fr/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;The Twelve-Factor App&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Inspiration : une m&#233;thodologie pour concevoir des logiciels en tant que service&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;table class=&#034;table spip&#034;&gt;
&lt;tbody&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td colspan='3'&gt;&lt;strong&gt;D&#233;veloppement c&#244;t&#233; navigateur ou &lt;i&gt;front-end&lt;/i&gt; &lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;&lt;a href=&#034;https://javascript.info/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Javascript&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Langage pour l'affichage dynamique de fragments de page (front-end)&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;&lt;a href=&#034;https://api.jquery.com&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;jQuery&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Biblioth&#232;que longtemps rest&#233;e comme r&#233;f&#233;rence (en voie de migration)&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;&lt;a href=&#034;https://docs.npmjs.com&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;npm&lt;/a&gt; + &lt;a href=&#034;https://bun.sh/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Bun&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Installer des modules ou biblioth&#232;ques de code (library)&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td colspan='3'&gt;&lt;strong&gt;Qualit&#233; de code&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;&lt;a href=&#034;https://bun.sh/docs/cli/test&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;bun:test&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Tester le code&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;&lt;a href=&#034;https://biomejs.dev/guides/getting-started/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;biomejs&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Normaliser le code (linter)&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;table class=&#034;table spip&#034;&gt;
&lt;thead&gt;&lt;tr class='row_first'&gt;&lt;th id='id8889_c0' colspan='3'&gt;Versionnage&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td headers='id8889_c0'&gt;&lt;a href=&#034;https://git-scm.com/doc&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Git&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Suivi de version de code&lt;/td&gt;
&lt;td&gt;&lt;a href=&#034;https://git-scm.com/book/fr/v2&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Consulter un livre en fran&#231;ais&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td headers='id8889_c0'&gt;&lt;a href=&#034;https://about.gitlab.com/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Gitlab&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Plateforme de d&#233;veloppement&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td headers='id8889_c0'&gt;&lt;a href=&#034;https://semver.org/lang/fr/spec/v2.0.0.html&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;S&#233;mantique&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Comment fonctionnent les versions de SPIP et de ses d&#233;pendances&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td headers='id8889_c0'&gt;&lt;a href=&#034;https://www.conventionalcommits.org/fr/v1.0.0/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Conventionnel commit&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Des messages des commits signifiants, lisibles pour l'humain&lt;/td&gt;
&lt;td&gt;Voir aussi &lt;a href='https://www.spip.net/fr_article6824.html' class=&#034;spip_in&#034;&gt;&#201;crire un message de commit&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td headers='id8889_c0'&gt;&lt;a href=&#034;https://keepachangelog.com/fr/1.0.0/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Changelog&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Permettre de voir pr&#233;cis&#233;ment quels changements notables ont &#233;t&#233; faits entre chaque publication (release) d'un projet&lt;/td&gt;
&lt;td&gt;Voir aussi &lt;a href='https://www.spip.net/fr_article6825.html' class=&#034;spip_in&#034;&gt;Tenir un CHANGELOG&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
		&lt;div class='rss_ps'&gt;&lt;p&gt;Nous d&#233;veloppons et utilisons aussi nos propres outils :&lt;/p&gt;
&lt;p&gt;- &lt;a href=&#034;https://git.spip.net/spip-contrib-outils/spip-releases&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;spip-releases&lt;/a&gt;
&lt;br /&gt;- &lt;a href=&#034;https://git.spip.net/spip-league/easy-coding-standard&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;spip-league/ecs&lt;/a&gt;
&lt;br /&gt;- &lt;a href=&#034;https://git.spip.net/spip-league/rector&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;spip-league/rector&lt;/a&gt;
&lt;br /&gt;- &lt;a href=&#034;https://git.spip.net/spip-league/sdk&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;spip-league/sdk&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
		</content:encoded>


		

	</item>



</channel>

</rss>
