사용자 지정 fxcop
규칙을 개발하여 기본 클래스 이름으로 끝나는 파생 클래스의 이름을 확인하려고합니다.파생 클래스의 이름을 확인하는 Fxcop 사용자 지정 규칙이 기본 클래스 이름으로 끝납니다
내 주요 관심사는 Fxcop.Sdk
에 특정 클래스가 기본 클래스에서 파생되었는지 여부를 알 수있는 속성이 있습니까? 그렇다면 어떻게?
이 규칙을 어떻게 구현할 수 있습니까?
사용자 지정 fxcop
규칙을 개발하여 기본 클래스 이름으로 끝나는 파생 클래스의 이름을 확인하려고합니다.파생 클래스의 이름을 확인하는 Fxcop 사용자 지정 규칙이 기본 클래스 이름으로 끝납니다
내 주요 관심사는 Fxcop.Sdk
에 특정 클래스가 기본 클래스에서 파생되었는지 여부를 알 수있는 속성이 있습니까? 그렇다면 어떻게?
이 규칙을 어떻게 구현할 수 있습니까?
예, 가능합니다. 다음 이미지를 살펴 보자 : 당신이 여기에서 보는 것은 당신의 FxCop 규칙을 개발할 수있는 도구입니다 introspector에서 스크린 샷입니다
.
각 클래스에서 볼 수 있듯이 BaseType
및 BaseClass
속성이 있습니다. 클래스를 사용하여 클래스가 상속하는지 검사 할 수 있습니다.
내부 검사 모델에서 예를 들어 아무것도 파생되지 않은 클래스는 Object
에서 파생 된 것으로 표시됩니다.
당신은 사람들을 건너 (그리고 다른 가능한 오류) 수 : 같은 요구를 들어
public override ProblemCollection Check(TypeNode type)
{
ClassNode classNode = type as ClassNode;
if (classNode == null)
return;
if (classNode.BaseType == null)
return;
if (classNode.BaseType == FrameworkTypes.Object)
return;
// Namechecking logic
return Problems;
}
, 당신의이 C#의 LINQ 쿼리를 통해 .NET 코드에 대한 사용자 지정 코드 규칙을 작성할 수 도구 NDepend를 사용할 수 있습니다. 면책 조항 :
// <Name>Derived class name must ends with base class name</Name>
warnif count > 0
from t in Application.Types
where t.IsClass
let baseClass = t.BaseClass
where !baseClass.IsThirdParty // Skip all .NET Fx base classes, like System.Object
where !t.SimpleName.EndsWith(baseClass.SimpleName)
select new {t, baseClass }
: 나는
예를 들어, 기본 클래스 이름로 끝나는 파생 클래스의 검사 이름에 사용자 정의 규칙을 작성하는이 도구의 개발자 중 하나입니다, 그것만큼 간단합니다
이러한 규칙은 Visual Studio 내에서 실시간으로 편집하고 각 키 입력 후 즉시 컴파일/실행할 수 있습니다. 200 of such LINQ query rules 약
은, 기본적으로 제공됩니다. CI 프로세스 중에 생성 된 규칙 위반 can be seen live in VisualStudio 또는 in a report.
VS Studio에서 Fxcop.Sdk에 Object에 대한 defination이 포함되지 않은 NodeType.Object의 세 번째 조건문에 오류가 표시됩니다. – TUSWAY
사실 나는 그것을 모자 위쪽에서 썼다. 나는 나의 대답을 편집 할 것이다. – Matthijs
자, 가야합니다. – Matthijs