에서 ICodeElement를 얻을이 같은 자바 스타일의 매력적인 브래킷 stylecop에서 사용자 지정 규칙을 코딩하는 시도 :어떻게 CsToken
public void myfunction(int argument) {
body();
//.......
}
내 실제 코드는 다음과 같습니다
public override void AnalyzeDocument(CodeDocument document) {
var csharpDocument = (CsDocument)document;
for (var tokenNode = csharpDocument.Tokens.First; tokenNode != null; tokenNode = tokenNode.Next) {
if (tokenNode.Value.CsTokenType == CsTokenType.OpenCurlyBracket) {
if (tokenNode.Value.LineNumber == tokenNode.Previous.Value.LineNumber
|| tokenNode.Value.LineNumber == tokenNode.Next.Value.LineNumber) {
this.AddViolation(tokenNode.Value,
tokenNode.Value.LineNumber,
"OpenCurlyBracketBadLocation");
}
}
if (tokenNode.Value.CsTokenType == CsTokenType.CloseCurlyBracket) {
if (tokenNode.Value.LineNumber != tokenNode.Previous.Value.LineNumber
|| tokenNode.Value.LineNumber == tokenNode.Next.Value.LineNumber) {
this.AddViolation(tokenNode.Value,
tokenNode.Value.LineNumber,
"CloseCurlyBracketBadLocation");
}
}
}
그러나이 라인 :
this.AddViolation(tokenNode.Value,
tokenNode.Value.LineNumber,
"CloseCurlyBracketBadLocation");
함수 인수 형식이 일치하지 않기 때문에 컴파일되지 않습니다. 첫 번째 인수는 ICodeElement가 필요하고 CsToken이 있습니다 ... 그러나 SDK에서이 방법을 사용했습니다 ... 그럼 누구든지 해결책을 알고 있습니까? 아니면 더 좋은 방법일까요?