Projet

Général

Profil

SOP 001-Programmation » Historique » Version 44

Patrice Nadeau, 2018-03-24 17:31

1 17 Patrice Nadeau
# SOP 001-Programmation
2 1 Patrice Nadeau
3
Mes standards autant au niveau du style que de la documentation.
4
5 11 Patrice Nadeau
La plate-forme (logiciel et matériel) est documenté dans le [[SOP_002-Environnement_informatique]].
6 1 Patrice Nadeau
7
{{lastupdated_at}} {{lastupdated_by}}
8
9
---
10
11
{{toc}}
12
13 17 Patrice Nadeau
## Diagrammes
14 1 Patrice Nadeau
15
Les représentations des différents processus d’un programme ou d’un circuit.
16
17
Les diagrammes DOIVENT être faits avec le logiciel Dia.
18
Ils PEUVENT être exportés en d’autre format.
19
20 17 Patrice Nadeau
### LibreOffice Draw
21 14 Patrice Nadeau
22
Icônes :
23 17 Patrice Nadeau
24 15 Patrice Nadeau
* Cisco : http://www.cisco.com/web/about/ac50/ac47/3015_jpeg.zip
25 16 Patrice Nadeau
* http://www.vrt.com.au/downloads/vrt-network-equipment ou http://extensions.libreoffice.org/extension-center/vrt-network-equipment/
26 14 Patrice Nadeau
27 17 Patrice Nadeau
## Système de gestion de version
28 1 Patrice Nadeau
29 42 Patrice Nadeau
Le logiciel [Git](http://www.git-scm.com/) DOIT être utilisé.
30 1 Patrice Nadeau
31 42 Patrice Nadeau
La version DOIT être en format: *majeur*.*mineur*.*revision*.
32
Les nombres *majeur*, *mineur* NE DOIVENT PAS contenir de zéro non significatif et DEVRAIT se limiter à deux chiffres.
33 1 Patrice Nadeau
34
Ex.
35
> Version 1.2.06
36
37 42 Patrice Nadeau
Les modifications DOIVENT se faire avec **git commit**, de la manière suivante :
38 17 Patrice Nadeau
39 1 Patrice Nadeau
* nom du fichier modifié,
40
* 1 espace,
41
* nom de l’item modifié entre parenthèses,
42
* un deux- points (<notextile>:</notextile>) sans espace avec l’item précédent,
43
* 1 espace,
44
* le texte du changement en anglais, commençant par une majuscule, au présent,
45
* un point (.)
46
47
Ex. :
48
> Modification ajouté manuellement
49 40 Patrice Nadeau
50
51
    git commit -m "usart.c (usart_Init): Add a new variable ctr."
52
53 1 Patrice Nadeau
> Modification par un éditeur texte
54
55 40 Patrice Nadeau
    git commit
56
57 17 Patrice Nadeau
Si les commit sont fait sans l’option **-m**, chaque fichier DOIT être séparé par une ligne vide.
58 1 Patrice Nadeau
59 17 Patrice Nadeau
## Code source
60 1 Patrice Nadeau
61
Les différents type de langage et de script décrit dans ce SOP.
62
63 17 Patrice Nadeau
### Généralités
64 1 Patrice Nadeau
65 17 Patrice Nadeau
#### Langue
66 1 Patrice Nadeau
67
La langue (macros, variables, fonctions, commentaires, etc...) DOIT être l’anglais.
68
69 17 Patrice Nadeau
#### Commentaires
70 1 Patrice Nadeau
71
Les commentaires DOIVENT être :
72 17 Patrice Nadeau
73 1 Patrice Nadeau
* sur la ligne précédent l’item à documenter
74
* en minuscules et commencer par une majuscule
75
76 17 Patrice Nadeau
77 1 Patrice Nadeau
#### Nombre magique
78 17 Patrice Nadeau
79 40 Patrice Nadeau
L’utilisation de [nombre magique](:http://en.wikipedia.org/wiki/Magic_number_%28programming%29#Unnamed_numerical_constants) ne DOIT PAS être utilisé directement dans le code.
80 1 Patrice Nadeau
Il DOIVENT être définis dans une macro ou une variable globale.
81
82 17 Patrice Nadeau
## C
83 1 Patrice Nadeau
84
Le langage C, version C99 (ISO/IEC 9899:1999) utilisé avec le compilateur GCC.
85
86 17 Patrice Nadeau
### Commentaires
87 1 Patrice Nadeau
88
Les commentaires ne devant pas être inclus dans une documentation, DOIVENT être de style « C » :
89
90 17 Patrice Nadeau
	/* Une seule ligne... */
91 1 Patrice Nadeau
92 17 Patrice Nadeau
	...
93 1 Patrice Nadeau
94 17 Patrice Nadeau
	/*
95
	* Sur
96
	* plusieurs
97
	* lignes
98 1 Patrice Nadeau
	*/
99
100 17 Patrice Nadeau
### Doxygen
101 1 Patrice Nadeau
102 17 Patrice Nadeau
Chaque item DOIT être documentés de manière à générer une documentation avec le logiciel [Doxygen](http://www.stack.nl/~dimitri/doxygen/index.html).
103 1 Patrice Nadeau
104
Seulement les items définis dans les fichiers d’en-tête sont documentés par défaut.
105
Un commentaire Doxygen commence par *<notextile> /** </notextile>* , le compilateur le comprenant comme un commentaire ordinaire.
106
107
Les règles typographiques du [[SOP_000-Documentation]] s’appliquent :
108 17 Patrice Nadeau
109 44 Patrice Nadeau
* Gras (**@b**) : Items devant être inscrit tel quel.
110
* Italique & emphase (**@e**) : Items à remplacer par un choix ou nécessitant une attention particulière.
111 1 Patrice Nadeau
112
> Doxygen version &ge; 1.8.8 : Le bogue "737472":https://bugzilla.gnome.org/show_bug.cgi?id=737472 oblige de forcer le langage de la fonction dans l’exemple si on ne veut pas de numéro de ligne.
113
114
Les items DOIVENT être inscrit dans cet ordre :
115 6 Patrice Nadeau
116 17 Patrice Nadeau
	/**
117
	* @brief Short description
118
	* @param[in,out] var Description. @n Possible values :
119
	* − @b value1
120
	* − @b value2
121
	* @return
122
	* @retval @b value Description
123
	* @par Example :
124
	* Example Title
125
	* @code{.c}
126
	* ...
127
	* @endcode
128
	* @pre Requirements
129
	* @post Changes after the call to this function
130
	* @see See also ...
131
	* @note
132
	* @warning
133
	* @bug
134
	* @todo
135 1 Patrice Nadeau
	*/
136
137
Des *@todo*, *@warning* et *@bug* supplémentaires PEUVENT être ajoutés dans le code.
138
L’item *@brief* DOIT toujours exister.
139
140 17 Patrice Nadeau
### Code
141 1 Patrice Nadeau
142
Le code est dans le style K&R, variante 1TBS
143 17 Patrice Nadeau
144 1 Patrice Nadeau
* Le « tab » DOIT être équivalent à 4 espaces.
145
* Le « backslah » DOIT être utilisé pour les lignes de plus de 80 caractères.
146
* Une instruction par ligne.
147
* Un espace avant et après un opérateur sauf pour les opérateurs « "unary":http://en.wikipedia.org/wiki/Unary_operation ».
148
149
One True Brace Style
150 25 Patrice Nadeau
151
    int fonction (void)
152 17 Patrice Nadeau
	{
153 25 Patrice Nadeau
		int x;
154
		/* the comment goes here, before the loop */
155
		if (var != 1) {
156
			x = x + 1;
157
			y++;
158
			printf("This is a long\
159
		line that should be splitted");
160
		} else {
161
			/** @warning this is a Doxygen warning */
162
			x--;
163
		}
164
		return(0);
165 17 Patrice Nadeau
	}
166
167 1 Patrice Nadeau
#### Fichier entête
168 17 Patrice Nadeau
169 1 Patrice Nadeau
Avertissement
170
>Le gabarit template.h DOIT être utilisé.
171
172 25 Patrice Nadeau
Les fichiers « header » DOIVENT contenir les déclarations des fonctions, macros et la partie « mainpage » de Doxygen.
173 1 Patrice Nadeau
174
Le nom du fichier DOIT être composé de la manière suivante :
175
176 17 Patrice Nadeau
* en minuscule
177 1 Patrice Nadeau
* 8 caractères maximum
178
* l’extension DOIT être *.h*
179
180
Une définition macro DOIT être faite pour éviter de ré-inclure le fichier.
181
La macro DOIT être dans le format *_fichier_h*
182 25 Patrice Nadeau
183
    #ifndef _usart_h
184
    #define _usart_h
185 1 Patrice Nadeau
	...
186 25 Patrice Nadeau
    #endif /*_usart.h*/
187 1 Patrice Nadeau
188 25 Patrice Nadeau
189 1 Patrice Nadeau
#### Fichier source
190 17 Patrice Nadeau
191 1 Patrice Nadeau
Le nom du fichier DOIT être composé de la manière suivante :
192 25 Patrice Nadeau
193 1 Patrice Nadeau
* en minuscule
194
* 8 caractères maximum
195
* l’extension DOIT être *.c*
196
197 17 Patrice Nadeau
#### Librairies
198 1 Patrice Nadeau
199
Fichiers comprenant plusieurs déclarations et définitions reliés entre eux.
200
201
* Le nom DOIT respecter les standards ([[SOP_001-Programmation#Fichiers-Entêtes|1]] & [[SOP_001-Programmation#Fichiers-Sources|2]]) et être significatifs.
202
* Un fichier d’entête DOIT toujours exister.
203
* Les items sont précédés du nom de la librairie (minuscule) et séparés par un « underscore » (_).
204
205
L’utilisation de macros DOIT être utilisé au lieu de constates globales.
206
Il NE DEVRAIT PAS exister de de variables globales.
207
208
#### Déclarations locales
209 17 Patrice Nadeau
210 1 Patrice Nadeau
Une déclaration n’ayant qu’une visibilité locale DOIT être précédé d’un « underscore » (_) et être de classe *static*.
211
212
213 25 Patrice Nadeau
    /**
214
    * @brief Local function
215
    **/
216
    static void _LocalFunc(void)
217
    {
218
        ...
219
        return;
220
    }
221
222 1 Patrice Nadeau
#### Items désuets
223 17 Patrice Nadeau
224 1 Patrice Nadeau
Les déclarations ne devant plus être utilisés, DOIVENT générer un message lors de la compilation (*-Wall*) si un appel est effectué.
225
226 27 Patrice Nadeau
L’attribut ** __attribute__((deprecated)) ** DOIT être ajouté à la déclaration.
227 1 Patrice Nadeau
La documentation DOIT indiquer les substituts à utiliser.
228
229 25 Patrice Nadeau
    /**
230
    * @brief OldFunction
231
    * @detail will generate a warning if used
232
    * @see @b NewFunction
233
    */
234
    int OldFunction(void) __attribute__((deprecated));
235
236 1 Patrice Nadeau
#### Constantes
237 17 Patrice Nadeau
238 1 Patrice Nadeau
La déclaration DOIT inclure aussi la définition.
239
240
Utilisé au lieu d’une macro quand le type ou la visibilité de la variable doit être définis.
241 25 Patrice Nadeau
242 1 Patrice Nadeau
* En majuscule
243
* Séparé par un «underscore» (_) si contient plusieurs mots
244
* De classe _static_ ou _extern_ selon le besoin
245
246 29 Patrice Nadeau
Ex. :
247
248 26 Patrice Nadeau
    /** 
249
     * @name List of constants
250
     * @{
251
     */
252 1 Patrice Nadeau
253 26 Patrice Nadeau
    /**
254
    * @brief Local const
255
    */
256
    static int _PI = 3.15;
257
    /**
258
    * @brief The initialization string of the project
259
    */
260
    static const char INIT_STR[6] = {'P', 'O', 'W', 'E', 'R'};
261
    /**
262
    * @brief Global const in the random library
263
    */
264
    extern int random_MAX = 25;
265 1 Patrice Nadeau
266 26 Patrice Nadeau
    /**
267 1 Patrice Nadeau
     * @}
268 28 Patrice Nadeau
     */
269 12 Patrice Nadeau
270 17 Patrice Nadeau
#### Typedef
271 12 Patrice Nadeau
272 30 Patrice Nadeau
Format :
273
274 12 Patrice Nadeau
* En minuscule, suivie de *_t*
275 1 Patrice Nadeau
276 12 Patrice Nadeau
Définition de typedef
277 30 Patrice Nadeau
278
    /** Unsigned integer 8 bits */
279
    typedef unsigned int new_t
280
    /** Type of structure in the ds1305 library */
281
    typedef struct {
282 31 Patrice Nadeau
        /** @brief last two digits : &ge; 00, &le; 99 */
283
        uint8_t year;
284
    	/** @brief 01 - 12 */
285
        uint8_t month;
286
        /** @brief 01 - 31 */
287
        uint8_t date;
288
        /** @brief 1 - 7 */
289
        uint8_t day;
290
    	/** @brief 00 - 23 */
291
        uint8_t hours;
292
        /** @brief 00 - 59 */
293
        uint8_t minutes;
294
        /** @brief 00 - 59 */
295
        uint8_t seconds;
296 30 Patrice Nadeau
    } ds1305_time_t;
297 1 Patrice Nadeau
298
#### Variables
299
300
Format
301
* En minuscule.
302
* Séparé par un « underscore » (_) si contient plusieurs mots.
303
304
Définition de variables
305
306 40 Patrice Nadeau
    /** @brief Local variable */
307
    int _ctr;
308
    /** @brief Global variable from the random librairy */
309
    int random_ctr;
310
311 1 Patrice Nadeau
#### Structures
312
313
Format
314
* En minuscule, séparé par des «underscores» si nécessaire.
315
316
Définition de structures
317
318 40 Patrice Nadeau
    /**
319
    * @brief Structure for a local menu
320
    * @see MenuSelect
321
    */
322
    struct menu {
323
    /** @brief Character used for the item */
324
    char choice;
325
    /** @brief Description of the item */
326
    char *item;
327
    };
328
329 17 Patrice Nadeau
#### Fonctions
330 1 Patrice Nadeau
331
Le nom est formé d’une lettre majuscule pour chacune des premières lettres des mots.
332 5 Patrice Nadeau
333
Le nom DOIT être dans un deux formats suivants :
334 32 Patrice Nadeau
335 5 Patrice Nadeau
* ActionItemAttribut, où _Action_ signifie :
336 1 Patrice Nadeau
** *Get* : Lis un registre
337 5 Patrice Nadeau
** *Read*, *Write* : Lis ou écris dans un fichier
338 1 Patrice Nadeau
** *Set* : Écris une valeur prédéfini dans un registre
339
** *Init* : Fonction d’initialisation
340
* isItemEtat
341
** *is* : Verifie si _Item_ est dans l’état _Etat_
342
343
Exception
344
> Les fonctions définies dans une librairie de bas niveau pour du matériel (« driver »). Dans ce cas, le nom définis dans le « datasheet » aura préséance. Ex. ReadRegister.
345
346
Une fonction DEVRAIT retourner une valeur. 
347
348
Dans le cas d'un « oui/non », la valeur DOIT être :
349
350 32 Patrice Nadeau
* Succès : **0**
351
* Erreur : **1**
352
353
> L'utilisation d'un type booléen (*true* & *false*) est permise avec **<stbool.h>** (C99).
354
355 1 Patrice Nadeau
Dans le cas d'une fonction retournant un pointeur :
356
357 32 Patrice Nadeau
* Erreur : **NULL**
358
* Autre valeur  : adresse du pointeur
359 1 Patrice Nadeau
360 32 Patrice Nadeau
361 1 Patrice Nadeau
Définition de fonctions
362 32 Patrice Nadeau
363
    /**
364
    * @brief Check if a timer is set
365
    * @param[in] nb Timer number. @n Possible values :
366
    * − @b TIMER_1
367
    * − @b TIMER_2
368
    * @return
369
    * @retval true Timer @e nb is set
370
    * @retval false Timer @e nb is NOT set
371
    * @par Example :
372
    * Check if the timer is set
373
    * @code{.c}
374
    * ...
375
    * result = isTimerSet();
376
    * ...
377
    * @endcode
378
    * @pre TimerInit
379
    **/
380
    static bool isTimerSet(uint8_t nb);
381
    /**
382
    * @brief Set the led to green
383
    **/
384
    SetLedColor(GREEN);
385 1 Patrice Nadeau
    /**
386 32 Patrice Nadeau
    * @brief Set register of the chip XYZ
387 1 Patrice Nadeau
    *
388 32 Patrice Nadeau
    * The name does not follow the standards but does match the datatsheet
389
    * This is a local function not meant to be called outside this librairy
390
    **/
391 1 Patrice Nadeau
    static void _WriteReg(void);
392
393
394
### Macros
395
396
Les directives du préprocesseur C.
397 17 Patrice Nadeau
398 1 Patrice Nadeau
* Utilisé dans le code source et les fichiers entête.
399
* DOIT toujours commencer à la colonne 0.
400
401
#### include
402 23 Patrice Nadeau
403 1 Patrice Nadeau
Pour inclure d’autres fichier comme les fichiers entête.
404
>N’est pas documenté dans Doxygen.
405
406
    #### ifdef / ifndef
407 23 Patrice Nadeau
408
Surtout utiliser pour des options de compilation sur différentes plateforme.
409
>N’est pas documenté dans Doxygen.
410 1 Patrice Nadeau
411 40 Patrice Nadeau
    #ifndef usart_AVR
412 1 Patrice Nadeau
413 40 Patrice Nadeau
        #error "usart.h is not supported on this AVR !"
414 24 Patrice Nadeau
415
    #endif
416 17 Patrice Nadeau
417 1 Patrice Nadeau
418
#### error
419
420
Affiche une erreur et arrête la compilation
421 24 Patrice Nadeau
>N’est pas documenté dans Doxygen.
422
423 34 Patrice Nadeau
    #ifndef __test__
424 33 Patrice Nadeau
425 34 Patrice Nadeau
        #error "Error !"
426 33 Patrice Nadeau
427 37 Patrice Nadeau
    #endif
428 1 Patrice Nadeau
429
#### #warning
430
431
Affiche une erreur mais n’arrête la compilation
432
>N’est pas documenté dans Doxygen.
433
434
    #ifndef __test__
435
436 38 Patrice Nadeau
    #warning "Warning !"
437
438 1 Patrice Nadeau
#endif
439 17 Patrice Nadeau
</code></pre>
440 1 Patrice Nadeau
441
#### define 
442
443
Définis une valeur au moment de la compilation.
444 39 Patrice Nadeau
445 1 Patrice Nadeau
* Format
446 39 Patrice Nadeau
    * En majuscule.
447
    * Séparé par un «underscore» si contient plusieurs mots.
448 1 Patrice Nadeau
* Doxygen
449 39 Patrice Nadeau
    * @brief
450
    * @name pour les listes de macros (regroupement dans la documentation)
451 1 Patrice Nadeau
452
Définition de macros
453 39 Patrice Nadeau
454
    /**
455
    * @name Mathematical macros listed together
456
    * @{
457
    */
458
    /** @brief Value for PI */
459
460 40 Patrice Nadeau
    #define _PI 3.14
461
    /** @brief Another number */
462
    #define _MAGIC_NUMBER 42
463
    /**
464
    * @}
465
    */
466
    /** @brief Even parity */
467 1 Patrice Nadeau
468
    #define usart_PARITY_EVEN 'e'
469 17 Patrice Nadeau
470 1 Patrice Nadeau
471
### Atmel AVR
472
473 3 Patrice Nadeau
Particularités pour les micro-contrôleurs AVR d’Atmel.
474 1 Patrice Nadeau
475
* Progmem : Pour mettre une fonction en Flash au lieu de SRAM.
476
** Le nom de la fonction est suivie de *_P*.
477
* main : Ne revient jamais à un niveau supérieur.
478
** Définir la fonction main avec l’attribut *noreturn*.
479
** La boucle sans fin la plus optimisé est le *for (;;)*.
480
* Atomic : Opérations ne devant pas être interrompus.
481
482 22 Patrice Nadeau
Particularités pour AVR
483
484
    /**
485
    * @brief Progmem function
486
    * @return An unsigned 8 bits integer
487 1 Patrice Nadeau
    */
488 22 Patrice Nadeau
    uint_8t PrintString_P()
489
490
    /* main function */
491
    void main(void) __atribute__((noreturn))
492
    {
493
        ...
494
        /* never return */
495 1 Patrice Nadeau
        for (;;) {
496
        }
497 22 Patrice Nadeau
    }
498 21 Patrice Nadeau
499 1 Patrice Nadeau
    /* atomic operations */
500
501 40 Patrice Nadeau
    #ifndef S_SPLINT_S
502
    ATOMIC_BLOCK(ATOMIC_RESTORESTATE) {
503
    /* 
504
    * operations that must not be interupted
505
    * like loading a 16 bit register with a 8 bit register 
506
    */
507
    }
508 18 Patrice Nadeau
509
    #endif
510 1 Patrice Nadeau
511 17 Patrice Nadeau
512 18 Patrice Nadeau
### Distribution
513
514 1 Patrice Nadeau
Les fichiers suivants DOIVENT être inclus dans une distribution en format *tar.gz* : 
515
516
* ChangeLog
517
* README
518
* Files.lst
519
* Makefile
520
* Makefile.mk
521
* LICENSE.txt
522
* *.c
523
* *.h
524
* projet.pdf (généré par Doxygen)
525
526 18 Patrice Nadeau
Avec mon makefile :
527
528 1 Patrice Nadeau
    make dist
529
530
### Modifications
531
532
Un changement à un fichier (source ou en-tête), doit se refléter dans _Git_.
533
534 18 Patrice Nadeau
Chaque changement est fait avec :
535
536
    git add nom_fichier
537 1 Patrice Nadeau
    git commit
538 18 Patrice Nadeau
539 1 Patrice Nadeau
La ligne DOIT 
540
541
* être au temps présent
542
* être en anglais
543 18 Patrice Nadeau
* se termine par un point
544 1 Patrice Nadeau
* être dans le format suivant :
545
    > La partie _section_ est facultative
546 18 Patrice Nadeau
547
548
    fichier1 (fonction) <section>: 
549
    Ajoute une description au temps présent.
550
    Décrire les bogues réglés si il y en avaient.
551 17 Patrice Nadeau
552 1 Patrice Nadeau
553
### Changelog
554
555
La somme de toutes les modification doivent apparaitre dans un fichier « changelog ».
556 18 Patrice Nadeau
> Le standard seras celui GNU : http://www.gnu.org/prep/standards/html_node/Change-Logs.html#Change-Logs
557 1 Patrice Nadeau
558 18 Patrice Nadeau
Ce fichier doit s'appeler **ChangeLog** et DOIT être généré à partir de _Git_ (les doubles espaces ne sont pas une erreur de frappe :
559
560 1 Patrice Nadeau
    git log --no-merges --format="%ad  %an  <%aE> %n * %B" --date=short > ChangeLog
561
   
562 17 Patrice Nadeau
### Validation du code
563 18 Patrice Nadeau
564 1 Patrice Nadeau
Le logiciel _splint_ est utilisé.
565
566
* Un « typecast » DOIT être utilisé lorsque détecté.
567
* L’utilisation du typecast *void* DOIT être utilisé lorsque qu’une fonction retourne un résultat non utilisé.
568
569 17 Patrice Nadeau
## Makefile
570 1 Patrice Nadeau
571 17 Patrice Nadeau
## Nagios
572 1 Patrice Nadeau
573 17 Patrice Nadeau
### Plugins
574 1 Patrice Nadeau
575
https://nagios-plugins.org/doc/guidelines.html
576
577
Un message d'une ligne (< 80 caractères) DOIT être retourné via _STDOUT_ dans le format
578 18 Patrice Nadeau
> *SERVICE STATUS:* texte
579
580 1 Patrice Nadeau
Les codes de retour sont les suivants :
581
582
|_. Valeur |_. Service Status |_. Description |
583
| 0 | OK | Le service fonctionne |
584
| 1 | Warning | Le service fonctionne, problème avec le seuil de la valeur _Warning_ |
585
| 2 | Critical | Le service ne fonctionne pas ou problème avec le seuil de la valeur _Critical_  |
586 18 Patrice Nadeau
| 3 | Unknow | Arguments non valides ou erreur interne (fork, tcp socket)|
587
588 1 Patrice Nadeau
Les arguments suivants DOIVENT être fournis :
589
590
* *-H* (*--hostname*) :
591
* *-w* (*--warning*) :
592
* *-c* (*--critical*) :
593
* *-V* (*--version*) :
594
* *-h* (*--help*) :
595
596
L'argument _--help_ DOIT aussi appeler l'argument _--version_.
597 18 Patrice Nadeau
598 1 Patrice Nadeau
En _C_, les fonctions suivantes DOIT être utilisées :
599 17 Patrice Nadeau
600 1 Patrice Nadeau
* _print_revision_ (utils.c)
601
* _print_help_
602
* _getopt_long_ (getopt.h)
603
604
## Puppet
605
606
### Généralités
607 18 Patrice Nadeau
608 1 Patrice Nadeau
Inspiré des recommandations disponible au http://docs.puppetlabs.com/guides/style_guide.html.
609 18 Patrice Nadeau
610 1 Patrice Nadeau
* Tabulation : 2 espaces
611
* Largeur : 80 caractères (« backslah » (\) pour séparer une longue ligne).
612 18 Patrice Nadeau
* Commentaires : Style #
613
* Guillemets
614
    * Simple : Pour une « string » sans variables.
615 1 Patrice Nadeau
    * Double : Pour une « string » avec variables ayant besoin d’être extrapolé.
616
        * La variable doit être entourée des symboles *<notextile>{</notextile>* et *<notextile>}</notextile>*.
617
* Nom des ressources : DOIVENT être entouré du symbole *<notextile> ’ </notextile>*.
618
* Alignement de => : DOIT être aligné dans un même paragraphe.
619
* Ordre : Si l’attribut _ensure_ doit être inclus, il DOIT être le premier.
620
* Lien symbolique : DOIT être déclaré avec *ensure => link*
621
622
Ex. :
623
624
    file { '/var/log/syslog':
625 18 Patrice Nadeau
    ensure => link,
626
    target => '/var/log/messages',
627 1 Patrice Nadeau
    }
628
629
* File mode : 
630
    * 4 chiffres
631
    * simple guillemet
632 18 Patrice Nadeau
* Variables
633
    * lettres
634 1 Patrice Nadeau
    * chiffres
635
    * « underscore »
636
637
### Documentation
638 18 Patrice Nadeau
639
http://docs.puppetlabs.com/learning/modules2.html#module-documentation
640
641 1 Patrice Nadeau
Format Rdoc (http://rdoc.rubyforge.org/RDoc/Markup.html) :
642 18 Patrice Nadeau
643
* Bloc de commentaires qui commence sur la première ligne du fichier
644
* Titre avec le symbole *<notextile>=</notextile>*
645
* Séparation avec le symbole *<notextile>-</notextile>*
646 1 Patrice Nadeau
* Emphase (mot entouré du symbole)
647 18 Patrice Nadeau
    * * : gras
648 1 Patrice Nadeau
    * _ : souligné
649
    * + : Police de caractères pour le code
650
* Sections
651
    * = Class:
652
    * == Parameters:
653 18 Patrice Nadeau
    * == Requires:
654
    * == Sample Usage:
655 1 Patrice Nadeau
* Classe
656
    * Une classe par fichier « manifest »
657
658 17 Patrice Nadeau
## Script
659 1 Patrice Nadeau
660
### Bash
661
662 40 Patrice Nadeau
    #/bin/bash
663 1 Patrice Nadeau
664 40 Patrice Nadeau
    function print_revision {
665
    }
666 1 Patrice Nadeau
667 40 Patrice Nadeau
    function print_help {
668
        print_revision
669
    }
670
    
671 1 Patrice Nadeau
### Perl
672
673
### PowerShell
674 17 Patrice Nadeau
675 1 Patrice Nadeau
Version 4.0. Supporte :
676 17 Patrice Nadeau
677 1 Patrice Nadeau
* Windows 8.1 (natif)
678
* Windows Server 2012 R2 (natif)
679
* Windows 7 SP1
680 17 Patrice Nadeau
* Windows Server 2008 R2 SP1
681 1 Patrice Nadeau
* Windows Server 2012
682
683
#### Fichier
684
685 41 Patrice Nadeau
Le fichier DOIT être composé de la manière suivante :
686
687 1 Patrice Nadeau
* L’extension est .ps1
688
* Une longue ligne peux être séparée avec un « back tick » (‘).
689
690
#### Commentaires
691
692 20 Patrice Nadeau
L’aide est accéder par _Get-Help_
693
694
695
	#REQUIRES -Version 2.0
696
	<#
697
	.SYNOPSIS
698
	A brief description of the function or script.
699
	This keyword can be used only once in each topic.
700
	.DESCRIPTION
701
	A detailed description of the function or script.
702
	This keyword can be used only once in each topic.
703
	.NOTES
704
	File Name
705
	: xxxx.ps1
706
	Author
707
	:
708
	Prerequisite
709
	: PowerShell V2 over Vista and upper.
710
	Copyright 2011 -
711
	.LINK
712
	Script posted over:
713
	http://
714
	.EXAMPLE
715
	Example 1
716
	.EXAMPLE
717
	Example 2
718
	#>
719
720 1 Patrice Nadeau
721
722
## Vim
723 19 Patrice Nadeau
724
* Entête (en commentaires)
725
    * Titre
726
    * Last Change:
727 1 Patrice Nadeau
    * Maintainer:
728 19 Patrice Nadeau
    * License: This file is placed in the public domain.
729
* Autre mots reconnus
730
    * BUG: (Error:)
731
    * TODO:
732 1 Patrice Nadeau
    * Note:
733
    * FIXME
734
735
## Références
736
737 20 Patrice Nadeau
Références ayant servis à ce document.
738 19 Patrice Nadeau
739 1 Patrice Nadeau
[ChangeLog](http://www.gnu.org/prep/standards/html_node/Change-Logs.html#Change-Logs)
740
[GNU deprecated attribute](http://gcc.gnu.org/onlinedocs/gcc-3.2.3/gcc/Type-Attributes.html)