diff --git a/src/Discord.Net.Analyzers/GuildAccessAnalyzer.cs b/src/Discord.Net.Analyzers/GuildAccessAnalyzer.cs index 473bcee8e..0760d019f 100644 --- a/src/Discord.Net.Analyzers/GuildAccessAnalyzer.cs +++ b/src/Discord.Net.Analyzers/GuildAccessAnalyzer.cs @@ -16,7 +16,7 @@ namespace Discord.Analyzers private const string Title = "Limit command to Guild contexts."; private const string MessageFormat = "Command method '{0}' is accessing 'Context.Guild' but is not restricted to Guild contexts."; private const string Description = "Accessing 'Context.Guild' in a command without limiting the command to run only in guilds."; - private const string Category = "Design"; + private const string Category = "API Usage"; private static DiagnosticDescriptor Rule = new DiagnosticDescriptor(DiagnosticId, Title, MessageFormat, Category, DiagnosticSeverity.Warning, isEnabledByDefault: true, description: Description); diff --git a/src/Discord.Net.Analyzers/docs/DNET0001.md b/src/Discord.Net.Analyzers/docs/DNET0001.md new file mode 100644 index 000000000..0c1b8098f --- /dev/null +++ b/src/Discord.Net.Analyzers/docs/DNET0001.md @@ -0,0 +1,30 @@ +# DNET0001 + + + + + + + + + + + + + + +
TypeNameGuildAccessAnalyzer
CheckIdDNET0001
CategoryAPI Usage
+ +## Cause + +A method identified as a command is accessing `Context.Guild` without the requisite precondition. + +## Rule description + +The value of `Context.Guild` is `null` if a command is invoked in a DM channel. Attempting to access +guild properties in such a case will result in a `NullReferenceException` at runtime. +This exception is entirely avoidable by using the library's provided preconditions. + +## How to fix violations + +Add the precondition `[RequireContext(ContextType.Guild)]` to the command or module class.