Cet article traite des sujets suivants :
Présentation des règles de validation d'app
Une app doit subir différents tests avant d'être validée. Ces tests garantissent la qualité, les performances et la stabilité d'ETS. Les résultats des tests rapportés au développeur lorsqu'une version d'app est télétransmise pour validation. (voir validation d'app)
Les vérifications sont réparties en 2 niveaux de sévérité :
Erreur : Ces tests sont sans ambiguïté. Tout test raté empêche automatiquement la validation de l'app.
Attention : Ces tests indiquent qu'il pourrait y avoir une violation de certaines règles. L'app doit être inspectée manuellement. L'app peut être validée si une inspection manuelle de ce type montre que la règle n'a pas été enfreinte. Dans le cas contraire, si la règle est violée, la validation est refusée.
Comme une app peut contenir assemblages supplémentaires, comme un composant d'enregistrement ou un assemblage de compression, les vérifications doivent s'y ajuster. Certaines règles devant être suivies strictement par l'app elle-même peuvent être des avertissements pour certains autres assemblages. Par exemple, alors que l'app doit être compilée par rapport à .NET framework 4.0, les composants de tierces parties peuvent être compilés par rapport à un .NET framework différent. Sinon, l'utilisation p. ex. de log4net ne serait pas du tout possible. De l'autre côté, relâcher trop la sévérité des règles pour des assemblages supplémentaires n'est pas une option, car cela inviterait les développeurs à externaliser le code posant problème à ces assemblages supplémentaires.
La solution à ce problème est de diviser les contrôles des assemblages en 2 :
tous les assemblages du développeur d'app proprement dit doivent respecter l'interprétation stricte des règles. Cela fait en sorte que l'app proprement dite soit déployée selon des règles strictes (de même que les éventuels composants du même développeur).
Lors d'un second contrôle, tous les assemblages de développeurs de tierces parties sont contrôlés. Pour ces assemblages, certaines règles sont vérifiées moins strictement, car il est fort peu probable que le développeur de l'app puisse influencer l'implémentation de ces assemblages. Ces règles moins strictes sont rapportées comme des avertissements et doivent être révisées manuellement avant d'octroyer la validation. Cependant, certaines règles restent strictes, p. ex. l'utilisation de l'accès au bus direct est interdite dans n'importe quelle circonstance.
La liste des règles que chaque app doit suivre est fournie ci-dessous. En outre, une brève description de la façon dont le développeur peut éviter ou résoudre le problème est fournie. La sévérité est fournie pour les deux cas : La version stricte (assemblages développeur d'app) et la version édulcorée (assemblages de développeurs de tierces parties)
Règles de validation d'app
Règles automatiquement vérifiées
- Absence d'un nom fort
- Plus d'un addin ETS trouvé
- Démarrage de procédure externe
- Utilisation de code non géré
- Utilisation d'assemblages KNX interdits
- Impossible de créer une instance de l'app
- Création d'une instance de l'app trop lente
- Connexion directe au bus KNX
- Ficher d'app trop grand
- Fichier d'aide en anglais manquant
- Runtime .Net trop ancien
- L'app n'a pas de version
- L'attribut d'app a une version différente de celle spécifiée dans la version de l'assemblage
- Le conteneur doit contenir un fichier manifeste valide
- Le conteneur ne peut pas contenir d'assemblages SDK
- Utilisation d'une version SDK non officielle
- Connexion SQL détectée
- Utilisation de noms d'espaces suspects détectée
- Assistance en anglais manquante
- ID de l'application inattendu
- ID de fabricant DCA invalide
- Les DCA ne doivent pas utiliser la fonctionnalité interface utilisateur de l'application
- DCA doit supporter x64
- Application utilisant des composants utilisés par ETS5 dans une version différente
- L'assemblage d'application, tel que spécifié dans l'attribut AddInAssembly dans le fichier manifeste, n'a pas été trouvé
ID |
Nom |
Sévérité pour le développeur |
Sévérité pour le développeur de tierce partie |
Description |
Solution |
1 |
Absence d'un nom fort |
Erreur |
Erreur |
Chaque assemblage .Net dans une app ETS doit être signé par un nom fort afin d'éviter les ambiguïtés. |
Ajouter un code à nom fort (fichier snk) à la solution. |
2 |
Plus d'un addin ETS trouvé |
Erreur |
Erreur |
Chaque conteneur etsapp ne peut contenir qu'une seule classe héritant de IEts4Addin et ayant le Systèm.A ddIn.AddInAttribute, ou en d'autres mots: Dans chaque conteneur etsapp, il ne peut y avoir qu'une seule application ETS. |
Supprimez toutes les autres classes héritant d'IEts4App depuis l'app ETS. |
3 |
Démarrage de la procédure externe |
Erreur |
Erreur |
L'app ne peut pas démarrer de procédure externe. |
Supprimez le code démarrant la procédure externe. |
4 |
Utilisation de code non géré. |
Avertissement |
Attention |
L'app utilise des appels à des composants natifs (DLLImport). Cela va entraîner une inspection manuelle. |
Si l'inspection manuelle révèle une utilisation illégale de code non géré, supprimez ces usages. |
5 |
Utilisation d'assemblages KNX interdits |
Erreur |
Erreur |
Les références à des composants KNX ne sont autorisées que si elles font partie de SDK, à savoir Knx.Ets.SDK.*, Knx.Ets.CommonTypes, Knx.Ets. Les ressources communes sont autorisées. Toutes les autres références KNX sont interdites. Les références au framework .Net ou à des assemblages propres sont autorisées. |
Supprimez toutes les utilisations de noms d'espaces interdits. |
6 |
Impossible de créer l'instance de l'app |
Erreur |
s.o. - La règle est vérifiée pour l'app, pas pour chaque assemblage |
Aucune exception ne peut être jetée lors de la création d'une instance de l'app. |
Résolvez le problème qui lance l'exception. |
7 |
Création d'une instance de l'app trop lente |
Erreur |
s.o. - La règle est vérifiée pour l'app, pas pour chaque assemblage |
La création d'une instance de l'app ne peut pas durer plus de 5 secondes. Cela va limiter l'impact négatif de l'app sur les performances ETS5 générales. |
Identifiez la raison du problème de performances, modifiez l'implémentation, de sorte que l'instance puisse être créée dans les 5 secondes. |
8 |
Connexion directe au KNX. |
Erreur |
Erreur |
Les connexions Falcon ne sont pas autorisées. Aucune app n'est autorisée à offrir une connexion directe au bus KNX. |
Supprimez tous les usages d'accès direct au bus KNX. |
9 |
Fichier d'app trop grand |
Erreur |
s.o. - La règle est contrôlée pour l'app ETS, pas pour chaque assemblage. |
La taille maximum du conteneur de l'app ETS est 100 Mo. |
Solution : Réduisez la taille du fichier, p. ex. en supprimant des fichiers supplémentaires, comme des documents PDF, vidéos ou images, ou en réduisant leur taille. |
10 |
Fichier d'aide en anglais maquant |
Erreur |
s.o. - La règle est contrôlée pour l'app ETS, pas pour chaque assemblage |
Au moins un fichier d'aide HTML compilé (*.chm) en anglais doit être fourni. |
Ajoutez un fichier d'aide HTML compilé à l'app ETS. |
11 |
Runtime .NET trop ancien |
Erreur |
Attention |
Tous les assemblages dans l'app ETS doivent être construits avec runtime .NET 4.0. Les versions plus anciennes ne sont pas prises en charge. |
Reconstruisez l'app avec le framework cible .NET Framework 4. |
12 |
L'app n'a pas de version |
Erreur |
s.o. - La règle est vérifiée pour l'app, mais pas pour chaque assemblage. |
L'app doit posséder un numéro de version. Cette version sera utilisée pour identifier les mises à jour disponibles et/ou minimiser le travail lorsqu'une assistance est nécessaire. |
Reconstruisez l'app avec une version de fichier spécifiée. |
13 |
L'attribut de l'Application a une version différente de celle spécifiée dans l'assemblage Version du produit. |
Erreur |
s.o. - La règle est vérifiée pour l'app, mais pas pour chaque assemblage. |
La version de l'application et la version du produit d'assemblage (App DLL) doivent avoir le même numéro. Cette version sera utilisée pour identifier les mises à jour disponibles et/ou minimiser le travail lorsqu'une assistance est nécessaire. |
Reconstruire l'application avec une version spécifiée du produit. |
14 |
Le conteneur doit contenir un fichier manifeste valide |
Erreur |
s.o. - La règle est contrôlée pour l'app ETS, pas pour chaque assemblage. |
Chaque conteneur d'app ETS doit contenir un fichier manifeste valide. |
Ajoutez un fichier manifeste valide au conteneur. |
15 |
Le conteneur ne peut pas contenir d'assemblages SDK |
Erreur |
s.o. - La règle est contrôlée pour l'app ETS, pas pour chaque assemblage. |
Le conteneur de l'app ETS ne peut pas contenir d'assemblages de l'ETS-SDK. |
Supprimez tout assemblage SDK du conteneur. |
16 |
Utilisation d'une version SDK non officielle |
Erreur |
s.o. - La règle est contrôlée pour l'app ETS, pas pour chaque assemblage. |
Il est interdit de publier des conteneurs d'app ETS ayant été construits avec une version non publiée de ETS-SDK. |
Reconstruisez l'app en ne référençant que les fichiers des versions SDK publiées. |
17 |
Connexion SQL détectée |
Avertissement |
Attention |
Un message va être fourni si l'ensemble utilise le nom d'espace SQL (System.Data.SqlClient). Cela entraînera une inspection manuelle. Si l'espace nom SQL est par exemple utilisé pour importer des données depuis une base de données d'accès, cela est autorisé. Toute tentative d'accéder à la base de données ETS4 sans le SDK ObjectModel, que ce soit en lecture ou en écriture, est interdite. |
Si l'inspection manuelle révèle une utilisation illégale du nom d'espace SQL, supprimez ces utilisations. |
18 |
Utilisation de noms d'espaces suspects détectée |
Attention |
Avertissement |
L'utilisation des noms d'espace System.Net.*, System.Data.Sql et System.Web va entraîner une notification. Une inspection manuelle doit vérifier si ces noms d'espace sont utilisés d'une manière correspondant à ces règles d'app ETS. Si ce n'est pas le cas, la validation sera refusée. |
Si l'inspection manuelle révèle une utilisation illégale du nom d'espace SQL, supprimez ces utilisations. |
19 |
Assistance an anglais manquante |
Attention |
s.o. - La règle est contrôlée pour l'app ETS, pas pour chaque assemblage. |
Si l'app fournit une assistance en plusieurs langues, l'anglais doit être parmi les langues prises en charge. La vérification recherche une localisation anglaise pour l'app. Si aucune n'est trouvée, il convient de vérifier manuellement que les textes neutres sont déjà en anglais. |
Ajouter la prise en charge en anglais. |
20 |
ID inattendu de l'application |
erreur |
s.o. - La règle est vérifiée pour l'app, pas pour chaque assemblage |
L'App-ID qui est retourné par l'instance AddIn doit être le même que dans le fichier manifeste AddIn . |
Utilisez le même App-ID dans la classe AddIn et dans le fichier manifeste.
|
21 |
ID de fabricant invalide pour DCA | Erreur |
s.o. - La règle est vérifiée pour l'app, pas pour chaque assemblage |
L'ID du fabricant dans DeviceConfiguration ne correspond pas à l'ID du fabricant de AddIn. | Utilisez le même ID de fabricant pour les identifiants de programme d'application et d'application. |
22 |
Les DCA ne peuvent pas utiliser la fonctionnalité UI de l'Application |
Erreur |
s.o. - La règle est vérifiée pour l'app, pas pour chaque assemblage |
Un DCA ne peut pas utiliser les fonctionnalités suivantes :
|
N'utilisez pas les fonctionnalités d'Add-In dans votre DCA. |
23 |
DCA doit supporter x64 |
Erreur |
s.o. - La règle est vérifiée pour l'app, pas pour chaque assemblage |
Tout DCA doit prendre en charge x64, de sorte que l'ETS ne nécessite pas de fonctionner en mode Compatibilité.
|
Construisez votre application pour prendre en charge x64, et définissez l'Is64BitCompatible dans le manifeste à true.
|
24 |
Application utilisant des composants utilisés par ETS5 dans une version différente |
Avertissement |
s.o. - La règle est vérifiée pour l'application, pas pour chaque assemblage. |
ETS utilise un composant qui est également utilisé par l'application, mais dans une version différente |
Pour éviter tout problème éventuel d'incompatibilité , utilisez la même version de composant qu'ETS |
25 |
L'assemblage de l'application, comme spécifié dans l'attribut AddInAssembly dans le fichier manifeste, n'a pas été trouvé |
Erreur |
s.o. - La règle est vérifiée pour l'application, pas pour chaque assemblage |
L'assemblage de l'application n'a pas été trouvé |
Assurez-vous que l'assemblage de l'application (indiqué dans le fichier manifeste) existe |
Règles devant être formellement confirmées
Ces règles doivent être confirmées manuellement par les développeurs, car la vérification automatique n'est pas possible.
Si le développeur viole une quelconque de ces règles (soit celles vérifiées automatiquement, soit celles confirmées formellement), la validation sera refusée. Si une enfreinte à une des règles est notée après la validation, cette validation peut être révoquée.
Nom | Description | Solution |
Mises à jour possibles uniquement via MyKNX |
Il se peut que l'app n'ait pas de mécanisme de mise à jour propre. Les mises à jour d'une appl sont uniquement disponibles via KNX OLT. Cela empêche la diffusion d'apps non validées. |
Supprimez tout mécanisme utilisé pour mettre à jour l'app en contournant le KNX OLT. |
Aucune connexion SQL à la base de données ETS4 |
Aucune app n'est autorisée à accéder directement à la base de données. |
pouvant accéder directement à la base de données ETS4. |
Les apps ne peuvent pas conserver de données dans le système de fichiers |
|
Supprimez tous les mécanismes stockant directement les données dans le système de fichiers et remplacez-les par l'usage des données d'app du projet. |
Les apps ne peuvent pas fonctionner en mode plein écran |
Une application ne peut pas masquer la fenêtre ETS et agir comme application principale. L'ETS doit toujours être reconnu comme l'application principale. |
Supprimez tout code permettant à l'app de se comporter comme l'application principale. |
L'app doit être soit réactive, soit indiquer le statut occupé |
Si l'application effectue une opération de longue durée, qui fait que l'ETS n'est pas réactif, l'application doit afficher une progression ou un indicateur d'activité |
Utilisez un indicateur d'avancement pour les opérations chronophages. |
L'app ne doit pas se fermer de façon inattendue. |
L'app doit réagir aux exceptions en fournissant un message d'erreur convivial. Après avoir présenté le message, l'app doit continuer à fonctionner. Les messages d'erreur génériques ou insuffisants ne sont pas acceptés, de même que la fermeture inattendue de l'application après des exceptions non traitées. |
Déployez le traitement d'erreur correct présentant des messages conviviaux dans n'importe quelle situation. Assurez-vous qu'aucune exception non traitée ne puisse faire se crasher l'app. |