可以通过 Tools > Options > Text Editor > C# > Code Style > Naming 在 VS 中配置命名规则违规,用于驼峰命名法,并使用意外前缀(如
_IsVisible
)标记局部变量和参数或 m_Name
,同时允许它们用于私有字段。
IDE1006 违反命名规则:不需要前缀“m_” IDE1006 违反命名规则:不需要前缀“_”
但是,局部变量/参数错误地以 m 为前缀,但没有下划线,例如
public void Method(int mValue)
{
bool mLocalVar = false;
}
不要被标记。
命名规则是否可以配置为将不带 _ 的 m 前缀也视为违规?
您可以创建自己的代码分析器。
创建代码分析器项目:
在第一个分析器项目中,修改函数
public override void Initialize(AnalysisContext context)
{
context.ConfigureGeneratedCodeAnalysis(GeneratedCodeAnalysisFlags.None);
context.EnableConcurrentExecution();
context.RegisterSyntaxNodeAction(AnalyzeNode, Microsoft.CodeAnalysis.CSharp.SyntaxKind.VariableDeclarator);
}
private static void AnalyzeNode(SyntaxNodeAnalysisContext context)
{
var variableDeclaration = (Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclaratorSyntax)context.Node;
var variableName = variableDeclaration.Identifier.Text;
if (variableName.StartsWith("m"))
{
var diagnostic = Diagnostic.Create(Rule, variableDeclaration.GetLocation(), variableName);
context.ReportDiagnostic(diagnostic);
}
}
设置警告或错误:
private static readonly DiagnosticDescriptor Rule = new DiagnosticDescriptor(DiagnosticId, Title, MessageFormat, Category, DiagnosticSeverity.Warning, isEnabledByDefault: true, description: Description);
修改resx文件中的文本:
在代码修复项目中:
评论修复代码:
// Register a code action that will invoke the fix.
//context.RegisterCodeFix(
// CodeAction.Create(
// title: CodeFixResources.CodeFixTitle,
// createChangedSolution: c => MakeUppercaseAsync(context.Document, declaration, c),
// equivalenceKey: nameof(CodeFixResources.CodeFixTitle)),
// diagnostic);
选择 vsix 项目作为启动项目进行测试: