2013-05-05 5 views
1

최근에 protobuf-net, 멋진 라이브러리를 발견했습니다.Protobuf-net Gendarme 오류

나는 gendarme를 통해 실행하며, 다양한 성능 알림 내놓았다 예 :

대상 : 선택 System.Int32 ProtoBuf.ProtoReader :: ReadFieldHeader() 조립 : protobuf - 그물, 버전 = 1.0. 문화가 중립 = 0.0, 는 PublicKeyToken = NULL

심각도 : 높은 신뢰도 : 높은 소스 '가 선택 System.Int32'박스 를 되 유형 : 디버깅 심볼 사용할는 IL은 0x0055 상세 오프셋.

사람이 내가 가능성이 protobuf - 그물을 어떤 심각도를 정리 시도하여 다시 기여할 수있는이 뭔가 알림 이러한 종류의 얼마나 중요한 헌병과 경험을 가지고있는 경우 : 문제 높음?

+0

당신이 실제로하려는 일에 달려 있다고 생각하십시오. Marc는 소스를 사용 가능하게합니다. 근원을 검토하는 것이 우려된다면 더 효과적이지 않습니까? 당신은 항상 다운로드/NuGet에서 PDB를 얻을 수 있습니다 .. ..project \ packages \ protobuf-net.2.0.0.621 \ lib \ net40 프로젝트에도 많은 테스트가 있습니다. –

+0

나는 하루나 이틀 만에 (한참 긴 비행에서 돌아왔다) 볼 수있다. 그러나 거짓 긍정 일 수있다. protobuf-net은 실제로 이중 코드베이스로 존재한다 : 반사 모델 *** *** 메타 프로그래밍 모델. 가능한 한 최선을 다합니다. 보통 메타 프로그래밍 모델을 의미합니다. 반사 모델 (불필요하게 효율적이지 않음)에 대해 불평 할 수도 있습니다. 그러나 : 나는 한번 살펴 보겠습니다. Btw, PDBs 완전히 사용할 수 있습니다 - 그것은 디버깅 기호에 액세스 할 수 있어야합니다 –

+0

정보 들어, 내가 이걸 겪었어요; 그들 중 누구도 특히 눈에 띄는 것은 아니었지만 나는 gendarme을 더 행복하게 만들기 위해 약간의 정리를 해왔습니다. 그러나 솔직히 그들은 거짓 긍정이었습니다. 잡힌 메모의 유일한 것은 내가 잘못된'# if '마커가있는 곳이었습니다. 즉, 사용자 정의 예외는 binaryformatter-serializable이 아니 었습니다. 꼭 중요한 것은 아닙니다. –

답변

1

는 인용 특정 오류에서 오는 : 그래서

if(fieldNumber < 1) throw new ProtoException(
    "Invalid field in source data: " + fieldNumber); 

, 그래 기술적으로이 불필요한 상자가있다 - 그러나, 그것은 (대한 배려 가치 없는 극단적 인 에지 경우 당신 경우 그 예외가 생기면 상자보다 큰 문제가 생긴다.) 그것은 당신에게 우려를 유발하는 경우 고정 수 있습니다.

리플렉션 구현에서 추가 오류가 발생할 가능성이 있습니다. 실제로 구현되지 않은 대부분의 시나리오 (코드에는 리플렉션 모델과 메타 프로그래밍 모델이 모두 포함되어 있기 때문에)가 잘못 구현 될 수 있습니다. . update - done를 - 이것의 대부분은 기본적으로 "바쁜 업무"라고주의 - 그것은 정말 헌병 행복하게보다 중요한 아무것도 변경되지 않았다

다음 주에 말씀 헌병을 살펴 가지고하는 것을 목표로합니다.