Anuncio de Acumatica Acuminator 3.1.1

Acuminator 3.1.1 es una pequeña versión que se concentra en mejoras y correcciones de errores en el análisis estático de código.
Sergey Nikomarov | 21 de febrero de 2023

Acuminador 3.1.1

Nos complace anunciar el lanzamiento de la versión 3.1.1 de Acuminator.

Ya puedes descargar la nueva versión en el Visual Studio Marketplace. Si has instalado previamente la versión beta de Acuminator, es mejor que la elimines antes de instalar la nueva versión.

Acuminator 3.1.1 es una pequeña versión que se concentra en mejoras y correcciones de errores en el análisis estático de código. El enfoque de la actualización es que hemos reelaborado el análisis de atributos de tipo de datos de Acumatica, por ejemplo PXStringAttribute y el cálculo DB Boundness del campo DAC que nos permite mejorar el análisis de DACs y extensiones DAC. En esta versión hemos introducido otras pequeñas mejoras. Por supuesto, también hemos corregido algunos errores.

Análisis de atributos de tipos de datos y cálculo de límites de DB de campos DAC

El análisis de Acuminator de los atributos de tipo de datos de Acumatica se ha reelaborado significativamente:

  • Se ha mejorado el cálculo de las relaciones entre los atributos de Acumatica.
  • Ahora se admite el atributo PXVariantAttribute no vinculado.

Se ha mejorado significativamente el cálculo heurístico de la relación de un campo DAC con la base de datos (lo que denominamos DB boundness):

  • Se ha ampliado el conjunto de posibles valores de delimitación de BD. Anteriormente, Acuminator sólo podía calcular cuatro tipos de límites de la base de datos del campo DAC: NotDefined, Unbound, DbBound y Unknown.
    Ahora Acuminator muestra tres valores más: PXDBScalar, PXDBCalced, Error (para el caso en que Acuminator pueda demostrar que los atributos de tipo de datos en una propiedad de campo DAC están declarados incorrectamente).
  • Los nuevos valores de delimitación de DB se muestran ahora en el Mapa de códigos para DAC y extensiones de DAC. El valor de error se muestra en el mapa de códigos como "Inconsistente".
  • El cálculo de los límites de la base de datos de atributos admite ahora escenarios complejos con atributos:
    • Atributos de agregador de Acumatica. Los atributos agregadores son atributos derivados de la clase PXAggregateAttribute. Se utilizan para combinar en un atributo la funcionalidad de varios atributos.
    • Atributos de tipo de datos híbridos con vinculación mixta a BD. Estos atributos pueden colocarse en propiedades de campo DAC tanto vinculadas como no vinculadas. Suelen tener el indicador IsDBField (o NonDB en el caso de PXDBLocalizableStringAttribute) que configura la vinculación a BD del atributo. El indicador IsDBField puede tener un valor por defecto, pero también puede establecerse explícitamente en la declaración del atributo en una propiedad de campo DAC o en un atributo agregador. Tenemos varios atributos de este tipo: PeriodIDAttribute, PXEntityAttribute, y atributos derivados de ellos.
    • Combinaciones de los dos escenarios anteriores. La heurística combina el límite de la BD por defecto conocido del atributo con el límite de la BD establecido explícitamente en la aplicación del atributo en una propiedad de campo DAC o en un atributo agregador.
  • La delimitación de BD del campo DAC se calcula como una combinación de valores de delimitación de BD de todos los atributos declarados en la propiedad del campo DAC. Tenga en cuenta que el análisis aún no admite escenarios complejos con PXMergeAttributesAttribute y otros atributos utilizados en Acumatica Framework para personalizar los atributos aplicados a la propiedad de campo DAC.

Estos cambios en nuestro análisis de atributos nos permitieron mejorar la precisión y el rendimiento en los siguientes diagnósticos.

Se ha mejorado la precisión y el rendimiento de los siguientes diagnósticos: PX1019, PX1020, PX1021, PX1023, PX1030, PX1095.

Mejoras en Acuminator Diagnostics

En Acuminator 3.1.1, se han implementado las siguientes mejoras:

  • El diagnóstico PX1042 se ha modificado para reflejar los cambios en la plataforma Acumatica. A partir de Acumatica ERP 2023 R1. El tiempo de ejecución de Acumatica se ha modificado para permitir la ejecución de consultas de base de datos en el controlador de eventos RowSelecting sin un ámbito de conexión independiente. Por lo tanto, en Acumatica ERP 2023 R1 y versiones posteriores, este diagnóstico está deshabilitado en Acuminator.
  • El diagnóstico PX1095 admite ahora los atributos PXDBCalcedAttribute y PXDBScalarAttribute. Cualquiera de ellos, cuando se utiliza en una propiedad de campo DAC, requiere un atributo de tipo de datos no enlazado como PXStringAttribute colocado en la misma propiedad de campo DAC. Anteriormente, Acuminator sólo comprobaba PXDBCalcedAttribute. Ahora se comprueban ambos atributos.
  • Se han mejorado los diagnósticos de localización PX1050, PX1051 y PX1053 para que sean compatibles con PX.Objects.Common.Exceptions.PXExceptionInfoclass. Esta clase representa un DTO utilizado frecuentemente en la lógica empresarial de Acumatica para almacenar datos sobre excepciones. Los diagnósticos de localización la tratarán de la misma forma que tratan las excepciones de Acumatica Framework derivadas de PXException clase de la siguiente manera:
    • Comprueba que no se pasan cadenas codificadas como argumentos a las llamadas del constructor de PXExceptionInfo. Sólo se pueden pasar constantes de cadena localizables al constructor de PXExceptionInfo.
    • No informar de error cuando la propiedad PXExceptionInfo.MessageFormat se pasa a APIs comprobadas por diagnósticos de localización de Acuminator, como llamadas a constructores de PXException.
  • Se ha modificado el diagnóstico PX1016 para que no compruebe el método IsActive en las extensiones de gráficos que incluyen la anulación del método Configuremethod con la configuración de pantalla y los flujos de trabajo.
  • El diagnóstico PX1018 se ha actualizado para no mostrar una advertencia sobre los gráficos abstractos y los gráficos genéricos que tienen un parámetro de tipo genérico como su DAC primario.

Corrección de errores

En esta versión de Acuminator se han corregido los siguientes errores:

  • La versión publicada 3.1 del paquete nuget Acuminator.Analyzers estaba dañada y no funcionaba. El paquete nuget se ha corregido en esta versión.
  • Otras correcciones de errores en el análisis estático de código y pequeñas optimizaciones de rendimiento.

Puede encontrar todos los detalles sobre esta versión en las Notas de la versión de Acuminator aquí:
https://github.com/Acumatica/Acuminator/blob/dev/docs/ReleaseNotes.md

¡Feliz codificación!

Autor del blog

Sergey se unió a Acumatica en 2017 y comenzó como desarrollador de aplicaciones en el equipo de OEM, donde realizó gran parte del desarrollo del marco de Acumatica, además de varias personalizaciones. Un ejemplo es una gran personalización para el control presupuestario automatizado para Censof, un socio OEM. En 2019, se unió al equipo de Desarrollo de Plataformas como desarrollador de sistemas. Y más recientemente, Sergey es responsable de Acuminator y nuestro desarrollo y mantenimiento de RVT. Participante en varios hackathons internos de Acumatica, Sergey formó parte del equipo ganador -junto con Vladimir Panchenko- que creó Acuminator. En un hackathon posterior, su equipo lo amplió aún más al desarrollar el Mapa de código con algunas otras mejoras para Acuminator.

Reciba las actualizaciones del blog en su bandeja de entrada.