Skip to content
lucas-v edited this page Sep 13, 2013 · 37 revisions

Exporter les modules du projet modifiés à la volée lors d'une sauvegarde

Piste : Utiliser la propriété Saved de VBComponent, et identifier les modules à exporter dans la méthode WorkBook_BeforeSave du fichier Excel contenant le projet.

Pas de Git Commit.

Demander pour les modules du projet qui ne serait pas déclarés dans vtkConfiguration ? Si oui il faut les déclarer à la volée, ou bien une fonction séparée pour les ajouter avant, et dans l'export il n'y a qu'un avertissement.

Tâches à réaliser

  • décider comment traiter les modules présents mais non listés dans la configuration. Fait : on ne les exporte pas et on ne demande pas.
  • faire une fonction pour exporter une configuration (utiliser ExportModulesFromAnotherProject) avec un paramètre optionnel onlyModified (vrai par défaut ?), ou bien ajouter ce paramètre à la fonction existante. Bien tester le comportement (pas de module modifié, un ou plusieurs modules modifiés). Il faudra sans doute créer un nouveau template Excel, ou modifier celui existant mais dans ce cas il faudra modifier des tests existant car la feuille vtkConfiguration ne correspondant pas au contenu réel du fichier Fait
  • Faire un test qui importe un nouveau module (est-il considéré comme sauvegardé ?) Fait
  • Ajouter un handler d'événement BeforeSave dans la version de test de ThisWorkBook, celle de VBAToolKit_DEV. Ce handler doit appeler la fonction précédente. Fait
  • Ajouter des tests de fonctionnement du handler en provoquant une sauvegarde du fichier Excel de Test Fait
  • Lors de la création d'un projet, insérer un handler dans le ThisWorkBook du nouveau projet (le plus simple est d'ajouter les lignes de code "à la main"). Ce handler devra appeler la fonction d'export en précisant le nom du projet VBAToolKit Fait
  • Regénérer l'AddIn et vérifier que les tests de VBAToolKit_DEV continuent à fonctionner Fait
  • Tester l'AddIn à partir d'un Excel propre ; vérifier qu'un nouveau module et un module modifiés sont automatiquement exportésà la sauvegarde du fichier Excel (test manuel) Fait
  • Documenter ce comportement dans la partie utilisateur du Wiki (qu'est ce que ça fait) Fait
  • Documenter ce comportement dans la partie technique du Wiki (comment ça marche) Fait

Proposer des fonctions utilitaires pour les projets

VBAToolKit.testPath, VBAToolKit.getTestFileFromTemplate, VBAToolKit.getTestFolderFromTemplate, VBAToolKit.resetTestFolder

Travail entamé. Ne pas oublier de mettre le wiki à jour.

Post-Traitements Export

Des noms de variables sont écrits différemment par différentes versions d'Excel/VBIDE. Il faut normaliser les exports afin de ne pas polluer les commits par des modifications qui n'en sont pas. L'idée est de vérifier les noms juste après un export : le fichier exporté est lu, transformé, réécrit puis renommé. La liste des noms souvent en erreur sevra être stockée quelque part (en dur dans le code pour l'instant), s'agissant toujours d'erreurs de casse, il suffit de stocker les noms avec la casse correcte. La recherche sera donc insensible à la casse. Exemple de variables à traiter Err, wb.

La [grammaire de VB](http://msdn.microsoft.com/fr-fr/library/aa711636(v=vs.71\).aspx) est disponible sur le site de Microsoft.

Un autre post-traitement possible est l'insertion de la ligne de spécification d'un défaut, par exemple juste après un commentaire prédéfini 'VTK_DEFAULT_PROPERTY

TO DO

  • Méthode sans analyseur syntaxique, algorithme simple mais lourd (NB : même les commentaires sont normalisés)

    • Ecrire une fonction qui génère un array de String à partir d'un mot un d'un tableau de séparateurs. Ces String doivent représenter le token à filtrer. Typiquement, le mot entre une tabulation et un espace, le mot entre 2 espaces, le mot entre une tabulation et un point, un espace et un point, parenthèses, virgules, etc.

      • idée : faire un tableau qui liste les séparateurs, générer toutes les combinaisons possibles séparateur mot séparateur à partir de ce tableau

      • Tests

        • avec un array de paramètres court, tester la valeur des valeurs de l'array de retour.
        • valeurs limites (array de séparateurs vide, string vide, etc)
    • Ecrire une fonction qui cherche chaque String de cet Array dans une autre String (de manière case-insensitive), et qui remplace chaque occurrence par la version en bonne casse.

      • Tests

        • Appliquer la fonction sur des string courtes dont on peut expliciter l'état final attendu. Plusieurs cas :
          • mots séparés par des espaces, des points, des retours à la ligne, des tabulations, des parenthèses, etc.)
    • Ecrire la fonction précédente avec comme paramètre un fichier

      • On se sert de la fonction vtkTextFileReader pour passer le fichier en String, et on traite la String comme on sait le faire.
      • Tests
        • Un seul test : faire un fichier avec les Strings de la fonction d'avant, et un autre avec les résultats qu'on attend. Comparer les 2 fichiers, où les Strings du contenu de ces 2 fichiers.
    • Hardcoder les listes de variables et de séparateurs de VBAToolKit quelque part (probablement dans le module où on a écrit les fonctions)

    • Décider si on intègre la fonction de normalisation directement dans "exportConfiguration" ou si on normalise tous les fichiers dans un second temps.

      • Si on fait dans ExportConfiguration, il faut vérifier que les deux fonctions sont bien interfacées (test : mettre une ligne avec une variable mal écrite dans un module, exporter la configuration, vérifier que ce module a bien été modifié)
      • Si on fait dans une fonctions séparée (normalizeConfiguration), on test les fichiers des modules après la normalisation.
    • Vérifier qu'un prep run général se passe sans encombre.

    • Regénérer l'add-in.

    • Re vérifier que le prep run général se passe sans encombre.

    • Documenter la feature dans le wiki : ce qui se passe, comment ça se passe.

(technique) Représenter vtkConfiguration sous forme de XML

  • il faudrait compléter la configuration pour pouvoir se passer de gérer les Excels sous Git (Title, Comment, ReferencesGUID, ...)
  • Il faudra ajouter un paramètre par module pour définir la méthode par défaut éventuellement (pour ajouter l'attribut à l'export ou à l'import)
  • Ce serait une version 2.0 de vtkConfiguration, il faudra tester la compatibilité ascendante (garder des templates de tests dans les deux versions) - inutile en fait mais permettra de mettre au point le procédé de compatibilité ascendante
  • Cette configuration pourrait contenir aussi un nom de template de fichier (sans macros, ni formulaires) à partir desquels regénérer les versions DEV et Delivery, pour les projets qui ont besoin de feuilles Excel particulières

Lancer seulement les tests de la classe Tester active d'un clic sur un bouton

Lancer seulement les tests d'une liste de classes Tester. Peut remplacer l'item précédent (possibilité d'une liste ne contenant qu'un seul module) ou être en plus.

Importer les modules d'une configuration

Fait en partie, pour la version Delivery de VBAToolKit. À terminer car ne recrée correctement que la version Delivery, et à tester complètement.
Utiliser des fichiers Excel template s'ils sont disponibles (ou bien configuration) -> dans Template reproduire l'arborescence Project - Delivery - Test

Convertir un projet en VBAToolkit

L'objectif est d'aider à convertir un projet, ou un simple fichier Excel, en un projet VBAToolKit. Cette fonctionnalité pourra être décomposée :

  • convertir un fichier Excel simple
  • récupérer dans le projet des fichiers d'accompagnement (Delivery ou Template)
  • récupérer un projet composé de plusieurs fichiers Excel. Ce qui produira vraisemblablement un fichier DEV et plusieurs fichiers Delivery (plusieurs configurations VBAToolkit). Il faudra prévoir un outil qui permette de détecter les composants communs à plusieurs configurations, et d'indiquer les différences entre les différentes implémentations d'un composant commun (déjà de savoir s'il y a des différences).

Exporter une configuration

Ajouter un Module

Type (Module, classe, formulaire), Nom

Ajouter une configuration

Le nom du projet dans Excel dépend du nom de la configuration

Le plus simple est de créer une configuration en clonant une configuration existante

Modifier une configuration

Activer les références dans le fichier Delivery

Les mêmes références que dans le fichier de projet

Supprimer un module

Supprimer une configuration

Créer une classe Tester à partir du Template

Gérer les tags de version dans les noms de fichiers et constantes internes (??)

Faire un module de mise à jour automatique ou à la demande

Ajouter une interface permettant de sélectionner les tests unitaires à exécuter

Ajouter des fonctions utilitaires, par exemple pour les tests

Dans une Lib vtkLib et/ou vtkTestLib qui serait intégrée au projet à sa création.

Intégrer la possibilité de faire des projets Word, Access ou PowerPoint

Clone this wiki locally