Annonce de Acumatica Acuminator 3.1.1

Acuminator 3.1.1 est une petite version qui se concentre sur des améliorations et des corrections de bogues dans l'analyse statique du code.
Sergey Nikomarov | 21 février 2023

Acuminateur 3.1.1

Nous sommes heureux d'annoncer la sortie de la version 3.1.1 d'Acuminator !

Vous pouvez maintenant télécharger la nouvelle version dans le 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 des améliorations et des corrections de bugs dans l'analyse statique de code. La mise à jour se concentre sur le fait que nous avons retravaillé l'analyse des attributs de type de données Acumatica, par exemple PXStringAttribute et le champ DAC DB Boundness calcul qui nous permet d'améliorer l'analyse des DACs et des extensions de DACs. Il y a quelques autres petites améliorations que nous avons apportées dans cette version. Bien entendu, nous avons également corrigé quelques bogues.

Analyse des attributs des types de données et calcul des limites de la base de données des champs DAC

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

  • Le calcul des relations entre les attributs Acumatica a été amélioré
  • L'attribut PXVariantAttribute non lié est désormais pris en charge.

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

  • L'ensemble des valeurs possibles de DB boundness a été étendu. Auparavant, Acuminator ne pouvait calculer que quatre types de délimitation de la base de données du champ DAC : NotDefined, Unbound, DbBound et Unknown.
    Désormais, Acuminator affiche trois valeurs supplémentaires : 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 de délimitation de la base de données sont désormais affichées dans la carte des codes pour les CED et les extensions de CED. La valeur d'erreur est affichée dans la carte des codes comme "incohérente".
  • Le calcul de la limite de la base de données de l'attribut prend désormais en charge les scénarios complexes impliquant des attributs :
    • Attributs d'agrégateur Acumatica. Les attributs agrégateurs sont des attributs dérivés de la classe PXAggregateAttribute. Ils sont utilisés pour combiner en un seul attribut les fonctionnalités de plusieurs attributs.
    • Attributs de type de données hybrides avec délimitation mixte de la base de données. Ces attributs peuvent être placés sur des propriétés de champ DAC liées et non liées. Ils possèdent généralement l'indicateur IsDBField (ou NonDB dans le cas de PXDBLocalizableStringAttribute) qui configure la délimitation de l'attribut en fonction de la base de données. L'indicateur IsDBField peut avoir une valeur par défaut, mais il peut aussi être explicitement défini dans la déclaration de l'attribut sur une propriété de champ DAC ou sur un attribut d'agrégateur. Nous disposons de plusieurs attributs de ce type : PeriodIDAttribute, PXEntityAttribute, et les attributs qui en sont dérivés.
    • Combinaisons des deux scénarios précédents. L'heuristique combine la délimitation de la base de données par défaut connue de l'attribut avec la délimitation de la base de données explicitement définie dans l'application de l'attribut sur une propriété de champ du CED ou sur un attribut d'agrégateur.
  • Le DB boundness du champ DAC est calculé comme une combinaison des valeurs de DB boundness de tous les attributs déclarés sur la propriété du champ DAC. Notez que cette analyse ne prend pas en charge les scénarios 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 la performance des diagnostics suivants.

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

Améliorations apportées au système de diagnostic Acuminator

Dans Acuminator 3.1.1, les améliorations suivantes ont été apportées :

  • Le diagnostic PX1042 a été modifié pour refléter les changements dans la plateforme Acumatica. A partir d'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 une portée de connexion séparée. 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. Auparavant, Acuminator ne vérifiait que l'attribut PXDBCalcedAttribute. Désormais, les deux attributs sont vérifiés.
  • Les diagnostics de localisation PX1050, PX1051 et PX1053 ont été améliorés pour prendre en charge la classe PX.Objects.Common.Exceptions.PXExceptionInfoclass. Cette classe représente un DTO fréquemment utilisé dans la logique métier d'Acumatica pour stocker des données sur les exceptions. Les diagnostics de localisation la traiteront de la même manière qu'ils traitent les exceptions du Framework Acumatica dérivées de la classe PXException comme suit :
    • Vérifiez que les chaînes codées en dur ne sont pas transmises en tant qu'arguments aux appels du constructeur de PXExceptionInfo. Seules les constantes de chaînes localisables peuvent être transmises au constructeur de PXExceptionInfo.
    • Ne pas signaler d'erreur lorsque la propriété PXExceptionInfo.MessageFormat est transmise aux API vérifiées par les diagnostics de localisation d'Acuminator, tels que les appels au constructeur de PXException.
  • Le diagnostic PX1016 a été modifié pour ne pas vérifier la méthode IsActive dans les extensions de graphes qui incluent le remplacement de la méthode Configure avec la configuration de l'écran et les flux de travail.
  • Le diagnostic du PX1018 a été mis à jour pour ne plus afficher d'avertissement concernant les graphes abstraits et les graphes génériques qui ont un paramètre de type générique comme DAC primaire.

Corrections de bugs

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

  • La version 3.1 publiée du paquet nuget Acuminator.Analyzers était corrompue et ne fonctionnait pas. Le paquet nuget est corrigé dans cette version.
  • D'autres corrections de bogues dans l'analyse statique du code et de petites optimisations de performance.

Vous pouvez trouver tous les détails de 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 plateforme en tant que développeur de systèmes. Et plus récemment, Sergey est responsable d'Acuminator et de notre développement et maintenance RVT. Participant à un certain nombre de hackathons internes d'Acumatica, Sergey a fait partie de l'équipe gagnante - avec Vladimir Panchenko - qui a créé Acuminator. Lors d'un hackathon ultérieur, son équipe a poursuivi le développement de la carte de code ainsi que d'autres améliorations d'Acuminator.

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