在Roslyn中,如何查明私有成员变量是否未在课程中使用?
我的任务是评论任何未使用的私有变量。例如:
class Test
{
private int I;// if it's not use then i need to comment it out.
}
答案 0 :(得分:1)
创建语义模型并将其传递给Main方法中的Rewriter类构造函数。
SemanticModel sm = Compilation.Create("StylecopImplementor")
.AddReferences(MetadataReference.CreateAssemblyReference("mscorlib"))
.AddSyntaxTrees(fileTree).GetSemanticModel(fileTree);
Rewriter syntaxwr = new Rewriter(sm);
我将我的语义模型暴露给我的Rewritter类。
class Rewriter : SyntaxRewriter
{
SemanticModel model { get; set; }
IEnumerable<Diagnostic> diagonists;
public Rewriter(SemanticModel pModel)
{
model = pModel;
diagonists = pModel.GetDiagnostics();
}
}
然后我在VisitVariableDeclaration中使用下面的代码。
if (diagonists.Count() > 0)
{
var diagitems = diagonists.Where(d => d.Info.MessageIdentifier.ToString().Equals("CS0168")).ToList();
if (diagitems != null)
{
var ditem = diagitems.Where(d => d.Location.GetLineSpan(false).StartLinePosition.Line == node.GetLocation().GetLineSpan(false).StartLinePosition.Line).FirstOrDefault();
if (ditem != null)
{
node = node.WithLeadingTrivia(Syntax.ParseTrailingTrivia("//"));
}
}
}
return base.VisitVariableDeclaration(node);
如果你的.cs文件没有被使用,它会在你的变量声明中发表评论。
答案 1 :(得分:0)