Annonce d’Acumatica Acuminator 3.1.1

Acuminator 3.1.1 est une petite version qui se concentre sur les améliorations et les corrections de bogues dans l’analyse de code statique.
Sergueï Nikomarov | 21 février 2023

Acuminateur 3.1.1

Nous sommes heureux d’annoncer Acuminator version 3.1.1 a été libéré!

Vous pouvez maintenant télécharger la nouvelle version sur Visual Studio Marketplace. Si vous avez déjà installé la version bêta d’Acuminator, il est préférable de la supprimer avant d’installer la nouvelle version.

Acuminator 3.1.1 est une petite version qui se concentre sur les améliorations et les corrections de bogues dans l’analyse de code statique. L’objectif de la mise à jour est que nous avons retravaillé l’analyse des attributs de type de données Acumatica, par exemple PXStringAttribute et le calcul de la limite de base de données du champ DAC qui nous permet d’améliorer l’analyse des DAC et des extensions DAC. Il y a quelques autres petites améliorations que nous avons apportées dans cette version.  Bien sûr, nous avons également corrigé certains bugs.

Analyse des attributs de type de données et calcul de la limite de base de données de champ DAC

L’analyse Acuminator des attributs de type de données Acumatica a été considérablement retravaillée:

  • Le calcul des relations entre les attributs d’Acumatica a été amélioré
  • Le PXVariantAttribute non lié est maintenant pris en charge

Le calcul heuristique de la relation d’un champ DAC avec la base de données (que nous appelons la limite db) a été considérablement amélioré :

  • L’ensemble des valeurs de limite de base de données possibles a été étendu. Auparavant, Acuminator ne pouvait calculer que quatre types de limite de base de données du champ DAC : NotDefined, Unbound, DbBound et Unknown.
    Maintenant, Acuminator affiche trois autres valeurs : PXDBScalar, PXDBCalced, Error (pour le cas où Acuminator peut prouver que les attributs de type de données sur une propriété de champ DAC sont déclarés de manière incorrecte).
  • Les nouvelles valeurs d’emprise de base de données sont maintenant affichées dans le mappage de code pour les DAC et les extensions de DAC. La valeur d’erreur est affichée dans le mappée de code sous la forme « Incohérent ».
  • Le calcul de la limite de base de données de l’attribut prend désormais en charge un scénario complexe impliquant des attributs :
    • Attributs de l’agrégateur Acumatica. Les attributs de l’agrégateur sont des attributs dérivés de la classe PXAggregateAttribute . Ils sont utilisés pour combiner en un attribut la fonctionnalité de plusieurs attributs.
    • Attributs de type de données hybrides avec une limite de base de données mixte.  Ces attributs peuvent être placés sur les propriétés de champ DAC liées et non liées. Ils ont généralement l’indicateur IsDBField (ou NonDB dans le cas de PXDBLocalizableStringAttribute) qui configure la limite de base de données de l’attribut. L’indicateur IsDBField peut avoir une valeur par défaut, il peut également être explicitement défini sur la déclaration de l’attribut sur une propriété de champ DAC ou sur un attribut agrégateur. Nous avons plusieurs attributs de ce type : PeriodIDAttribute, PXEntityAttribute et les attributs qui en découlent.
    • Combinaisons des deux scénarios précédents. L’heuristique combine l’emprise de base de données par défaut connue de l’attribut avec l’emprise de base de données explicitement définie sur l’application de l’attribut sur une propriété de champ DAC ou sur un attribut d’agrégateur.
  • L’emprise de base de données du champ DAC est calculée comme une combinaison de valeurs d’emprise de base de données de tous les attributs déclarés sur la propriété de champ DAC. Notez que l’analyse ne prend pas en charge les scénarios encore complexes avec PXMergeAttributesAttribute et d’autres attributs utilisés dans Acumatica Framework pour personnaliser les attributs appliqués à la propriété de champ DAC.

Ces changements dans notre analyse des attributs nous ont permis d’améliorer la précision et les performances dans les diagnostics suivants.

La précision et les performances des diagnostics suivants ont été améliorées : PX1019, PX1020, PX1021, PX1023, PX1030, PX1095.

Améliorations dans le diagnostic de l’acuminateur

Dans Acuminator 3.1.1, les améliorations suivantes ont été mises en œuvre :

  • Le diagnostic PX1042 a été modifié pour refléter les changements de la plate-forme Acumatica. En commençant par Acumatica ERP 2023 R1. Le runtime Acumatica a été modifié pour permettre l’exécution de requêtes de base de données dans le gestionnaire d’événements RowSelecting sans étendue de connexion distincte. Par conséquent, dans Acumatica ERP 2023 R1 et les versions ultérieures, ce diagnostic est désactivé dans Acuminator.
  • Le diagnostic PX1095 prend désormais en charge les attributs PXDBCalcedAttribute et PXDBScalarAttribute. Chacun d’entre eux, lorsqu’il est utilisé sur une propriété de champ DAC, nécessite un attribut de type de données non lié tel que PXStringAttribute placé sur la même propriété de champ DAC. Précédemment, Acuminator a vérifié seulement PXDBCalcedAttribute. Maintenant, les deux attributs sont vérifiés.
  • Les diagnostics de localisation PX1050, PX1051 et PX1053 ont été améliorés pour prendre en charge le PX. Objects.Common.Exceptions.PXExceptionInfoclass. Cette classe représente un DTO fréquemment utilisé dans la logique métier Acumatica pour stocker des données sur les exceptions. Les diagnostics de localisation le traiteront de la même manière qu’ils traitent les exceptions du cadre Acumatica dérivées de PXException classe comme suit:
    • Vérifiez que les chaînes codées en dur ne sont pas transmises en tant qu’arguments aux appels du constructeur PXExceptionInfo . Seules les constantes de chaîne localisables peuvent être transmises au constructeur PXExceptionInfo .
    • Ne signalez pas d’erreur lorsque la propriété PXExceptionInfo.MessageFormat est transmise aux API vérifiées par les diagnostics de localisation Acuminator, tels que les appels de constructeur PXException .
  • Le diagnostic PX1016 a été modifié pour ne pas vérifier la méthode IsActive dans les extensions de graphique qui incluent le remplacement de configuremethod avec la configuration de l’écran et les flux de travail.
  • Le diagnostic PX1018 a été mis à jour pour ne pas afficher d’avertissement sur les graphiques abstraits et les graphiques génériques qui ont un paramètre de type générique comme DAC principal.

Corrections de bogues

Dans cette version d’Acuminator, les bogues suivants ont été corrigés:

  • La version publiée 3.1 du paquet nuget Acuminator.Analyzers a été corrompue et n’a pas fonctionné. Le paquet nuget est corrigé dans cette version.
  • Autres corrections de bogues dans l’analyse de code statique et de petites optimisations de performances.

Vous pouvez trouver tous les détails sur cette version dans les notes de mise à jour d’Acuminator ici:
https://github.com/Acumatica/Acuminator/blob/dev/docs/ReleaseNotes.md

Bon codage!

Auteur du blog

Sergey a rejoint Acumatica en 2017 et a commencé en tant que développeur d’applications dans l’équipe OEM, où il a fait beaucoup de développement Acumatica Framework - en plus de faire plusieurs personnalisations. Un exemple est une grande personnalisation pour le contrôle budgétaire automatisé pour Censof, un partenaire OEM. En 2019, il a rejoint l’équipe de développement de la plate-forme en tant que développeur de systèmes. Et plus récemment, Sergey est responsable de l’acuminator et de notre développement et maintenance RVT. Participant à un certain nombre de hackathons internes d’Acumatica, Sergey faisait partie de l’équipe gagnante - avec Vladimir Panchenko - qui a créé Acuminator. Lors d’un hackathon ultérieur, son équipe l’a étendu davantage en développant la carte de code avec d’autres améliorations à Acuminator.

Recevez des mises à jour de blog dans votre boîte de réception.