# Programmation Python/Analyse statique de programmes
## Partie 1 - Introduction

* Avant-propos à l'attention des non-programmeurs
* Introduction
* Installation
* Éditeurs
* Programmer en deux minutes
** une messagerie instantanée
** un programme interfacé avec Wikipédia
** un serveur Web

## Partie 2 - Le langage

* Afficher un texte
* Structure d'un programme
* Variables
* Opérateurs
* Structures de contrôle
* Instructions répétitives
* Types
** Numériques
** Booléens
** Chaines de caractères
** Listes
** Tuples
** Dictionnaires
** Dates
** Ensembles
* Fonctions
* Modules
* Exercices
** Palindrome
* Regex
* Programmation orientée objet pour les non-programmeurs
* Classes
* Classes et Interfaces graphiques
* Fichiers
* Exceptions
* Bases de données
** Gestion
* L'interface CGI
* Applications web
* Réseau
* Threads

## Partie 3 - Les bibliothèques

* Bibliothèques pour Python
* L'interface graphique
* Utilisation de fenêtres et de graphismes
** Tkinter
** Widgets
** Turtle
* Les threads
* XML
* JSON
* Tests
* Analyse statique de programmes
* Fabric
* Le Web
** Django
** Karrigell
** Aiohttp

## Partie 1 - Introduction

* Avant-propos à l'attention des non-programmeurs
* Introduction
* Installation
* Éditeurs
* Programmer en deux minutes
** une messagerie instantanée
** un programme interfacé avec Wikipédia
** un serveur Web

## Partie 2 - Le langage

* Afficher un texte
* Structure d'un programme
* Variables
* Opérateurs
* Structures de contrôle
* Instructions répétitives
* Types
** Numériques
** Booléens
** Chaines de caractères
** Listes
** Tuples
** Dictionnaires
** Dates
** Ensembles
* Fonctions
* Modules
* Exercices
** Palindrome
* Regex
* Programmation orientée objet pour les non-programmeurs
* Classes
* Classes et Interfaces graphiques
* Fichiers
* Exceptions
* Bases de données
** Gestion
* L'interface CGI
* Applications web
* Réseau
* Threads

## Partie 3 - Les bibliothèques

* Bibliothèques pour Python
* L'interface graphique
* Utilisation de fenêtres et de graphismes
** Tkinter
** Widgets
** Turtle
* Les threads
* XML
* JSON
* Tests
* Analyse statique de programmes
* Fabric
* Le Web
** Django
** Karrigell
** Aiohttp
[ Modifier le sommaire ]
Python offre plusieurs outils d'analyse statique de programmes.

## pylint

Cet analyseur de code statique vérifie les potentiels erreurs (ex : variable non déclarée) et le formatage du code pour le rendre plus lisible par les humains.
Installation :
Lancement de l'analyse, qui donne une note sur 10 :

## flake8

Idem.
Installation :
Lancement :

## autopep8

Utilitaire de formatage du code selon la norme https://peps.python.org/pep-0008/.
Installation :
Lancement du reformatage d'un fichier :
Lancement du reformatage du dossier courant récursivement :

## Sourcery

Il s'agit d'un outil avec deux composants :
* Un plugin de PyCharm pour suggérer des améliorations en cours de frappe.
* Un scanner en ligne de commande capable de corriger les erreurs lui-même.

### Installation

Puis dans la racine du programme :
Cela crée un .sourcery.yaml permettant d'ajuster la configuration du scanner, par exemple pour ignorer certaines recommandations ou certains fichiers.

### Utilisation

Pour scanner :
Pour scanner et modifier un seul fichier :

## Références

* ↑ https://pypi.org/project/pylint/
* ↑ https://flake8.pycqa.org/en/latest/