프로젝트에서 분석기가 표시하는 다양한 경고와 오류를 처리하는 방법에 대한 규칙을 직접 정의하려면 규칙 집합 파일을 생성하면 됩니다. 커스텀 규칙 집을 생성하는 방법에 대한 자세한 내용은 Microsoft의 Visual Studio 기술 자료에서 커스텀 규칙 집합 생성 방법을 참조하십시오.
Assets 루트 폴더에 Default.ruleset이라는 이름의 규칙 집합 파일을 넣습니다. Default.ruleset에 정의하는 규칙은 사전 정의된 모든 어셈블리(예: Assembly-CSharp.dll)와 .asmdef 파일을 사용하여 빌드된 모든 어셈블리에 적용됩니다.
사전 정의된 어셈블리에 대한 Default.ruleset의 규칙을 오버라이드하려면 이름이 [PredefinedAssemblyName].ruleset인 루트 폴더에 .ruleset 파일을 생성합니다. 예를 들어, Assembly-CSharp.ruleset의 규칙은 Assembly-CSharp.dll의 코드에 적용됩니다. 루트 폴더 내에서 허용되는 .ruleset 파일은 다음과 같습니다.
Default.rulesetAssembly-CSharp.rulesetAssembly-CSharp-firstpass.rulesetAssembly-CSharp-Editor.rulesetAssembly-CSharp-Editor-firstpass.rulesetUnity에서 규칙 집합 파일을 테스트하려면 다음 단계를 따르십시오.
RethrowError.cs의 복제본을 저장합니다.<?xml version="1.0" encoding="utf-8"?>
<RuleSet Name="New Rule Set" Description=" " ToolsVersion="10.0">
<Rules AnalyzerId="ErrorProne.NET.CodeAnalyzers" RuleNamespace="ErrorProne.NET.CodeAnalyzers">
<Rule Id="ERP021" Action="Error" />
<Rule Id="EPC12" Action="None" />
</Rules>
</RuleSet>
Default.ruleset 파일은 다음 규칙을 정의합니다.
프로젝트에 규칙 집합 파일을 추가한 후 규칙이 적용되어야 하는 어셈블리에 있는 모든 스크립트를 다시 임포트합니다. 그러면 Unity가 새 규칙 집합 파일을 사용하여 어셈블리를 다시 컴파일합니다. 다시 컴파일한 후 콘솔 창에 두 개의 메시지가 표시됩니다.
Assets\Subfolder\RethrowError.cs(15,19): error ERP021: Incorrect exception propagation. Use throw; instead.
Assets\RethrowError.cs(15,19): error ERP021: Incorrect exception propagation. Use throw; instead.
Unity는 Default.ruleset에 정의된 규칙을 Assets/RethrowError.cs와 Assets/Subfolder/RethrowError.cs 모두에 적용합니다.
Assets/Subfolder에서 .ruleset 파일을 만들고 원하는 이름(여기서는 exampleHello.ruleset)을 지정합니다.
<?xml version="1.0" encoding="utf-8"?>
<RuleSet Name="New Rule Set" Description=" " ToolsVersion="10.0">
<Rules AnalyzerId="ErrorProne.NET.CodeAnalyzers" RuleNamespace="ErrorProne.NET.CodeAnalyzers">
<Rule Id="ERP021" Action="Info" />
<Rule Id="EPC12" Action="Info" />
</Rules>
</RuleSet>
이 새로운 Hello.ruleset 파일은 경고나 오류로 처리하지 않고 EPC12와 ERP021을 콘솔에 출력하도록 Unity에 지시합니다.
Unity가 프로젝트를 다시 컴파일하면 다음의 메시지가 콘솔 창에 표시됩니다.
Assets\Subfolder\RethrowError.cs(14,23): info EPC12: Suspicious exception handling: only e.Message is observed in exception block.
Assets\Subfolder\RethrowError.cs(15,19): info ERP021: Incorrect exception propagation. Use throw; instead.
Assets\RethrowError.cs(15,19): error ERP021: Incorrect exception propagation. Use throw; instead.
Default.ruleset의 규칙은 여전히 Assets\RethrowError.cs에 적용되지만, Hello.ruleset의 규칙이 오버라이드하기 때문에 Assets\Subfolder\RethrowError.cs에 더 이상 적용되지 않습니다.
허용된 모든 규칙 집합 작업 파일에 대한 자세한 내용은 코드 분석 규칙 집합 에디터 사용에 대한 Visual Studio 기술 자료를 참조하십시오.