рдЬрдВрдЧрд▓реА рдкрд╢реНрдЪрд┐рдо рдореЗрдВ рд╕рдмрд╕реЗ рддреЗрдЬ рд░рд┐рдкреЛрд░реНрдЯред рдФрд░ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдореБрдЯреНрдареА рднрд░ рдХреАрдбрд╝реЗ ...

рдЪрд┐рддреНрд░ 3

рди рдХреЗрд╡рд▓ рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХрд╛ рдУрдкрди рд╕реЛрд░реНрд╕ рдХреЛрдб рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рд╣реИ - рдЕрдиреНрдп рдХрдВрдкрдирд┐рдпрд╛рдВ рднреА рдЗрд╕ рдкреНрд░рд╡реГрддреНрддрд┐ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░ рд░рд╣реА рд╣реИрдВред рд╣рдорд╛рд░реЗ рд▓рд┐рдП, рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдбреЗрд╡рд▓рдкрд░реНрд╕, рдпрд╣ рдлрд┐рд░ рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╢рд╛рдирджрд╛рд░ рддрд░реАрдХрд╛ рд╣реИ, рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рдХреМрди рд╕реА рджрд┐рд▓рдЪрд╕реНрдк рдЪреАрдЬреЗрдВ рдкрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓реЗрдЦрдХреЛрдВ рдХреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЖрдЬ рд╣рдо рдлрд╛рд╕реНрдЯ рд░рд┐рдкреЛрд░реНрдЯреНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдЕрдВрджрд░ рджреЗрдЦрддреЗ рд╣реИрдВред

рдХреНрдпрд╛ рдЬрд╛рдБрдЪ рд╣реБрдИ?


FastReport рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рдЬрдирд░реЗрдЯрд░ рд╣реИ рдЬрд┐рд╕реЗ рдлрд╛рд╕реНрдЯ рд░рд┐рдкреЛрд░реНрдЯреНрд╕ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред C # рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ .NET рдорд╛рдирдХ 2.0+ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╣реИред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб рд╣рд╛рд▓ рд╣реА рдореЗрдВ GitHub рдкрд░ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд╣рд╛рдВ рдЗрд╕реЗ рдЖрдЧреЗ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рд░рд┐рдкреЛрд░реНрдЯреЗрдВ рдкрд╛рда, рдЫрд╡рд┐рдпреЛрдВ, рд░реЗрдЦрд╛рдУрдВ, рдЖрдХреГрддрд┐рдпреЛрдВ, рд░реЗрдЦрд╛рдЪрд┐рддреНрд░, рддрд╛рд▓рд┐рдХрд╛рдУрдВ, рдмрд╛рд░рдХреЛрдб рдЖрджрд┐ рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИрдВред рд╡реЗ рдбреЗрдЯрд╛ рд╕рд╣рд┐рдд, рдПрдХ рдХрд╡рд░ рдФрд░ рдПрдХ рдмреИрдХ рдкреЗрдЬ рд╕рд╣рд┐рдд рдПрдХрд▓-рдкреГрд╖реНрда рдФрд░ рдмрд╣реБ-рдкреГрд╖реНрда рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд XML, CSV, Json, MS SQL, MySql, Oracle, Postgres, MongoDB, Couchbase, RavenDB, SQLite рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

рд░рд┐рдкреЛрд░реНрдЯ рдЯреЗрдореНрдкрд▓реЗрдЯ рдмрдирд╛рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВ: рдХреЛрдб рд╕реЗ; рдПрдХ xml рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ; рдПрдХ рдСрдирд▓рд╛рдЗрди рдбрд┐рдЬрд╛рдЗрдирд░ рдпрд╛ FastReport рдбрд┐рдЬрд╛рдЗрдирд░ рд╕рдореБрджрд╛рдп рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ред

рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ NuGet рд╕рдВрдХреБрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред

рдЖрдк рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ GitHub рдкреГрд╖реНрда рдкрд░ рдЙрддреНрдкрд╛рдж рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред

рдЪрд┐рддреНрд░ 8


рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рдереА - рдореИрдВрдиреЗ рдЗрд╕реЗ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2017 рд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛, рдЬрд╣рд╛рдВ рд╕реЗ рдмрд╛рдж рдореЗрдВ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдкреНрд▓рдЧрдЗрди рджреНрд╡рд╛рд░рд╛ рдЗрд╕рдХреА рдЬрд╛рдВрдЪ рдХреА рдЧрдИред

рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдПрдХ рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╣реИ рдЬреЛ рд╕реА, рд╕реА ++, рд╕реА #, рдЬрд╛рд╡рд╛ рдХреЛрдб рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рддрд▓рд╛рд╢ рдХрд░рддрд╛ рд╣реИред C # рдХреЛрдб рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддреЗ рд╕рдордп, рдЖрдк PVS-Studio рдкреНрд▓рдЧ-рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ Visual Studio IDE рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдЖрдк рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП PVS-Studio_Cmd.exe рдХрдорд╛рдВрдб-рд▓рд╛рдЗрди рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╣реИ, рддреЛ рдЖрдк рдмрд┐рд▓реНрдб рд╕рд░реНрд╡рд░ рдкрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рд╕реЛрдирд╛рд░рдХреНрдпреВрдм рддрдХ рдкрд╣реБрдВрдЪрд╛ рд╕рдХрддреЗ рд╣реИрдВ ред

рдЦреИрд░, рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдЗрд╕ рдмрд╛рд░ рдХреНрдпрд╛ рджрд┐рд▓рдЪрд╕реНрдк рдерд╛ред

рдЪреВрдВрдХрд┐ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЫреЛрдЯрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЯрд╛рдЗрдкреЛ рдФрд░ рд╕рдВрджрд┐рдЧреНрдз рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рднрд░реЛрд╕рд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдкрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдХреБрдЫ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред

рдЪрд╢реНрдорд╛ рдФрд░ рдЕрдзрд┐рдХ


рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдзрд┐ рд╕реЗ рдореБрд▓рд╛рдХрд╛рдд рдХрд░реЗрдВ:

public override string ToString() { if (_value == null) return null; return this.String; } 

PVS-Studio рдЪреЗрддрд╛рд╡рдиреА : V3108 рдпрд╣ 'ToSting ()' рд╡рд┐рдзрд┐ рд╕реЗ 'null' рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╢рдВрд╕рд┐рдд рдирд╣реАрдВ рд╣реИред рд╡реЗрд░рд┐рдПрдВрдЯ .cs 1519

рд╣рд╛рдВ, рдПрдХ рдУрд╡рд░рд░рд╛рдЗрдб ToString () рд╡рд┐рдзрд┐ рд╕реЗ рдЕрд╢рдХреНрдд рд▓реМрдЯрдирд╛ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдпрд╣ рдЦрд░рд╛рдм рд╢реИрд▓реА рд╣реИред рдпрд╣ Microsoft рд╕реЗ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдЕрдиреНрдп рдмрд╛рддреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: рдЖрдкрдХрд╛ ToString () рдУрд╡рд░рд░рд╛рдЗрдб рдЦрд╛рд▓реА рдпрд╛ рдЕрд╢рдХреНрдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рдирд╣реАрдВ рд▓реМрдЯрдирд╛ рдЪрд╛рд╣рд┐рдП ред рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЬреЛ рдПрдХ рд╕реНрдерд┐рд░ рд╡рд╛рдкрд╕реА рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ ToString () рдХрд╛ рд░рд┐рдЯрд░реНрди рдорд╛рди рдЕрдкреНрд░рд┐рдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдПрдХ ArgumentNullException рдХреЛ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдмрд╢рд░реНрддреЗ рдХрд┐ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╡рд┐рдзрд┐ IEnumeros <T> рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ)ред

 Variant varObj = new Variant(); varObj.ToString().Contains(character); 

рдЖрдк рдЗрд╕ рддрдереНрдп рд╕реЗ рдЧрд▓рддреА рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЙрджрд╛рд╣рд░рдг рд╕рд┐рдВрдереЗрдЯрд┐рдХ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рд╕рд╛рд░ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рдХреЛрдб рдХреА рдЯрд┐рдкреНрдкрдгреА рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

 /// <summary> /// Returns <see cref="String"/> property unless the value on the right /// is null. If the value on the right is null, returns "". /// </summary> /// <returns></returns> 

рдЙрдлрд╝ред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп "" рд╢реВрдиреНрдп рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ ред

рдЪрд▓рд┐рдП рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред

рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдлрд╛рд╕реНрдЯрд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреНрд▓рд╛рд╕ рд╣реИред рд╡рд┐рд╡рд░рдг: StringBuilder рдХрд╛ рддреЗрдЬреА рд╕реЗ рд╡рд┐рдХрд▓реНрдк ред рджрд░рдЕрд╕рд▓, рдЗрд╕ рд╡рд░реНрдЧ рдореЗрдВ StringBuilder рдХрд╛ рдПрдХ рдХреНрд╖реЗрддреНрд░ рд╣реЛрддрд╛ рд╣реИред FastString рдХреНрд▓рд╛рд╕ рдХреЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░реНрд╕ Init рдореЗрдердб рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рд╕рдВрдмрдВрдзрд┐рдд рдлреАрд▓реНрдб рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддрд╛ рд╣реИред

рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдХреЛрдб:

 public FastString() { Init(initCapacity); } 

рдФрд░ рдЗрдирд┐рдЯ рд╡рд┐рдзрд┐ рдХрд╛ рдХреЛрдб:

 private void Init(int iniCapacity) { sb = new StringBuilder(iniCapacity); //chars = new char[iniCapacity]; //capacity = iniCapacity; } 

рдпрджрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╣реИ, рддреЛ рдЖрдк рд╕реНрдЯреНрд░рд┐рдВрдЧ рдлрд╝реАрд▓реНрдб рдХреЛ StringBuilder рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 public StringBuilder StringBuilder { get { return sb; } } 

рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, FastString рдореЗрдВ 3 рдирд┐рд░реНрдорд╛рддрд╛ рд╣реИрдВ:

 public FastString(); public FastString(int iniCapacity); public FastString(string initValue); 

рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдбрд┐рдЬрд╛рдЗрдирд░ рдХреЗ рд╢рд░реАрд░ рдХреЛ рдкрд╣рд▓реЗ рд╣реА рджрд┐рдЦрд╛рдпрд╛ рд╣реИ рдХрд┐ рд╡реЗ рд╢реЗрд╖ рджреЛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рддреЗ рд╣реИрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдпрд╣ рднреА рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИред рдФрд░ рдЕрдм, рдзреНрдпрд╛рдиред рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХреНрдпрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░реЗрдЧрд╛:

 FastString fs = new FastString(256); Console.WriteLine(fs.StringBuilder.Capacity); 

рдзреНрдпрд╛рди рджреЗрдВ, рдЙрддреНрддрд░:

рдЪрд┐рддреНрд░ 2


рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд░реВрдк рд╕реЗ? рдЖрдЗрдП рд╕рдВрдЧрдд рдирд┐рд░реНрдорд╛рддрд╛ рдХреЗ рд╢рд░реАрд░ рдХреЛ рджреЗрдЦреЗрдВ:

 public FastString(int iniCapacity) { Init(initCapacity); } 

рд╣рдорд╛рд░реЗ рд▓реЗрдЦ рдХреЗ рдирд┐рдпрдорд┐рдд рдкрд╛рдардХреЛрдВ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдпрд╣рд╛рдБ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдБрдЦ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдиреЗрддреНрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ (рдЧрдВрдз, рддрд░реНрдХ, рдЗрд╕реЗ рдХреЙрд▓ рдХрд░реЗрдВ рдЬреЛ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ) рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕реБрдиреНрди рд╣реИ, рдФрд░ рдЙрдиреНрд╣реЛрдВрдиреЗ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдкрд╛рдИ: V3117 рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдкреИрд░рд╛рдореАрдЯрд░ 'iniCapacity' рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред FastString.cs 434

рдХреНрдпрд╛ рд╕рдВрдпреЛрдЧ рд╣реИ рдХрд┐ рд╡рд░реНрдЧ рдХреЛрдб рдореЗрдВ рдПрдХ рдирд┐рд░рдВрддрд░ рдлрд╝реАрд▓реНрдб initCapacity рд╣реЛрддрд╛ рд╣реИ , рдЬрд┐рд╕реЗ рдирд┐рд░реНрдорд╛рдг рдкреИрд░рд╛рдореАрдЯрд░ iniCapacity рдХреЗ рдмрдЬрд╛рдп Init рд╡рд┐рдзрд┐ рдХреЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ...

 private const int initCapacity = 32; 

рд╕рдорд╛рди рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдмрд╣реБрдд, рдмрд╣реБрдд рд╕рд╛рд╡рдзрд╛рди рд░рд╣рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЬрд╣рд╛рдБ рдХрд╣реАрдВ рднреА рд╕рдорд╛рди рдирд╛рдо - C, C ++, C #, Java рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЧрд▓рддрд┐рдпрд╛рдБ рдХреА рдЧрдИ рдереАрдВ - рд╡рд╣рд╛рдБ рд╣рд░ рдЬрдЧрд╣ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЯрд╛рдЗрдкреЛ рдереЗ ...

рд╡реИрд╕реЗ, рдЯрд╛рдЗрдкреЛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред

рдЖрдЗрдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдПрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

 static void Main(string[] args) { TextObject textObj = new TextObject(); textObj.ParagraphFormat = null; Console.WriteLine("Ok"); } 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрддреНрдкрд╛рджрди рд╕реНрдЯреНрд░рд┐рдВрдЧ "рдУрдХреЗ" рд╕реЗ рдЕрд▓рдЧ рд╣реЛрдЧрд╛ :)

рдХреМрди рд╕рд╛? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

рдЪрд┐рддреНрд░ 1


рд╕рдорд╕реНрдпрд╛ ParagraphFormat рдЧреБрдг рдФрд░ рд╕рдорд╛рди рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ:

 public ParagraphFormat ParagraphFormat { get { return paragraphFormat; } set { ParagraphFormat = value; } } 

PVS-Studio рдЪреЗрддрд╛рд╡рдиреА : V3110 'ParagraphFormat' рд╕рдВрдкрддреНрддрд┐ рдХреЗ рднреАрддрд░ рд╕рдВрднрд╛рд╡рд┐рдд рдкреБрдирд░рд╛рд╡рд░реНрддрдиред TextObject.cs 281

ParagraphFormat рдЧреБрдг рдкреИрд░рд╛рдЧреНрд░рд╛рдлрдлреЙрд░реНрдо рдлрд╝реАрд▓реНрдб рдкрд░ рдПрдХ рдЖрд╡рд░рдг рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕рдХреЗ рдкреНрд░рд╛рдкрд░реНрдЯреА рдПрдХреНрд╕реЗрд╕рд░ рдХреЛ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реЗрдЯ рдкреНрд░реЙрдкрд░реНрдЯреА рдПрдХреНрд╕реЗрд╕рд░ рдореЗрдВ рдПрдХ рдХрд╖реНрдЯрдкреНрд░рдж рдЯрд╛рдЗрдкреЛ рд╣реЛрддрд╛ рд╣реИ: рдлрд╝реАрд▓реНрдб рдХреЗ рдмрдЬрд╛рдп, рд░рд┐рдХреЙрд░реНрдб рдЙрд╕реА рдкреНрд░реЙрдкрд░реНрдЯреА рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред рдлрд┐рд░, рд╕рдорд╛рди рдирд╛рдореЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдПрдХ рддреНрд░реБрдЯрд┐ред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

 public override Run Split(float availableWidth, out Run secondPart) { .... if (r.Width > availableWidth) { List<CharWithIndex> list = new List<CharWithIndex>(); for (int i = point; i < size; i++) list.Add(chars[i]); secondPart = new RunText(renderer, word, style, list, left + r.Width, charIndex); list.Clear(); for (int i = 0; i < point; i++) list.Add(chars[i]); r = new RunText(renderer, word, style, list, left, charIndex); return r; } else { List<CharWithIndex> list = new List<CharWithIndex>(); for (int i = point; i < size; i++) list.Add(chars[i]); secondPart = new RunText(renderer, word, style, list, left + r.Width, charIndex); list.Clear(); for (int i = 0; i < point; i++) list.Add(chars[i]); r = new RunText(renderer, word, style, list, left, charIndex); return r; } .... } 

PVS-Studio рдЪреЗрддрд╛рд╡рдиреА : V3004 'рддрддреНрдХрд╛рд▓реАрди' рдХрдерди 'рдФрд░' рдХрдерди рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред HtmlTextRenderer.cs 2092

рдереЛрдбрд╝рд╛ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ, рдФрд░ рдЕрдм, рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдореВрд▓реНрдп рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ r.Width> availableWidth , рдПрдХ рд╣реА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рдЬрд╛рдПрдЧреАред рдпрд╛ рддреЛ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ рдпрд╛ рдХрд┐рд╕реА рдПрдХ рдмреНрд░рд╛рдВрдЪ рдореЗрдВ рд▓реЙрдЬрд┐рдХ рдмрджрд▓ рджреЗрдВред

 public static string GetExpression(FindTextArgs args, bool skipStrings) { while (args.StartIndex < args.Text.Length) { if (!FindMatchingBrackets(args, skipStrings)) break; return args.FoundText; } return ""; } 

рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЪреЗрддрд╛рд╡рдиреА : V3020 рдПрдХ рд▓реВрдк рдХреЗ рднреАрддрд░ рдмрд┐рдирд╛ рд╢рд░реНрдд 'рд╡рд╛рдкрд╕реА'ред рдХреЛрдб рдпреВрдЯрд┐рд▓реНрд╕ .cs 262

рдмрд┐рдирд╛ рд╢рд░реНрдд рд░рд┐рдЯрд░реНрди рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХреЗ рдХрд╛рд░рдг , рдЙрдкрд░реЛрдХреНрдд рд▓реВрдк рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХреА рдЬрд╛рдПрдЧреАред рд╢рд╛рдпрдж рдпрд╣ рдХреЛрдб рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЗ рдмрд╛рдж рдирд┐рдХрд▓рд╛ рд╣реИ, рдпрд╛ рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рдЕрд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХрд╛ рд╣реИ рдЬреЛ рдмрд┐рдирд╛ рд▓реВрдк рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

 private int FindBarItem(string c) { for (int i = 0; i < tabelle_cb.Length; i++) { if (c == tabelle_cb[i].c) return i; } return -1; } internal override string GetPattern() { string result = tabelle_cb[FindBarItem("A")].data + "0"; foreach (char c in text) { int idx = FindBarItem(c.ToString()); result += tabelle_cb[idx].data + "0"; } result += tabelle_cb[FindBarItem("B")].data; return result; } 

рдЪреЗрддрд╛рд╡рдиреА PVS-Studio : V3106 рд╕рдВрднрд╛рд╡рд┐рдд рдирдХрд╛рд░рд╛рддреНрдордХ рд╕реВрдЪрдХрд╛рдВрдХ рдореВрд▓реНрдпред 'Idx' рдЗрдВрдбреЗрдХреНрд╕ рдХрд╛ рдорд╛рди -1 рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддрд╛ рд╣реИред BarcodeCodabar.cs 70

рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдЦрддрд░рдирд╛рдХ рдХреЛрдбред FindBarItem рдкрджреНрдзрддрд┐ -1 рд╡рд╛рдкрд╕ рдЖ рд╕рдХрддреА рд╣реИ рдпрджрд┐ рдпрд╣ рддрддреНрд╡ рдХреЛ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдХреЙрд▓рд┐рдВрдЧ рдХреЛрдб ( GetPattern method) рдореЗрдВ, рдпрд╣ рдорд╛рди idx рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЛ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕рддреНрдпрд╛рдкрди рдХреЗ рдмрд┐рдирд╛ tabelle_cb рдПрд░реЗ рдХреЗ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрдВрдбреЗрдХреНрд╕ -1 рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рддреЗ рд╕рдордп , IndexOutOfRangeException рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЪрд▓рд┐рдП рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред

 protected override void Finish() { .... if (saveStreams) { FinishSaveStreams(); } else { if (singlePage) { if (saveStreams) { int fileIndex = GeneratedFiles.IndexOf(singlePageFileName); DoPageEnd(generatedStreams[fileIndex]); } else { .... } .... } .... } .... } 

PVS-Studio рдЪреЗрддрд╛рд╡рдиреА : V3022 рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ 'saveStreams' рд╣рдореЗрд╢рд╛ рдЭреВрдареА рд╣реИред HTMLExport.cs 849

FileIndex рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ DoPageEnd рдкрджреНрдзрддрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдХреЛ рдХрднреА рднреА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдб рдореЗрдВ рджреВрд╕рд░рд╛ saveStream рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣рдореЗрд╢рд╛ рдЧрд▓рдд рд╣реЛрдЧрд╛ ред

рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдореЗрдВ рд╕реЗ, рдпрд╣ рд╢рд╛рдпрдж рд╕рдм рд╣реИ (рдЖрдк рдореЛрдиреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреА рднрд╛рд╡рдирд╛ рдореЗрдВ рдПрдХ рд▓реЗрдЦ рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХрд░рддреЗ рдереЗ?)ред рдЕрдиреНрдп рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЪреЗрддрд╛рд╡рдиреА рднреА рдереЗ, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рдореБрдЭреЗ рд▓реЗрдЦ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд▓рдЧрд╛ (рднрд╛рдЧ рд╣рдореЗрд╢рд╛ рдкрд░реНрджреЗ рдХреЗ рдкреАрдЫреЗ рд░рд╣рддрд╛ рд╣реИ)ред

рдбрд┐рдЬрд╛рдЗрди рдХреЛ рдЬрд╛рдирдирд╛ рдЙрдирдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рд▓реЗрдЦрдХреЛрдВ рдХреЛ рдЗрди рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рд╕реНрд╡рдпрдВ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпреЗ V3083 (рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╛рд╡рд┐рдд рдЦрддрд░рдирд╛рдХ рдХреЙрд▓), V3022 (рд╕реНрдерд┐рддрд┐ рд╣рдореЗрд╢рд╛ рд╕рд╣реА / рдЧрд▓рдд рд╣реИ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЕрдХреНрд╕рд░ рдПрдХ рд╣реА рдорд╛рди рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдХрд╛рд░рдг)), V3072 , V3073 ( рдЖрдИрдбреАрд╕рд┐рд╕реЛрдкреНрд▓реАрдХреЗрд╢рди рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ) рдФрд░ рдЕрдиреНрдп рдЬреИрд╕реЗ рдЪреЗрддрд╛рд╡рдиреА рджреЗ рд░рд╣реЗ рд╣реИрдВред

рдпрджрд┐ рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдЕрдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИ, рддреЛ рдЖрдк рдирд┐рдореНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


рдирд┐рд╖реНрдХрд░реНрд╖


рдЪрд┐рддреНрд░ 4


рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рд▓реЗрдЦ рдЫреЛрдЯрд╛ рдерд╛, рдореБрдЭреЗ рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреА рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ 'рд╕реНрдкрд░реНрд╢' рдХрд░рдиреЗ рдХреА рдХреГрдкрд╛ рд╣реБрдИ - рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреА рд╢рдкрде рдХреНрдпрд╛ рд╣реИред

рдореИрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╕рдлрд▓рддрд╛, рдЦреЛрдЬреЗ рдЧрдП рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд╕реБрдзрд╛рд░ рдХреЗ рд▓реЗрдЦрдХреЛрдВ рдХреА рдХрд╛рдордирд╛ рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдореИрдВ рдПрдХ рдХрджрдо рдЦреБрд▓реЗ рд╕реНрд░реЛрдд рд╕рдореБрджрд╛рдп рдХреА рдкреНрд░рд╢рдВрд╕рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ!

рдореИрдВ рдмрд╛рдХреА рдХреЛ рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЕрдкрдиреЗ рдХреЛрдб рдкрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдЖрдкрдХреЛ рдХреНрдпрд╛ рджрд┐рд▓рдЪрд╕реНрдк рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИред

рдСрд▓ рдж рдмреЗрд╕реНрдЯ!



рдпрджрд┐ рдЖрдк рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдЕрдВрдЧреНрд░реЗрдЬреА рдмреЛрд▓рдиреЗ рд╡рд╛рд▓реЗ рджрд░реНрд╢рдХреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдЕрдиреБрд╡рд╛рдж рдХреЗ рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ: рд╕рд░реНрдЧреЗрдИ рд╡рд╛рд╕рд┐рд▓рд┐рд╡ред рд╡рд╛рдЗрд▓реНрдб рд╡реЗрд╕реНрдЯ рдореЗрдВ рд╕рдмрд╕реЗ рддреЗрдЬ рд░рд┐рдкреЛрд░реНрдЯ - рдФрд░ рдореБрдЯреНрдареА рднрд░ рдХреАрдбрд╝реЗ ...

Source: https://habr.com/ru/post/hi431370/


All Articles