2013-02-13 6 views
1

Service ReferencesXml summary errors에서 자동 생성 된 코드와 비슷합니다. 답변을 게시했는데 Service Reference을 자체 프로젝트에 추가 한 다음 Xml 경고와 Stylecop 오류를 완전히 피할 수 있습니다.Stylecop Reference.cs 파일의 오류를 표시하지 않습니다.

그러나 Xml을 으로 설정하여 Internal으로 설정하고 StyleCop 오류가 발생했습니다.

나는 FxCop 버전 10.0을 사용하고 있습니다. 코드 분석 탭에서 내 프로젝트의 속성에서

, 나는에 대한 옵션을 체크 한

보고에서

또한 (단지 관리) 생성 된 코드 에서

억제 결과 Reference.cs 파일에서 생성 된 코드는 다음과 같은 속성으로 꾸며져 있습니다.

[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")] 

.. whi ch Stylecop 그러면 건너 뛰시겠습니까? 이 작동하지 않지만, 난 여전히 생성 된 코드에 대한 StyleCop 오류가 발생하고 있습니다.

편집 : 또한 생성 된 코드에 다음 헤더를 찾을 수 있습니다

//------------------------------------------------------------------------------ 
// <auto-generated> 
//  This code was generated by a tool. 
//  Runtime Version:4.0.30319.18033 
// 
//  Changes to this file may cause incorrect behavior and will be lost if 
//  the code is regenerated. 
// </auto-generated> 
//------------------------------------------------------------------------------ 

왜이 무시되지 않는 이유는 무엇입니까?

나는이 question을 발견하고 내 StyleCop setings에서 다음을 사용하여 시도 : 나는 정규식에 어려움을 겪고있다

<CollectionProperty Name="GeneratedFileFilters"> 
    <Value>Reference\.cs$</Value> 
</CollectionProperty> 

을하지만이 중 하나가 작동하지 않습니다하지만에 다음 값을 추가하려고 Stylecop에서 생성 된 코드를 무시하도록 위의 예를 참조하십시오.

Reference.cs 
\Reference\.cs 
\Reference\.cs$ 
Reference\.cs$ 

사람이 Reference.cs 파일에 대한 모든 Stylecop 오류를 억제하는 방법을 알고 있나요?

Edit2가 : 오류가 Reference.cs 파일에 대해 표시되는 :

오류 1 CA1812 : Microsoft.Performance ... 분명히 인스턴스화되지 않습니다 것을 내부 클래스입니다. 그렇다면 어셈블리에서 코드를 제거하십시오. 이 클래스가 정적 메서드 만 포함하려는 경우 은 컴파일러에서 의 기본 생성자를 생성하지 못하도록 개인 생성자를 추가하는 것이 좋습니다.

오류 2 CA2239 : Microsoft.Usage는 :는 'OnDeserialized 개인 무효 (StreamingContext)'를 입력하는 방법 ...를 추가하고 System.Runtime.Serialization.OnDeserializedAttribute와 그것을 때문이다.

오류 4 CA1811 : Microsoft.Performance : ...에는 업스트림 공용 또는 보호 된 발신자가 없습니다.

나는이 세 가지 유형의 오류 중 27 가지를 가지고 있습니다.

편집 3 : 빌드시 실행할 스타일/Fx 설정이 있습니다. 나는 Build Events 탭에서 Post-build event command line에 ...

"$(ProgramFiles)\Microsoft FxCop 10.0\FxCopCmd.exe" /file:"$(TargetPath)" /ruleid:-"Microsoft.Design#CA1006" /ruleid:-"Microsoft.Design#CA1020" /console /cul:en-GB /q /assemblyCompareMode:StrongNameIgnoringVersion 

빌드 탭에서 조건부 컴파일 기호에 CODE_ANALYSIS

을 추가했습니다.

+0

보고있는 오류를 자세히 기재 해 주시겠습니까? – Mightymuke

+0

@Mightmuke, edit 2 참조. – DevDave

+0

'생성 된 코드에서 결과 표시 안 함'옵션을 선택하면 제대로 작동하는 것처럼 보입니다. (괄호 안에 해당 텍스트가 없지만, 왜 그런지 궁금합니다.) . IDE (일명 코드 분석) 또는 FxCop 러너에서 실행하고 있습니까? IDE에서 여러 프로젝트가 있습니까? 첫 번째 프로젝트의 코드 분석 설정이 (적어도 VS2010에서) '하위'프로젝트의 설정보다 우선한다는 점에서 IDE에서 실행할 때 문제가 있습니다. 물론 하나의 프로젝트 만 있다면이 점이 문제가되지는 않을 것입니다. – Mightymuke

답변

4

CAxxxx 오류는 StyleCop이 아닌 FxCop에서 발생합니다. 생성 된 코드에 대해 나타나는 경우 생성기를 변경하지 않고 생성 된 코드를 유지하려면 프로젝트 수준 제외를 추가하기 만하면됩니다 (예 : GlobalSuppressions.cs). 질문 편집 # 3 다음

: 당신이 "수동"fxcopcmd.exe을 실행하고 있기 때문에, 생성 된 코드를 무시에 대한 C# 프로젝트 설정은 전혀 사용되지 않습니다. 이 옵션을 적용하려면 /ignoregeneratedcode 스위치를 fxcopcmd.exe 명령 줄에 추가해야합니다.

+0

각 오류에 대한 억압을 작성하지 않고 FxCop으로 생성 된 파일을 건너 뛰는 방법은 없습니까? – DevDave

+0

이미 생성 된 코드를 무시하도록 FxCop을 설정했다면 그 끝에서 할 수있는 모든 일을 거의 완료했습니다. 문제를 재현 할 수는 없지만 서비스 참조가 다르거 나 FxCop 구성이 잘못 되었기 때문에 문제인지 확인할 수 없습니다. CA 경고가 표시되면 FxCop을 어떻게 실행합니까? –

+0

포함 된 예제보다 fxCop에 대해 생성 된 코드를 무시하는 다른 방법이 있습니까? – DevDave