在Roslyn中,我如何知道私有成員變量是否不在類中使用?如何查找變量聲明不在Roslyn的類中使用?
我有任務來評論任何未使用的私有變量。例如:
class Test
{
private int I;// if it's not use then i need to comment it out.
}
在Roslyn中,我如何知道私有成員變量是否不在類中使用?如何查找變量聲明不在Roslyn的類中使用?
我有任務來評論任何未使用的私有變量。例如:
class Test
{
private int I;// if it's not use then i need to comment it out.
}
創建語義模型並將其傳遞給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.未在聲明位置初始化? 2.沒有在聲明類型內部進行賦值? –
@AlexFilipovici - 我想評論變量,不使用意味着類中的unuse變量。 – KuldipMCA
你有沒有想過如果變量會被其他類使用會發生什麼?你能提供一個例子嗎? –