Code Diagnostics
- 2 minutes to read
The code analysis feature helps you detect XAF-specific errors in your code as you type. If a code analyzer finds rule violations, they are reported in the code editor (as a squiggle under the invalid code) and in the Error List window.
Note
Code analysis works only with C# code.
Enable Code Analysis
To turn on code analysis, add the DevExpress.ExpressApp.CodeAnalysis
NuGet package to all projects of your XAF solution. The Solution Wizard adds this package to newly created .NET 6+ projects.
Code analysis requires Visual Studio 2019 for .NET Framework projects.
Disable Code Analysis
To turn off code analysis, remove the DevExpress.ExpressApp.CodeAnalysis
NuGet package from your project.
You can suppress the warning messages as described in the following Microsoft article: How to suppress code analysis warnings.
// ...
namespace MySolution.Module.Controllers {
#pragma warning disable XAF0005 // XAF Controller classes should be public
class MyViewController : ViewController {
#pragma warning restore XAF0005 // XAF Controller classes should be public
// ...
}
}
Supported Diagnostics
- XAF0001: Implement XPO business class constructors correctly
- XAF0002: XPO business class properties should not be overridden
- XAF0003: XPO business classes should be public
- XAF0004: Implement XAF controller constructors correctly
- XAF0005: XAF controller classes should be public
- XAF0009: Properties decorated with the RuleRequiredFieldAttribute should be of nullable or reference type
- XAF0010: Set the DelayedAttribute.UpdateModifiedOnly property to True
- XAF0011: Implement the delayed property correctly
- XAF0012: Avoid calling the XafApplication.CreateObjectSpace() method overload without the Type parameter
- XAF0013: Avoid reading the XafApplication.ConnectionString property
- XAF0014: The property with the Association attribute must have a correct unique pair
- XAF0015: Association must not have the Aggregated attribute if it is paired to the "many" end of the association
- XAF0016: Descendants of NonPersistentBaseObject and NonPersistentLiteObject must be decorated with the DomainComponent attribute
- XAF0018: Avoid creating a new Session/UnitOfWork with parameterless constructors in XPO-based projects
- XAF0019: Apply ExplicitLoadingAttribute only to reference properties
- XAF0020: Avoid applying NonPersistentAttribute to properties without a public setter
- XAF0021: Create new controllers correctly
- XAF0022: Avoid using the ShowViewStrategy.ShowView method
- XAF0023: Do not implement IObjectSpaceLink in the XPO classes
- XAF0024: Do not implement IXafEntityObject in the XPO classes