GraphQL.NET Analyzer Documentation
This documentation provides an overview of the analyzers that have been included
in GraphQL.NET and how to configure them using the .editorconfig
file.
Introduction
Analyzers in GraphQL.NET are tools that help you identify and address potential issues or improvements in your GraphQL code. This documentation covers currently available analyzers and code fixes, along with the methods to configure them.
Included Analyzers
1. FieldBuilderAnalyzer
This analyzer focuses on replacing obsolete methods involving field building. It aims to enhance code clarity and consistency by updating the way fields are defined. The primary transformation performed by this analyzer is as follows:
Replace:
Field(name: "name", description..., resolver: ...)
With:
Field("name").Description(...).Resolve(...)
2. FieldNameAnalyzer
The FieldNameAnalyzer
detects the usage of the obsolete Name
method on the
field and connection builders and helps to rewrite the code to use builder
creating methods that accept the name as an argument.
Replace:
Field<TGraphType>().Name("name")
Connection<TGraphType, TSourceType>().Name("name")
With:
Field<TGraphType>("name")
Connection<TGraphType, TSourceType>("name")
3. ResolverAnalyzer
The ResolverAnalyzer
focuses on identifying incorrect usage of resolver
methods. It ensures that resolver methods are used only on output graph types
and flags usage on other types as errors. Additionally, it offers a code fix
that removes these incorrect usages.
4. InputGraphTypeAnalyzer
The analyzer verifies the input source type can be constructed and input graph type fields can be mapped to the source type during deserialization process.
5. FieldArgumentAnalyzer
The analyzer detects an obsolete Argument
method usage and offers a code fix
to automatically replace it with with another Argument
overload.
6. AwaitableResolverAnalyzer
The analyzer detects awaitable resolver delegates used in sync Resolve
or
ResolveScoped
methods and provides a code fix to replace them with an
appropriate async version.
7. NotAGraphTypeAnalyzer
The analyzer identifies instances of incorrectly using GraphType
as generic
type argument, where the type argument should not be of type IGraphType
.
8. OneOfAnalyzer
The analyzer validates the correct definition of the OneOf
input object
fields.
Configuration in .editorconfig
Certain analyzers and code fixes offer configuration options that control when the rule is applied and how the automatic code fix executes code adjustments. Refer to the specific documentation page for each analyzer to understand the available configuration options and their application methods.
Set rule severity
You can set the severity for analyzer rules in .editorconfig
file with the
following syntax:
dotnet_diagnostic.<rule ID>.severity = <severity>
For example
dotnet_diagnostic.GQL001.severity = none
Note: configuration keys are case insensitive
For more information about analyzers configuration see Code Analysis Configuration Overview