2013-05-05 5 views
1

Récemment trouvé protobuf-net, génial bibliothèque.Erreurs Gendarme Protobuf-net

je l'ai couru par gendarme et il est venu avec de nombreuses notifications de performance, par exemple:

cible: System.Int32 ProtoBuf.ProtoReader :: ReadFieldHeader() Assemblée: protobuf-net, Version = 1.0. 0,0, Culture = neutral, PublicKeyToken = null

gravité: Haute confiance: Haute Source: symboles de débogage indisponibles, IL décalage 0x0055 Détails: type 'System.Int32' est d'être boxed.

Si quelqu'un a une expérience avec l'importance sont gendarme ce genre de notifications et est-ce quelque chose que je pourrais peut-être contribuer à revenir Protobuf net en essayant de nettoyer tout Gravité: Haute questions?

+0

Devinez cela dépend de ce que vous essayez vraiment de faire. Marc rend la source disponible, ne serait-il pas plus efficace si vous êtes si soucieux que vous examiniez la source? Vous pouvez toujours obtenir la PDB à partir du téléchargement/NuGet ainsi que ..votreprojet \ packages \ protobuf-net.2.0.0.621 \ lib \ net40 Il existe également de nombreux tests dans le projet. –

+0

Je peux jeter un oeil dans un jour ou deux (je reviens d'un long vol) - mais: ce pourrait être un faux positif: protobuf-net existe réellement comme une double base de code: un modèle de réflexion *** et *** un modèle de méta-programmation. Il utilise le mieux possible, ce qui signifie généralement le modèle de méta-programmation. Il se pourrait qu'il se plaint du modèle de réflexion (qui est moins efficace par nécessité). Mais: je vais jeter un coup d'oeil. Btw, les PDB sont entièrement disponibles - il devrait avoir accès aux symboles de débogage –

+0

Pour information, j'ai traversé ces derniers; aucun d'entre eux n'était particulièrement visible, mais j'ai fait quelques rangements pour rendre gendarme plus heureux - mais franchement, ils étaient faux-positifs * vraiment *. La seule chose de note qu'il a attrapé était un endroit où j'avais les mauvais marqueurs «# if», ce qui signifie que l'exception personnalisée n'était pas binaryformatter-sérialisable. Pas exactement un point critique. –

Répondre

1

L'erreur spécifique que vous citez provient de:

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

, oui techniquement cela est une boîte inutile - cependant, il est un cas limite extrême qui est pas vaut se soucier de (si vous obtenir cette exception, vous avez plus de problèmes que la boîte). Il pourrait être réparé si cela vous préoccupe, cependant. Il est également probable que d'autres erreurs seront soulevées par l'implémentation de la réflexion - ce qui serait trompeur car dans la plupart des scénarios qui ne sont pas réellement utilisés (le code a à la fois un modèle de réflexion et un modèle de métaprogrammation) . Je vais essayer de jeter un oeil à ce que le gendarme dit la semaine prochaine: update - done - notez que la plupart de ceci était fondamentalement "travail occupé" - il n'a pas vraiment changé quelque chose d'important, autre que cela a fait le bonheur de Gendarme.