Hi everyone,
We are pleased to announce that the new Acuminator 4.0.1 has been released.
This is a hotfix release that addresses feedback that we received after the release of Acuminator 4.0.0. It includes several targeted improvements and bug fixes. You can download Acuminator from its page on Visual Studio Marketplace:
https://marketplace.visualstudio.com/items?itemName=Acumatica.Acuminator
Alternatively, you can download Acuminator and the Acuminator Console Runner tool from GitHub: https://github.com/Acumatica/Acuminator/releases/tag/v4.0.1
Full release notes with the complete change list are available here:
https://github.com/Acumatica/Acuminator/releases/tag/v4.0.1
Highlights
- New PX1039 diagnostic (ISV Mode only)
New rule that forbids usage of the "PX" namespace and its sub-namespaces for ISVs, OEMs, partners, and other external developers. These namespaces are reserved for Acumatica internal use. This diagnostic is enabled only when ISV Mode is turned on in Visual Studio: "Tools -> Options -> Acuminator -> General -> Enable additional diagnostics for ISV".
- Acuminator Console Runner:
--non-interactiveflag
New--non-interactivecommand-line flag to the Acuminator Console Runner. By default, Console Runner supports interactive cancellation viaCtrl + C. The new flag disables interactive cancellation, making Acuminator Console Runner better suited for non-interactive CI/CD environments (for example, Azure Pipelines).
- PX1065 improvements (missing BQL fields in DACs)
Significant reduction of redundant alerts for DAC extensions and derived DACs. Previously, the PX1065 diagnostic always displayed errors for DAC extensions and derived DACs if their base DAC had a DAC field with a missing BQL field. As a result, for some DAC extensions Acuminator displayed a lot of alerts about issues in the base DAC. This was reported by several extension authors as distracting. Thus, the PX1065 diagnostic was changed to report problematic DAC fields from the base DAC only if they are customized by the DAC extension or overridden by the derived DAC. - Improved detection for fully unbound DACs
Adds new heuristics that significantly reduce false positives in PX1036, PX1069, and PX1110 diagnostics. A DAC is now considered fully unbound based on these rules:
- A DAC with no DAC fields, or only unbound fields, is always fully unbound.
- A DAC marked withPX.Data.PXVirtualAttributeis always fully unbound (even if it has DB-bound fields).
- A DAC marked withPX.Data.PXProjectionAttribute,PX.Data.PXAccumulatorAttribute, or any other attribute derived fromPX.Data.PXDBInterceptorAttributeis always considered DB-bound (even if it has only unbound fields).
- A DAC with a DB-boundNoteIDfield is considered fully unbound ifNoteIDis the only DB-bound field and all other DAC fields are unbound.
Additional Fixes
- Fixed the detection of view delegates in graphs and graph extensions to correctly recognize delegates in rare cases.
- Improved support for
PXOverride-related diagnostics and code fixes when customizing members that useref,out,in, andref readonlyparameters and return types. - Fixed false positives:
- PX1000 forPXOverridemethods that override action delegates of graph actions.
- PX1023 for DAC fields usingPX.Data.PXDBPackedIntegerArrayAttribute. - Improved documentation for PX1079, PX1080, and PX1101 diagnostics.
Acknowledgements
Thank you to everyone who contributed to making this release possible, including:
- Ekaterina Androsova for the help with Acuminator documentation and release notes.
- Vladimir Panchenko for reviews and help with the Acuminator release process.
- Andrey Budaev and Build team for the help with the Acuminator release process.
- Dmitrii Naumov, Evgeny Afanasiev, and Stanislav Lesin for useful information about the current Acumatica Framework rules and best practices.
- Everyone else who helped and may not have been mentioned above
