2013-05-05 62 views
1

最近遇到protobuf網,真棒圖書館。Protobuf網憲兵錯誤

我跑它通過gendarme,它想出了許多性能通知,如:

目標:System.Int32 ProtoBuf.ProtoReader :: ReadFieldHeader()彙編: protobuf網,版本爲1.0。 0.0,文化=中性 公鑰=空

嚴重性:高可信:高來源:調試符號 不可用,IL偏移0x0055自詳細信息:類型 'System.Int32' 正在 裝箱。

如果任何人有憲兵經驗是多麼的重要,這些類型的通知和這事我可能有助於回來試圖清理任何嚴重性protobuf網:高問題?

+0

猜猜這取決於你真的想做什麼。馬克讓源代碼可用,如果你擔心你會查看源代碼,它會不會更有效?您可以始終從下載/ NuGet獲得PDB以及..yourproject \ packages \ protobuf-net.2.0.0.621 \ lib \ net40,但項目中也有許多測試。 – 2013-05-05 23:02:49

+0

我可以在一兩天內看一眼(剛剛從長途飛行回來) - 但是:它可能是一個誤報:protobuf-net實際上是作爲雙重代碼庫存在的:反射模型***和***一個元編程模型。它使用最好的,通常意味着元編程模型。這可能是因爲它抱怨反射模型(其效率較低)。但是:我會看看。順便說一句,PDBs是完全可用的 - 它應該有權訪問調試符號 – 2013-05-05 23:50:28

+0

有關信息,我已經通過這些;他們中沒有一個特別引人注目,但我已經做了一些整理,以使憲兵更高興 - 但坦率地說,他們是誤報*真的*。唯一值得注意的地方是我有一個錯誤的'#if'標記,這意味着自定義異常不是binaryformatter-serializable。不完全是一個關鍵點。 – 2013-05-08 16:36:15

回答

1

你舉特定的錯誤來源於:

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

所以,是在技術上這是一個不必要的盒子 - 但是,它是值得我們在乎的極端邊緣的情況下(如果您得到這個例外,你比盒子有更大的問題)。不過,它可能是固定的,如果它引起你的關注。

從反射實現中可能會引發一些進一步的錯誤 - 這會引起誤解,因爲在大多數情況下,實際上並未使用(代碼既有反射模型也有元編程模型) 。

我的目標是看看憲兵隊下週會說什麼:update - done - 請注意,這其中大部分基本上是「忙碌的工作」 - 除了讓Gendarme高興以外,並沒有真正改變任何重要的東西。