Skip to content

Latest commit

 

History

History
executable file
·
24 lines (20 loc) · 1.03 KB

readme.md

File metadata and controls

executable file
·
24 lines (20 loc) · 1.03 KB

ProtoBuf Analyzer

A Roslyn analyzer to detect common mistakes and gotchas with protobuf-net

Rules

  • PBA001: Tag must be greater than 0
  • PBA002: duplicate Tags in a class
  • PBA003*: collection property with no "hack" to manage Empty collections
  • PBA004: gap(s) in Tag's assignment
  • PBA005: use of a reserved Tag

(*) protobuf makes no distinction between an empty and a null collection. So either you initialize the collection in the constructor (if you can do it) or you use the "hack" proposed on Stack Overflow The Analyzer for this rule detects the "hack" by the naming of the property: in essence the property should be named following the pattern 'IsEmpty', e.g.

[ProtoMember(1)]
public List<int> Ids { get; set; } // this won't be squiggly
[ProtoMember(2)]
private bool IsIdsEmpty
{
    get => Ids != null && Ids.Count == 0;
    set { if (value) { Ids = new List<int>(); } }
}