
рд╣рдо Microsoft рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдЦреЛрдЬ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВред рдХреНрдпреЛрдВ? рдпрд╣ рд╕рд░рд▓ рд╣реИ: рдЙрдирдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рдЖрдорддреМрд░ рдкрд░ рдЬрд╛рдВрдЪрдирд╛ рдЖрд╕рд╛рди рд╣реИ (рдЖрдк рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдкреНрд▓рдЧрдЗрди рд╣реИ) рдФрд░ рдЙрдирдореЗрдВ рдХреБрдЫ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдп рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ: рдПрдордПрд╕ рд╕реЗ рдПрдХ рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдвреВрдВрдвреЗрдВ рдФрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ; рдЗрд╕реЗ рдЬрд╛рдВрдЪреЗрдВ; рджрд┐рд▓рдЪрд╕реНрдк рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ; рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рд╣реИрдВ; рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рдкреНрд░рд╢рдВрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреВрд▓ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рд▓реЗрдЦ рд▓рд┐рдЦреЗрдВред рд╡рд╛рд╣! рд╡рд┐рди-рд╡рд┐рди-рд╡рд┐рди: рдЗрд╕рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рдордп рд▓рдЧрд╛, рдмреНрд▓реЙрдЧ рдореЗрдВ рдирдИ рд╕рд╛рдордЧреНрд░реА рджреЗрдЦрдХрд░ рдмреЙрд╕ рдЦреБрд╢ рд╣реИрдВ, рдФрд░ рдХрд░реНрдо рдареАрдХ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕ рдмрд╛рд░ "рдХреБрдЫ рдЧрд▓рдд рд╣реЛ рдЧрдпрд╛"ред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рд╣рдордиреЗ рд╡рд┐рдВрдбреЛрдЬ рдлреЙрд░реНрдо рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рдХреНрдпрд╛ рдкрд╛рдпрд╛ рд╣реИ рдФрд░ рдХреНрдпрд╛ рд╣рдореЗрдВ рдЗрд╕ рдмрд╛рд░ Microsoft рд╕реЗ рдЕрддреНрдпрдзрд┐рдХ рдмреЛрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдкрд░рд┐рдЪрдпрджрд┐рд╕рдВрдмрд░ 2018 рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, Microsoft
рдиреЗ .NET рдХреЛрд░ 3 рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди 1 рдХреА рд░рд┐рд▓реАрдЬ рдХреА
рдШреЛрд╖рдгрд╛ рдХреАред рдереЛрдбрд╝реА рджреЗрд░ рдкрд╣рд▓реЗ (рд▓рдЧрднрдЧ рдЕрдХреНрдЯреВрдмрд░ рдХреЗ рдордзреНрдп рдореЗрдВ), GitHub рдиреЗ
рд╡рд┐рдВрдбреЛрдЬ рдлреЙрд░реНрдореЗрдЯреНрд╕ рдХреЗ рд╕реНрд░реЛрддреЛрдВ рдХрд╛ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЦреБрд▓рд╛рд╕рд╛ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ - .NET рдХреЛрд░ рдпреВрдЖрдИ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╡рд┐рдВрдбреЛрдЬ рдбреЗрд╕реНрдХрдЯреЙрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП ред рдЖрдк
рдпрд╣рд╛рдВ рдХрдорд┐рдЯрдореЗрдВрдЯ рдХреЗ рдЖрдВрдХрдбрд╝реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдм рдХреЛрдИ рднреА рд░рд┐рд╡реНрдпреВ рдХреЗ рд▓рд┐рдП WinForms рд╕реЛрд░реНрд╕ рдХреЛрдб рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдореИрдВрдиреЗ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рд╕рд╛рде рд╡рд╣рд╛рдБ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рднреА рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдПред рдЬрд╛рдБрдЪ рдореЗрдВ рдХреЛрдИ рдХрдард┐рдирд╛рдИ рдирд╣реАрдВ рд╣реБрдИред рд╣рдореЗрдВ рдЬрд╝рд░реВрд░рдд рдереА: рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2019, .NET рдХреЛрд░ 3.0 рдПрд╕рдбреАрдХреЗ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди, рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛред рдФрд░ рдпрд╣рд╛рдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреА рдЪреЗрддрд╛рд╡рдиреА рдХрд╛ рд▓реЙрдЧ рд╣реИред
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд░рд┐рдкреЛрд░реНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рдЖрдорддреМрд░ рдкрд░ рдЖрд░реЛрд╣реА рдХреНрд░рдо рдореЗрдВ рдиреИрджрд╛рдирд┐рдХ тАЛтАЛрд╕рдВрдЦреНрдпрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдЗрд╕реЗ рд╕реЙрд░реНрдЯ рдХрд░рддрд╛ рд╣реВрдВ (рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕рдВрджреЗрд╢ рд▓реЙрдЧ рдХреЗ рд╕рд╛рде рд╡рд┐рдВрдбреЛ рдореЗрдВ рд╕реВрдЪреА рдХреЛ рд╕реЙрд░реНрдЯ рдХрд░рдиреЗ рдФрд░ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ)ред рдпрд╣ рдЖрдкрдХреЛ рд╕рдорд╛рди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд╕рдореВрд╣реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рд╕реНрд░реЛрдд рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЛ рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИред рдореИрдВ рд╕реВрдЪреА рдореЗрдВ рдПрдХ "рд╕реНрдЯрд╛рд░" рдХреЗ рд╕рд╛рде рджрд┐рд▓рдЪрд╕реНрдк рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рдкреВрд░реЗ рд▓реЙрдЧ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рдХреЛрдб рдХреЗ рдЯреБрдХрдбрд╝реЗ рд▓рд┐рдЦрддрд╛ рд╣реВрдВ рдФрд░ рдЙрдирдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реВрдВред рдЪреВрдВрдХрд┐ рдЖрдорддреМрд░ рдкрд░ рдХреБрдЫ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реЛрддреА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЙрдиреНрд╣реЗрдВ рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдФрд░ рдЕрдВрдд рдореЗрдВ рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдЬрдЧрд╣ рджреЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рд▓реЗрдХрд┐рди рдЗрд╕ рдмрд╛рд░ рдпрд╣ рдмрд╣реБрдд рд╕рд╛рд░реА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рдХрд▓рд╛ (рдПрд╣, рд╕рд╛рдЬрд╝рд┐рд╢ рдХреЛ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдирд╣реАрдВ рдмрдЪрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ) рдФрд░ рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдирд┐рджрд╛рди рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдХреНрд░рдо рдореЗрдВ рдЙрджреНрдзреГрдд рдХрд░реВрдВрдЧрд╛ред
рд╣рдордиреЗ рдХреНрдпрд╛ рдкрд╛рдпрд╛? 1633 рд╕реАрдПрд╕ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ 833 рдЙрдЪреНрдЪ рдФрд░ рдордзреНрдпрдо рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдБ (рдХреНрд░рдорд╢рдГ 249 рдФрд░ 584,) рдХреЛрдб рдХреА 540,000 рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд╛рд░реА рдХреА рдЧрдИрдВ (рдЦрд╛рд▓реА рдирд╣реАрдВ рд╣реИрдВ)ред рдФрд░ рд╣рд╛рдВ, рдкрд╛рд░рдВрдкрд░рд┐рдХ рд░реВрдк рд╕реЗ рдореИрдВрдиреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХреА рдФрд░ рдХрдо рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ (рдЙрдирдореЗрдВ рд╕реЗ 215 рдереЗ)ред рдореЗрд░реА рдкрд┐рдЫрд▓реА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдПрдордПрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдЪреЗрддрд╛рд╡рдиреА рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╕рднреА рдЪреЗрддрд╛рд╡рдиреА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдирд╣реАрдВ рд╣реИрдВред
рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдЭреВрдареЗ рдЕрд▓рд╛рд░реНрдо рдХреА рд╕рдВрдЦреНрдпрд╛ рд▓рдЧрднрдЧ 30% рдереАред рд▓рдЧрднрдЧ 20% рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдореИрдВ рд╕рд┐рд░реНрдл рдПрдХ рд╕рдЯреАрдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд╣реАрдВ рдирд┐рдХрд╛рд▓ рд╕рдХрд╛ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдПрдХ рддреНрд░реБрдЯрд┐ рдереА рдпрд╛ рдирд╣реАрдВ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдХреЛрдб рд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рдерд╛ред рдФрд░ рдХрдо рд╕реЗ рдХрдо 20% рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдореИрдВрдиреЗ "рдорд╛рдирд╡ рдХрд╛рд░рдХ" рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдЬрд▓реНрджрдмрд╛рдЬреА, рдердХрд╛рди, рдЖрджрд┐ред рд╡реИрд╕реЗ, рд╡рд┐рдкрд░реАрдд рдкреНрд░рднрд╛рд╡ рднреА рд╕рдВрднрд╡ рд╣реИ: рдХреБрдЫ рд╕рдорд╛рди-рдкреНрд░рдХрд╛рд░ рдХреЗ рдЯреНрд░рд┐рдЧрд░, рдЬрд┐рдирдХреА рд╕рдВрдЦреНрдпрд╛ 70-80 рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреА рд╣реИ, рдореИрдВрдиреЗ "рдЕрдЧрд▓рд╛ рд▓реЗрдХрд┐рди рдПрдХ" рджреЗрдЦрд╛, рдЬреЛ рдХрднреА-рдХрднреА рдЙрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝рд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рдерд╛ рдХрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдереЗред
рд╡реИрд╕реЗ рднреА, рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХрд╛ 30% рд╡рд╛рд╕реНрддрд╡рд┐рдХ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХрд╛рдлреА рдмрдбрд╝рд╛ рдкреНрд░рддрд┐рд╢рдд рд╣реИ рдпрджрд┐ рдЖрдк рдЦрд╛рддреЗ рдореЗрдВ рд▓реЗрддреЗ рд╣реИрдВ рдХрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдкреВрд░реНрд╡-рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рдерд╛ред
рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдЬрд┐рди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛, рдЙрдирдХреА рд╕рдВрдЦреНрдпрд╛ рд▓рдЧрднрдЧ 240 рдереА, рдЬреЛ рджрд┐рдП рдЧрдП рдЖрдБрдХрдбрд╝реЛрдВ рдХреА рд╕реАрдорд╛ рдХреЗ рднреАрддрд░ рд╣реИред рдлрд┐рд░ рд╕реЗ, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдпрд╣ рдПрдордПрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЙрддреНрдХреГрд╖реНрдЯ рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдкреНрд░рддрд┐ 1000 рдХреЛрдб рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рдХреЗрд╡рд▓ 0.44 рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдХрд░реЗрдЧрд╛) рдФрд░ рд╢рд╛рдпрдж WinForms рдХреЛрдб рдореЗрдВ рднреА рдЕрдзрд┐рдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВред рдореИрдВ рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рдХрд╛рд░рдгреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ рдФрд░ рдЕрдм рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВред
рддреНрд░реБрдЯрд┐рдпрд╛рдБPVS-Studio:
V3003 'if (A) {...} рдХрд╛ рдЙрдкрдпреЛрдЧ if (A) {...}' рдкреИрдЯрд░реНрди рдХрд╛ рдкрддрд╛ рдЪрд▓рд╛ред рддрд╛рд░реНрдХрд┐рдХ рддреНрд░реБрдЯрд┐ рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рдЪреЗрдХ рд▓рд╛рдЗрди: 213, 224. ButtonStandardAdapter.cs 213
void PaintWorker(PaintEventArgs e, bool up, CheckState state) { up = up && state == CheckState.Unchecked; .... if (up & IsHighContrastHighlighted()) { .... } else if (up & IsHighContrastHighlighted()) { .... } else { .... } .... }
рдпрджрд┐ рдФрд░
рдпрджрд┐ рдмреНрд▓реЙрдХ рд╕рдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред рдХреНрдпрд╛ рдпрд╣ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реИ? рдпрджрд┐ рдЖрдк
IsHighContrastHighlighted рд╡рд┐рдзрд┐ рдХреА рдШреЛрд╖рдгрд╛ рдХреЛ
рджреЗрдЦрддреЗ рд╣реИрдВ , рддреЛ рдЖрдкрдХреЛ рдЗрд╕ рдкрд░ рд╕рдВрджреЗрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:
protected bool IsHighContrastHighlighted() { return SystemInformation.HighContrast && Application.RenderWithVisualStyles && (Control.Focused || Control.MouseIsOver || (Control.IsDefault && Control.Enabled)); }
рд╡рд┐рдзрд┐ рд╢рд╛рдпрдж рдЕрдиреБрдХреНрд░рдорд┐рдХ рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдорд╛рди рд▓реМрдЯрд╛ рд╕рдХрддреА рд╣реИред рдФрд░ рдХреЙрд▓рд░ рд╡рд┐рдзрд┐ рдореЗрдВ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрд╕реНрддрд┐рддреНрд╡ рдХрд╛ рдЕрдзрд┐рдХрд╛рд░ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореИрдВ рд▓реЗрдЦрдХреЛрдВ рдХреЛ рдЗрд╕ рдХреЛрдб рдХреЗ рдЯреБрдХрдбрд╝реЗ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреВрдВрдЧрд╛ред рдмрд╕ рдорд╛рдорд▓реЗ рдореЗрдВред рдпрд╣ рднреА рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдХрд┐ рдЕрдкрд░рд┐рдЪрд┐рдд рдХреЛрдб рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддреЗ рд╕рдордп рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рдирд╛ рдХрд┐рддрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред
PVS-Studio:
V3004 'рддрддреНрдХрд╛рд▓реАрди' рдХрдерди 'рдФрд░' рдХрдерди рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред RichTextBox.cs 1018
public int SelectionCharOffset { get { int selCharOffset = 0; .... NativeMethods.CHARFORMATA cf = GetCharFormat(true);
рдФрд░ рдпрд╣рд╛рдБ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рддреНрд░реБрдЯрд┐ рд╣реИред рд╢рд░реНрдд рдХреЗ рдмрд╛рд╡рдЬреВрдж,
selCharOffset рд╡реИрд░рд┐рдПрдмрд▓ рдХреЛ рд╣рдореЗрд╢рд╛ рд╕рдорд╛рди рдореВрд▓реНрдп рдорд┐рд▓реЗрдЧрд╛ред
WinForms рдХреЛрдб рдореЗрдВ рдРрд╕реА рджреЛ рдФрд░ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВ:
- V3004 'рддрддреНрдХрд╛рд▓реАрди' рдХрдерди 'рдФрд░' рдХрдерди рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред рд╕реНрдкреНрд▓рд┐рдЯрдХреЛрдиреНрдЯрд░ред рдПрд╕рд╕реА 1700
- V3004 'рддрддреНрдХрд╛рд▓реАрди' рдХрдерди 'рдФрд░' рдХрдерди рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред ToolstripProfessionalRenderer.cs 371
PVS-Studio:
V3008 рдЪрд░ рдХреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рджреЛ рдмрд╛рд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рдЧрд▓рддреА рд╣реИред рд▓рд╛рдЗрдиреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ: 681, 680. ProfessionalColorTable.cs 681
internal void InitSystemColors(ref Dictionary<KnownColors, Color> rgbTable) { .... rgbTable[ProfessionalColorTable.KnownColors.msocbvcrCBBdrOuterDocked] = buttonFace; rgbTable[ProfessionalColorTable.KnownColors.msocbvcrCBBdrOuterDocked] = buttonShadow; .... }
рд╡рд┐рдзрд┐
rgbTable рд╢рдмреНрджрдХреЛрд╢ рднрд░рддрд╛ рд╣реИред рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдиреЗ рдПрдХ рдХреЛрдб рдХреЗ рдЯреБрдХрдбрд╝реЗ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЬрд╣рд╛рдВ рдЕрдиреБрдХреНрд░рдо рдореЗрдВ рдПрдХ рд╣реА рдХреБрдВрдЬреА рдкрд░ рджреЛ рдмрд╛рд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдорд╛рди рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВред рдЪреАрдЬреЗрдВ рдареАрдХ рд╣реЛрдВрдЧреА рд▓реЗрдХрд┐рди рдЗрд╕ рдкрджреНрдзрддрд┐ рдореЗрдВ рдЕрднреА рднреА рдРрд╕реЗ 16 рдЯреБрдХрдбрд╝реЗ рд╣реИрдВред рдпрд╣ рдЕрдм рдПрдХ-рдХреА-рдПрдХ рддреНрд░реБрдЯрд┐ рдХреА рддрд░рд╣ рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╡реЗ рдРрд╕рд╛ рдХреНрдпреЛрдВ рдХрд░рддреЗ рд╣реИрдВ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рд░рд╣рд╕реНрдп рдмрдирд╛ рд╣реБрдЖ рд╣реИред рдореБрдЭреЗ рдСрдЯреЛрдЬреЗрдирд░реЗрдЯреЗрдб рдХреЛрдб рдХреЗ рдХреЛрдИ рд╕рдВрдХреЗрдд рдирд╣реАрдВ рдорд┐рд▓реЗред рдпрд╣ рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

рдореИрдВ рдЖрдкрдХреЛ рд╕реВрдЪреА рдореЗрдВ рдкрд╣рд▓реЗ рджрд╕ рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдБ рджреВрдВрдЧрд╛:
- V3008 рдЪрд░ рдХреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рджреЛ рдмрд╛рд░ рдорд╛рди рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рдЧрд▓рддреА рд╣реИред рдЬрд╛рдБрдЪ рд▓рд╛рдЗрдиреЗрдВ: 785, 784ред ProfessionalColorTable.cs 785
- V3008 рдЪрд░ рдХреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рджреЛ рдмрд╛рд░ рдорд╛рди рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рдЧрд▓рддреА рд╣реИред рдЬрд╛рдБрдЪ рд▓рд╛рдЗрдиреЗрдВ: 787, 786ред ProfessionalColorTable.cs 787
- V3008 рдЪрд░ рдХреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рджреЛ рдмрд╛рд░ рдорд╛рди рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рдЧрд▓рддреА рд╣реИред рдЬрд╛рдБрдЪ рд▓рд╛рдЗрдиреЗрдВ: 789, 788
- V3008 рдЪрд░ рдХреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рджреЛ рдмрд╛рд░ рдорд╛рди рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рдЧрд▓рддреА рд╣реИред рдЪреЗрдХ рд▓рд╛рдЗрдиреНрд╕: 791, 790. рдкреНрд░реЛрдлреЗрд╢рдирд▓рдХреЙрдиреНрдлрд╝рд░реНрдЯреЗрдмрд▓ .cs 791
- V3008 рдЪрд░ рдХреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рджреЛ рдмрд╛рд░ рдорд╛рди рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рдЧрд▓рддреА рд╣реИред рдЪреЗрдХ рд▓рд╛рдЗрдиреНрд╕: 797, 796. рдкреНрд░реЛрдлреЗрд╢рдирд▓рдХреЙрдиреНрд╕реНрдЯреЗрдмрд▓ .cs 797
- V3008 рдЪрд░ рдХреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рджреЛ рдмрд╛рд░ рдорд╛рди рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рдЧрд▓рддреА рд╣реИред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 799, 798. рдкреНрд░реЛрдлреЗрд╢рдирд▓рдХреЙрдиреНрд╕реНрдЯреЗрдмрд▓ .cs 799
- V3008 рдЪрд░ рдХреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рджреЛ рдмрд╛рд░ рдорд╛рди рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рдЧрд▓рддреА рд╣реИред рдЪреЗрдХ рд▓рд╛рдЗрдиреНрд╕: 807, 806. рдкреНрд░реЛрдлреЗрд╢рдирд▓ рдХреНрдпреЛрд░рдмрд▓ .cs 807
- V3008 рдЪрд░ рдХреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рджреЛ рдмрд╛рд░ рдорд╛рди рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рдЧрд▓рддреА рд╣реИред рдЬрд╛рдБрдЪ рд▓рд╛рдЗрдиреЗрдВ: 815, 814ред ProfessionalColorTable.cs 815
- V3008 рдЪрд░ рдХреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рджреЛ рдмрд╛рд░ рдорд╛рди рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рдЧрд▓рддреА рд╣реИред рдЬрд╛рдБрдЪ рд▓рд╛рдЗрдиреЗрдВ: 817, 816
- V3008 рдЪрд░ рдХреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рджреЛ рдмрд╛рд░ рдорд╛рди рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рдЧрд▓рддреА рд╣реИред рдЬрд╛рдБрдЪ рд░реЗрдЦрд╛рдПрдБ: 823, 822. рдкреНрд░реЛрдлреЗрд╢рдирд▓рдХреЙрдиреНрд╕реНрдЯреЗрдмрд▓ .cs 823
PVS-Studio:
V3011 рджреЛ рд╡рд┐рдкрд░реАрдд рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рджреВрд╕рд░реА рд╕реНрдерд┐рддрд┐ рд╣рдореЗрд╢рд╛ рдЭреВрдареА рд╣реЛрддреА рд╣реИред рд▓рд╛рдЗрдиреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ: 5242, 5240ред DataGrid.cs 5242
private void CheckHierarchyState() { if (checkHierarchy && listManager != null && myGridTable != null) { if (myGridTable == null)
рд░рд┐рдЯрд░реНрди рдСрдкрд░реЗрдЯрд░ рдХреЛ рдХрднреА рднреА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ,
myGridTable! = рдмрд╛рд╣рд░реА рдореЗрдВ
рдЕрд╢рдХреНрдд рд╕реНрдерд┐рддрд┐
рдЕрдЧрд░ рдмреНрд▓реЙрдХ рдХреЛ рдмрд╛рдж рдореЗрдВ
рд░рд┐рдлреИрдХреНрдЯрд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ред рдФрд░ рдЕрдм
myGridTable == рдирд▓ рдХреА рдЬрд╛рдВрдЪ рдирд┐рд░рд░реНрдердХ рд╣реИред рдХреЛрдб рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕ рдЪреЗрдХ рдХреЛ рд╣рдЯрд╛ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред
PVS-Studio:
V3019 рд╕рдВрднрд╡рддрдГ рдПрдХ рдЧрд▓рдд рд╡реИрд░рд┐рдПрдмрд▓ рдХреА рддреБрд▓рдирд╛ 'рдХреАрд╡рд░реНрдб' рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯрд╛рдЗрдк рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рдмрд╛рдж рдХреА рдЬрд╛рддреА рд╣реИред рдЪрд░ 'рд╡рд╛рдо', 'cscLeft' рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред TypeCodeDomSerializer.cs 611
PVS-Studio:
V3019 рд╕рдВрднрд╡рддрдГ рдПрдХ рдЧрд▓рдд рд╡реИрд░рд┐рдПрдмрд▓ рдХреА рддреБрд▓рдирд╛ 'рдХреАрд╡рд░реНрдб' рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯрд╛рдЗрдк рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рдмрд╛рдж рдХреА рдЬрд╛рддреА рд╣реИред рдЪрд░ 'рд╕рд╣реА', 'cscRight' рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред TypeCodeDomSerializer.cs 615
public int Compare(object left, object right) { OrderedCodeStatementCollection cscLeft = left as OrderedCodeStatementCollection; OrderedCodeStatementCollection cscRight = right as OrderedCodeStatementCollection; if (left == null) { return 1; } else if (right == null) { return -1; } else if (right == left) { return 0; } return cscLeft.Order - cscRight.Order;
рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдиреЗ рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ
рддреБрд▓рдирд╛ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рджреЛ рдЪреЗрддрд╛рд╡рдиреА рджреАред рдХреНрдпрд╛ рд╕рдорд╕реНрдпрд╛ рд╣реИ? рдпрд╣ рд╣реИ рдХрд┐
cscLeft рдФрд░
cscRight рдорд╛рдиреЛрдВ рдХреЛ
рд╢реВрдиреНрдп рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдСрд░реНрдбрд░ рдХрд┐рдП рдЧрдП
рдХреЛрдбреЗрд╕реНрдЯреЗрдореЗрдВрдЯрдореЗрдВрдЯ рдХреЛ
рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд╕рдлрд▓ рдХрд╛рд╕реНрдЯрд┐рдВрдЧ рдХреЗ рдмрд╛рдж рдЙрдиреНрд╣реЗрдВ рдпрд╣ рдорд╛рди рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИред рдлрд┐рд░ рдЕрдВрддрд┐рдо
рд░рд┐рдЯрд░реНрди рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рд╕реНрдерд┐рддрд┐ рддрдм рд╕рдВрднрд╡ рд╣реИ рдЬрдм
рдмрд╛рдПрдВ рдФрд░
рджрд╛рдПрдВ рдкрд╛рд╕ рдХреЗ рд▓рд┐рдП рд╕рднреА рдЬрд╛рдВрдЪ рдФрд░ рд╡рд┐рдзрд┐ рд╕реЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдирд┐рдХрд╛рд╕ рди рд╣реЛред
рдХреЛрдб рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╣рд░ рдЬрдЧрд╣
рдмрд╛рдПрдВ / рджрд╛рдПрдВ рдХреЗ рдмрдЬрд╛рдп
cscLeft / cscRight рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ: рд╡реА
3020 рдПрдХ рд▓реВрдк рдХреЗ рднреАрддрд░ рдмрд┐рдирд╛ рд╢рд░реНрдд 'рдмреНрд░реЗрдХ'ред SelectionService.cs 421
void ISelectionService.SetSelectedComponents( ICollection components, SelectionTypes selectionType) { ....
рдпрд╣ рдЦрдВрдб "рдХреЛрдб рдЧрдВрдз" рдХреЗ рдмрдЬрд╛рдп рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ
рдлреЙрд░реЗрд╕реНрдЯ рд▓реВрдк рдХрд╛ рдЖрдпреЛрдЬрди рд╣реЛрддрд╛ рд╣реИ, рдЙрд╕ рдкрд░ рд╕рд╡рд╛рд▓ рдЙрдарддреЗ рд╣реИрдВред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ: рд╕рдВрдЧреНрд░рд╣ рдХреЗ рддрддреНрд╡реЛрдВ рдХреЛ рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдХрд╛рд░рдг,
ICollection рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ред рд▓реЗрдХрд┐рди рд▓реВрдк рдиреЗ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдПрдХрд▓ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХреНрдпреЛрдВ рдХрд┐рдпрд╛ (рд╕рдВрдЧреНрд░рд╣
рдШрдЯрдХреЛрдВ рдореЗрдВ рдПрдХрд▓ рддрддреНрд╡ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╣реИ),
рдмреНрд░реЗрдХ рдЬреИрд╕реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдорд░реНрдерди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рд╕рдВрднрд╡рддрдГ, рдЙрддреНрддрд░ рдХреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: "рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рд░реВрдк рд╕реЗ, рдпрд╣ рд╣реЛ рдЧрдпрд╛ рд╣реИред" рдХреЛрдб рдмрджрд╕реВрд░рдд рд▓рдЧ рд░рд╣рд╛ рд╣реИред
PVS-Studio:
V3022 рдПрдХреНрд╕рдкреНрд░реЗрд╢рди 'ocxState! = Null' рд╣рдореЗрд╢рд╛ рд╕рдЪ рд╣реЛрддрд╛ рд╣реИред AxHost.cs 2186
public State OcxState { .... set { .... if (value == null) { return; } .... ocxState = value; if (ocxState != null)
рдПрдХ рддрд╛рд░реНрдХрд┐рдХ рддреНрд░реБрдЯрд┐ рдХреЗ рдХрд╛рд░рдг, рдЗрд╕ рдЯреБрдХрдбрд╝реЗ рдореЗрдВ "рдореГрдд рдХреЛрдб" рдЙрддреНрдкрдиреНрди рд╣реБрдЖред
рдЕрдиреНрдп рдмреНрд▓реЙрдХ рдореЗрдВ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдХрднреА рднреА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
PVS-Studio:
V3027 рд╡реИрд░рд┐рдПрдмрд▓ 'e' рдХреЛ рддрд╛рд░реНрдХрд┐рдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЙрд╕реА рддрд╛рд░реНрдХрд┐рдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ рд╢реВрдиреНрдп рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рдерд╛ред ImageEditor.cs 99
public override object EditValue(....) { .... ImageEditor e = ....; Type myClass = GetType(); if (!myClass.Equals(e.GetType()) && e != null && myClass.IsInstanceOfType(e)) { .... } .... }
рд╣рд╛рд▓рдд рдореЗрдВ рдЪрд░
рдИ рдкрд╣рд▓реЗ рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░
рдЕрд╢рдХреНрдд рдХреЗ рдЦрд┐рд▓рд╛рдл рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИред рд╣реИрд▓реЛ,
NullReferenceException ред
рдЗрд╕ рддрд░рд╣ рдХреА рдПрдХ рдФрд░ рддреНрд░реБрдЯрд┐:
PVS-Studio:
V3027 рдЪрд░ 'dropDownItem' рдХрд╛ рддрд╛рд░реНрдХрд┐рдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЙрд╕реА рддрд╛рд░реНрдХрд┐рдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ рд╢реВрдиреНрдп рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рдерд╛ред ToolStripMenuItemDesigner.cs 1351
internal void EnterInSituEdit(ToolStripItem toolItem) { .... ToolStripDropDownItem dropDownItem = toolItem as ToolStripDropDownItem; if (!(dropDownItem.Owner is ToolStripDropDownMenu) && dropDownItem != null && dropDownItem.Bounds.Width < commitedEditorNode.Bounds.Width) { .... } .... }
рд╕реНрдерд┐рддрд┐ рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреЗ рд╕рдорд╛рди рд╣реИ рд▓реЗрдХрд┐рди
рдбреНрд░реЙрдкрдбрд╛рдЙрди рдЗрдЯреЗрдо рдЪрд░ рдХреЗ рд╕рд╛рдеред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд▓рд╛рдкрд░рд╡рд╛рд╣ рдкрд░рд╛рд╡рд░реНрддрди рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИрдВред рд╢рд╛рдпрдж, рд╣рд╛рд▓рдд рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛
! (DropDownItem.Owner ToolStripDropDownMenu) рдХреЛрдб рдореЗрдВ рдмрд╛рдж рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ред
PVS-Studio:
V3030 рдЖрд╡рд░реНрддреА рдЬрд╛рдБрдЪред 'рдХреЙрд▓рдордХрд╛рдЙрдВрдЯ> 0' рдХреА рд╕реНрдерд┐рддрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 3900 рд▓рд╛рдЗрди рдореЗрдВ рд╕рддреНрдпрд╛рдкрд┐рдд рдХреА рдЧрдИ рдереАред рд╕реВрдЪреА рджреГрд╢реНрдпред 3903
internal ColumnHeader InsertColumn( int index, ColumnHeader ch, bool refreshSubItems) { ....
рдПрдХ рдЧрд▓рддреА рдЬреЛ рд╣рд╛рдирд┐рд░рд╣рд┐рдд рд▓рдЧ рд╕рдХрддреА рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдПрдХ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЬрд╛рдВрдЪ рдХреА рдЬрд╛рддреА рд╣реИ рдЬреЛ рдкрд░рд┐рдЪрд╛рд▓рди рддрд░реНрдХ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддреА рд╣реИред рдФрд░ рдХрднреА-рдХрднреА рдпрд╣ рддрдм рднреА рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЖрдкрдХреЛ рдлрд┐рд░ рд╕реЗ рдХреБрдЫ рджреГрд╢реНрдп рдШрдЯрдХ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реВрдЪреА рдореЗрдВ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ред рд▓реЗрдХрд┐рди рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ
рд╕реНрдерд╛рдиреАрдп рдЪрд░
рд╕реНрддрдВрдн рджреЛ рдмрд╛рд░
рдЬрд╛рдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдмрд╣реБрдд рд╣реА рд╕рдВрджрд┐рдЧреНрдз рд╣реИред рдпрд╛ рддреЛ рд╡реЗ рджреВрд╕рд░реЗ рдЪрд░ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ рдпрд╛ рдЙрдиреНрд╣реЛрдВрдиреЗ рдХрд┐рд╕реА рдПрдХ рдЪреЗрдХ рдореЗрдВ рдЧрд▓рдд рд╕реНрдерд┐рддрд┐ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ред
PVS-Studio:
V3061 рдкреИрд░рд╛рдореАрдЯрд░ 'lprcClipRect' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╣рдореЗрд╢рд╛ рд╡рд┐рдзрд┐ рдирд┐рдХрд╛рдп рдореЗрдВ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред WebBrowserSiteBase.cs 281
int UnsafeNativeMethods.IOleInPlaceSite.GetWindowContext( out UnsafeNativeMethods.IOleInPlaceFrame ppFrame, out UnsafeNativeMethods.IOleInPlaceUIWindow ppDoc, NativeMethods.COMRECT lprcPosRect, NativeMethods.COMRECT lprcClipRect, NativeMethods.tagOIFI lpFrameInfo) { ppDoc = null; ppFrame = Host.GetParentContainer(); lprcPosRect.left = Host.Bounds.X; lprcPosRect.top = Host.Bounds.Y; .... lprcClipRect = WebBrowserHelper.GetClipRect();
рдПрдХ рдЕрдирдЬрд╛рдиреА рдЧрд▓рддреАред рд╣рд╛рдВ,
lprcClipRect рдкреИрд░рд╛рдореАрдЯрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдПрдХ рдирдП рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рдЖрд░рдВрднрд┐рдХ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдВрдд рдореЗрдВ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЙрд▓рд┐рдВрдЧ рдХреЛрдб рдореЗрдВ рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╛рд░рд┐рдд рд╕рдВрджрд░реНрдн рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд░рд╣реЗрдЧрд╛, рд╣рд╛рд▓рд╛рдБрдХрд┐ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рдирд╣реАрдВ рдерд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕ рд╡рд┐рдзрд┐ рдореЗрдВ рдЕрдиреНрдп рдЪрд░ рдХреА рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░реЗрдВред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЗрд╕рдХрд╛ рдирд╛рдо ("рдЧреЗрдЯ" рдЙрдкрд╕рд░реНрдЧ) рдпрд╣ рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИ рдХрд┐ рдкрд╛рд░рд┐рдд рдХрд┐рдП рдЧрдП рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд┐рдзрд┐ рдХреЗ рдЕрдВрджрд░ рдХреБрдЫ рдЖрд░рдВрднреАрдХрд░рдг рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдФрд░ рдРрд╕рд╛ рд╣реИред рдкрд╣рд▓реЗ рджреЛ рдкреИрд░рд╛рдореАрдЯрд░ (
ppFrame рдФрд░
ppDoc )
рдЖрдЙрдЯ рдореЙрдбрд┐рдлрд╛рдпрд░ рдХреЗ рд╕рд╛рде рдкрд╛рд╕ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдирдП рдорд╛рди рдорд┐рд▓рддреЗ рд╣реИрдВред рд╕рдВрджрд░реНрдн
lprcPosRect рдФрд░
lpFrameInfo рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрд▓рд╛рд╕ рдлрд╝реАрд▓реНрдбреНрд╕ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдФрд░ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреЗрд╡рд▓
lprcClipRect рдмрд╛рд╣рд░ рдЦрдбрд╝рд╛ рд╣реИред рд╕рдВрднрд╡рддрдГ, рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд▓рд┐рдП
рдЖрдЙрдЯ рдпрд╛
рд░реЗрдл рдореЙрдбрд┐рдлрд╝рд╛рдпрд░ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
PVS-Studio:
V3066 рд╕рдВрднрд╛рд╡рд┐рдд рдЧрд▓рдд рдЖрджреЗрд╢реЛрдВ рдХрд╛ рддрд░реНрдХ 'AdjustCellBorderStyle' рдкрджреНрдзрддрд┐ рд╕реЗ рдкрд╛рд░рд┐рдд рд╣реБрдЖ:'FirstDisplayedRow 'рдФрд░'FirstDisplayedColumn'ред DataGridViewComboBoxCell.cs 1934
protected override void OnMouseMove(DataGridViewCellMouseEventArgs e) { .... dgvabsEffective = AdjustCellBorderStyle( DataGridView.AdvancedCellBorderStyle, dgvabsPlaceholder, singleVerticalBorderAdded, singleHorizontalBorderAdded, isFirstDisplayedRow,
рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЛ рд╕рдВрджреЗрд╣ рдерд╛ рдХрд┐ рдЕрдВрддрд┐рдо рджреЛ рддрд░реНрдХ рдорд┐рд╢реНрд░рд┐рдд рдереЗред рдЪрд▓рд┐рдП
рдПрдбрдЬрд╕реНрдЯрдореЗрдВрдЯ рдХрдВрдЯреНрд░реЛрд▓рд░ рд╡рд┐рдзрд┐ рдХреА рдШреЛрд╖рдгрд╛ рдкрд░ рдПрдХ рдирдЬрд╝рд░
рдбрд╛рд▓рддреЗ рд╣реИрдВ :
public virtual DataGridViewAdvancedBorderStyle AdjustCellBorderStyle( DataGridViewAdvancedBorderStyledataGridViewAdvancedBorderStyleInput, DataGridViewAdvancedBorderStyle dataGridViewAdvancedBorderStylePlaceholder, bool singleVerticalBorderAdded, bool singleHorizontalBorderAdded, bool isFirstDisplayedColumn, bool isFirstDisplayedRow) { .... }
рдЧрд▓рддреА рд▓рдЧрддреА рд╣реИред рд╣рд╛рдВ, рдХреБрдЫ рддрд░реНрдХ рдЕрдХреНрд╕рд░ рд░рд┐рд╡рд░реНрд╕ рдСрд░реНрдбрд░ рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рдЪрд░ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдорд╛рдорд▓рд╛ рд╣реИред рдХреЙрд▓рд░ рдпрд╛ рдХреИрд▓реА рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рдХреБрдЫ рднреА рдЗрд╕ рдЙрдкрдпреЛрдЧ рдкреИрдЯрд░реНрди рдХреЛ рдЗрдВрдЧрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ,
рдмреВрд▓ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЪрд░ рдХреЛ рдорд┐рд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рджреВрд╕рд░рд╛, рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдирд╛рдо рднреА рдирд┐рдпрдорд┐рдд рд╣реИрдВ: рдХреЛрдИ "рд╕реНрд╡реИрдк" рдпрд╛ "рд░рд┐рд╡рд░реНрд╕" рдирд╣реАрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рддрд░рд╣ рдХреА рдЧрд▓рддреА рдХрд░рдирд╛ рдЗрддрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИред рд▓реЛрдЧ рдЕрдХреНрд╕рд░ "рдкрдВрдХреНрддрд┐ / рд╕реНрддрдВрдн" рдЬреЛрдбрд╝реА рдХреЗ рдХреНрд░рдо рдХреЛ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рд╕рдордЭрддреЗ рд╣реИрдВред рдореЗрд░реЗ рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ "рдкрдВрдХреНрддрд┐ / рд╕реНрддрдВрдн" рд╣реИ рдЬреЛ рдкрд░рд┐рдЪрд┐рдд рд╣реИред рд▓реЗрдХрд┐рди
AdjustCellBorderStyle рдирд╛рдордХ рд╡рд┐рдзрд┐ рдХреЗ рд▓реЗрдЦрдХ рдХреЗ рд▓рд┐рдП, рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рдХреНрд░рдо "рдХреЙрд▓рдо / рдкрдВрдХреНрддрд┐" рд╣реИред
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ: 'LOCALE_USER_DEFAULT' рд╡реИрд░рд┐рдПрдмрд▓ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рддреЗ рд╕рдордп V3070 Uninitialized рдЪрд░ 'LANG_USER_DEFAULT' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред NativeMethods.cs 890
internal static class NativeMethods { .... public static readonly int LOCALE_USER_DEFAULT = MAKELCID(LANG_USER_DEFAULT); public static readonly int LANG_USER_DEFAULT = MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT); .... }
рджреБрд░реНрд▓рдн рдЧрд▓рддреАред рд╡рд░реНрдЧ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХрд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХреНрд░рдо рдорд┐рд▓рд╛-рдЬреБрд▓рд╛ рд╣реИред
LOCALE_USER_DEFAULT рдлрд╝реАрд▓реНрдб рдХреЗ рдорд╛рди рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
LANG_USER_DEFAULT рдлрд╝реАрд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЕрднреА рддрдХ рдЖрд░рдВрднреАрдХреГрдд рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдорд╛рди 0. рд╣реИред рд╡реИрд╕реЗ,
LANG_USER_DEFAULT рдлрд╝реАрд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЛрдб рдореЗрдВ рдХрд╣реАрдВ рдФрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореИрдВ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдореАрд▓ рдЧрдпрд╛ рдФрд░ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛рдВрддреНрд╡рдирд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦрд╛ рдЬреЛ рд╕реНрдерд┐рддрд┐ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рддрд╛ рд╣реИред рдореИрдВрдиреЗ WinForms рдХреЛрдб рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рдХреБрдЫ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЛ рдЙрдирдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛:
internal static class NativeMethods { public static readonly int LOCALE_USER_DEFAULT = MAKELCID(LANG_USER_DEFAULT); public static readonly int LANG_USER_DEFAULT = MAKELANGID(0x00, 0x01); public static int MAKELANGID(int primary, int sub) { return ((((ushort)(sub)) << 10) | (ushort)(primary)); } public static int MAKELCID(int lgid) { return MAKELCID(lgid, 0x0); } public static int MAKELCID(int lgid, int sort) { return ((0xFFFF & lgid) | (((0x000f) & sort) << 16)); } } class Program { static void Main() { System.Console.WriteLine(NativeMethods.LOCALE_USER_DEFAULT); } }
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдХрдВрд╕реЛрд▓ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛: 0. рдЕрдм
LOCALE_USER_DEFAULT рдФрд░
LANG_USER_DEFAULT рдлрд╝реАрд▓реНрдб рдХреА рдШреЛрд╖рдгрд╛рдУрдВ рдХреЛ рд╕реНрд╡реИрдк рдХрд░реЗрдВред рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ: 1024ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдХреБрдЫ рдирд╣реАрдВ рд╣реИред
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ: рд╡реА
3080 рд╕рдВрднрд╛рд╡рд┐рдд
рдЕрд╢рдХреНрддрддрд╛ ред 'рд╕реЗрд╕' рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдХреЛрдбрдбреЛрдорд╕реЗрд░рд┐рд▓рд╛рдЗрдЬрд╝рд░рдмреЗрд╕ .cs 562
protected void DeserializeStatement( IDesignerSerializationManager manager, CodeStatement statement) { .... CodeExpressionStatement ces = statement as CodeExpressionStatement; if (ces != null) { .... } else { .... DeserializeExpression(manager, null, ces.Expression);
рдХреЛрдб рдЬреЛ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ "рдХреНрд░реИрд╢" рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдЖрдк
рджреВрд╕рд░реА рд╢рд╛рдЦрд╛ рдореЗрдВ
рддрднреА рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм
ces рд╕рдВрджрд░реНрдн
рд╢реВрдиреНрдп рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛред
рдЗрд╕реА рддрд░рд╣ рдХрд╛ рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг:
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ: рд╡реА
3080 рд╕рдВрднрд╛рд╡рд┐рдд
рдЕрд╢рдХреНрддрддрд╛ ред 'рдХреЙрдореНрдмреЛ рдмреЙрдХреНрд╕' рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред ComboBox.cs 6610
public void ValidateOwnerDrawRegions(ComboBox comboBox, ....) { .... if (comboBox != null) { return; } Rectangle topOwnerDrawArea = new Rectangle(0, 0, comboBox.Width, innerBorder.Top); .... }
рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕реА рдХреЛрдбред рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░,
рдЕрдЧрд░ (comboBox! = Null) рдЪреЗрдХ
if (comboBox == null) рд╕реЗ рднреНрд░рдорд┐рдд рдерд╛ред рдФрд░ рдЗрд╕рд▓рд┐рдП, рд╣рдо рдПрдХ рдФрд░
NullReferenceException рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ
редрд╣рдордиреЗ рджреЛ рд╕реНрдкрд╖реНрдЯ
рд╡реА 3080 рддреНрд░реБрдЯрд┐рдпреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдЖрдк рдПрдХ рд╡рд┐рдзрд┐ рдХреЗ рднреАрддрд░ рд╕рдВрднрд╛рд╡рд┐рдд рдЕрд╢рдХреНрдд рд╕рдВрджрд░реНрдн рдЙрдкрдпреЛрдЧ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди
V3080 рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХ рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рд╣реИ рдФрд░ рд╡рд┐рдзрд┐ рдХреЙрд▓ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд▓рд┐рдП рдРрд╕реА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдкрд╛ рд╕рдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдмрд╣реБрдд рдкрд╣рд▓реЗ рд╣рдордиреЗ рдбреЗрдЯрд╛рдлреНрд▓реЛ рдФрд░ рдЗрдВрдЯрд░рдкреНрд░реЛрдбреЗрдХреНрдЯрд▓ рдПрдирд╛рд▓рд┐рд╕рд┐рд╕ рдореИрдХреЗрдирд┐рдЬреНрдо рдореЗрдВ рдХрд╛рдлреА рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ рд╣реИред рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦ "
Nullable Reference types in C # 8.0 рдФрд░ static analysis " рдореЗрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣рд╛рдБ WinForms рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреА рддреНрд░реБрдЯрд┐ рдкрд╛рдИ рдЧрдИ рд╣реИ:
PVS- рд╕реНрдЯреВрдбрд┐рдпреЛ:
V3080 'n.TT' рдкрд░ рд╡рд┐рдзрд┐ рдХреЗ рдЕрдВрджрд░ рд╕рдВрднрд╡ рдЕрд╢рд╛рдВрддрд┐ рдХреЛ рд░реЛрдХрдиреЗред 1 рддрд░реНрдХ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ: contentReaderред ResXResourceReader.cs 267
private void EnsureResData() { .... XmlTextReader contentReader = null; try { if (fileContents != null) { contentReader = new XmlTextReader(....); } else if (reader != null) { contentReader = new XmlTextReader(....); } else if (fileName != null || stream != null) { .... contentReader = new XmlTextReader(....); } SetupNameTable(contentReader);
рджреЗрдЦреЛ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ
рд╕рд╛рдордЧреНрд░реА рд╢рд░реАрд░ рдореЗрдВ рдЪрд░ рдЪрд░ред рдирд▓ рдХреЗ рд╕рд╛рде рдЖрд░рдВрднреАрдХрд░рдг рдХреЗ рдмрд╛рдж, рдЗрд╕реЗ рдПрдХ рдЪреЗрдХ рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд▓реЗрдХрд┐рди рдЪреЗрдХреЛрдВ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛
рдЕрдиреНрдп рдмреНрд▓реЙрдХ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдХреБрдЫ рджреБрд░реНрд▓рдн рдорд╛рдорд▓реЛрдВ рдореЗрдВ (рдпрд╛ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд░рд┐рдлреНрд▓реЗрдХреНрдЯрд░рд┐рдВрдЧ рдХреЗ рдХрд╛рд░рдг) рд╕рдВрджрд░реНрдн рдЕрднреА рднреА рдЕрд╢рдХреНрдд рд░рд╣
рд╕рдХрддрд╛ рд╣реИред рдлрд┐рд░ рдЗрд╕реЗ
SetupNameTable рдкрджреНрдзрддрд┐ рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрд╣рд╛рдБ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЬрд╛рдБрдЪ рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
private void SetupNameTable(XmlReader reader) { reader.NameTable.Add(ResXResourceWriter.TypeStr); reader.NameTable.Add(ResXResourceWriter.NameStr); .... }
рдпрд╣ рд╕рдВрднрд╛рд╡рд┐рдд рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдХреЛрдб рд╣реИред
рдФрд░ рдПрдХ рдФрд░ рддреНрд░реБрдЯрд┐ рдЬрд╣рд╛рдВ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЛ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╕реЗ рдЧреБрдЬрд░рдирд╛ рдкрдбрд╝рд╛:
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ: рд╡реА
3080 рд╕рдВрднрд╛рд╡рд┐рдд
рдЕрд╢рдХреНрддрддрд╛ ред рдирд┐рд░реАрдХреНрд╖рдг 'рд▓реЗрдЖрдЙрдЯ' рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред DockAndAnchorLayout.cs 156
private static Rectangle GetAnchorDestination( IArrangedElement element, Rectangle displayRect, bool measureOnly) { .... AnchorInfo layout = GetAnchorInfo(element); int left = layout.Left + displayRect.X; .... }
рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХрд╛ рджрд╛рд╡рд╛ рд╣реИ рдХрд┐
GetAnchorInfo рд╡рд┐рдзрд┐ рд╕реЗ рдПрдХ рд╢реВрдиреНрдп рд╕рдВрджрд░реНрдн рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдЬреЛ
рдмрд╛рдПрдВ рдорд╛рди рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╕рдордп рдПрдХ рдЕрдкрд╡рд╛рдж рдХрд╛ рдХрд╛рд░рдг рд╣реЛрдЧрд╛ред рдЪрд▓рд┐рдП рдкреВрд░реА рдХреЙрд▓ рдЪреЗрди рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╣реИрдВ рдФрд░ рдЬрд╛рдБрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рд╕рдЪ рд╣реИ:
private static AnchorInfo GetAnchorInfo(IArrangedElement element) { return (AnchorInfo)element.Properties.GetObject(s_layoutInfoProperty); } public object GetObject(int key) => GetObject(key, out _); public object GetObject(int key, out bool found) { short keyIndex = SplitKey(key, out short element); if (!LocateObjectEntry(keyIndex, out int index)) { found = false; return null; }
рджрд░рдЕрд╕рд▓, рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдХреЙрд▓ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рд╡рд╛рд▓реА
GetObject рд╡рд┐рдзрд┐
рд╢реВрдиреНрдп рд╣реЛ рдЬрд╛рдПрдЧреА, рдЬрд┐рд╕реЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдВрдЪ рдХреЗ рдХреЙрд▓рд░ рд╡рд┐рдзрд┐ рдХреЛ рдкрд╛рд╕ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╕рдВрднрд╡рддрдГ,
GetAnchorDestination рдкрджреНрдзрддрд┐ рдореЗрдВ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдХреЛ рдХрд╡рд░ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
WinForms рдХреЛрдб рдореЗрдВ
70 рд╕реЗ рдЕрдзрд┐рдХ рдРрд╕реА рдмрд╣реБрдд рд╕реА рддреНрд░реБрдЯрд┐рдпрд╛рдБ рд╣реИрдВред рд╡реЗ рд╕рднреА рдПрдХ рдЬреИрд╕реЗ рджрд┐рдЦрддреЗ рд╣реИрдВ рдФрд░ рдореИрдВ рдЙрдиреНрд╣реЗрдВ рд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ:
V3091 рдЕрдиреБрднрд╡рдЬрдиреНрдп рд╡рд┐рд╢реНрд▓реЗрд╖рдгред рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдПрдХ рдЯрд╛рдЗрдкреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╢рд╛рдмреНрджрд┐рдХ рдХреЗ рдЕрдВрджрд░ рдореМрдЬреВрдж рд╣реИ: "ShowCheckMargin"ред 'ShowCheckMargin' рд╢рдмреНрдж рд╕рдВрджрд┐рдЧреНрдз рд╣реИред рд╕рдВрдкрддреНрддрд┐ рдирд╛рдоред 136
internal class PropertyNames { .... public static readonly string ShowImageMargin = "ShowCheckMargin"; ... public static readonly string ShowCheckMargin = "ShowCheckMargin"; .... }
рдПрдХ рддреНрд░реБрдЯрд┐ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг рдЬрд┐рд╕реЗ рдвреВрдВрдврдирд╛ рдЗрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред рдЬрдм рдХреНрд▓рд╛рд╕ рдлрд╝реАрд▓реНрдбреНрд╕ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЙрд╕реА рд╡реИрд▓реНрдпреВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдБрдХрд┐ рдХреЛрдб рдХреЗ рд▓реЗрдЦрдХ рдХрд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЗрд░рд╛рджрд╛ рдирд╣реАрдВ рдерд╛ (рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдХреЛ рджреЛрд╖ рджреЗрдирд╛ рд╣реИ)ред рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдиреЗ рдпрд╣ рдирд┐рд╖реНрдХрд░реНрд╖ рдЪрд░ рдХреЗ рдирд╛рдореЛрдВ рдФрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рддрд╛рд░реЛрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рд╣реИред рдореИрдВрдиреЗ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХреЗрд╡рд▓ рд▓рд╛рдЗрдиреЗрдВ рджреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдпрд╣ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрд╣ рдХреЛрдб рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:

рдЗрд╕ рддрд░рд╣ рдХреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЙрдкрдХрд░рдгреЛрдВ рдХреА рд╕рднреА рд╢рдХреНрддрд┐ рдФрд░ рдЕрдВрддрд╣реАрди рдзреНрдпрд╛рди рдЕрд╡рдзрд┐ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред
PVS-Studio:
V3095 рдирд▓ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ '
currentForm ' рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 3386, 3404. Application.cs 3386
private void RunMessageLoopInner(int reason, ApplicationContext context) { .... hwndOwner = new HandleRef( null, UnsafeNativeMethods.GetWindowLong( new HandleRef(currentForm, currentForm.Handle),
рдпрд╣ рдХреНрд▓рд╛рд╕рд┐рдХ рд╣реИред
CurrentForm рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЬрд╛рдБрдЪ рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдлрд┐рд░ рдпрд╣ рдХреЛрдб рдореЗрдВ
рдЕрд╢рдХреНрдд рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХреА рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдореИрдВ рдЖрдкрдХреЛ рд╕рд▓рд╛рд╣ рджреЗ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рд╕рдВрджрд░реНрдн рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдЖрдк рдЕрдзрд┐рдХ рдЪреМрдХрд╕ рд░рд╣реЗрдВ рдФрд░ рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ :)ред
рдЗрд╕ рддрд░рд╣ рдХреА рдПрдХ рдФрд░ рддреНрд░реБрдЯрд┐:
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ:
V3095 'рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдбрдмреНрд░рд╢' рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдЗрд╕реЗ рд╢реВрдиреНрдп рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЬрд╛рдБрдЪ рд░реЗрдЦрд╛рдПрдБ: 2331, 2334ред DataGrid.cs 2331
public Color BackgroundColor { .... set { .... if (!value.Equals(backgroundBrush.Color))
WinForms рдХреЛрдб рдореЗрдВ, рдореИрдВ
60 рд╕реЗ рдЕрдзрд┐рдХ рдРрд╕реА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЖрдпрд╛ рдерд╛ред рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдЙрдирдореЗрдВ рд╕реЗ рд╕рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВ рдФрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдзреНрдпрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдм рд▓реЗрдЦ рдореЗрдВ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдирд╛ рдЗрддрдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЦреБрдж рдХреЛ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рджреЛ рддрдХ рд╕реАрдорд┐рдд рдХрд░реВрдВрдЧрд╛ред
PVS-Studio:
V3125 '_propInfo' рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЗрд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдирд┐рд╖реНрдкрд╛рджрди рд╢рд╛рдЦрд╛рдУрдВ рдореЗрдВ рдирд▓ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 996, 982. рдмрд╛рдЗрдВрдбрд┐рдВрдЧ.рдХреЗ 996
private void SetPropValue(object value) { .... if (....) { if .... else if (_propInfo != null) .... } else { _propInfo.SetValue(_control, value); } .... }
рдкреВрд░реНрдгрддрд╛ рдХреЗ рд▓рд┐рдП - рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рдХреНрд▓рд╛рд╕рд┐рдХ, рддреНрд░реБрдЯрд┐
V3125 ред рд╡рд┐рдкрд░реАрдд рд╕реНрдерд┐рддрд┐ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдбреЗрд╡рд▓рдкрд░ рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд
рдЕрд╢рдХреНрдд рд╕рдВрджрд░реНрдн рдХрд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕реЗ рдЕрд╢рдХреНрдд рдХреЗ рдЦрд┐рд▓рд╛рдл рдЬрд╛рдБрдЪрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдб рдореЗрдВ рдЗрд╕реЗ рдЖрдЧреЗ рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИред
рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреА рдПрдХ рдФрд░ рддреНрд░реБрдЯрд┐:
PVS-Studio:
V3125 'рдорд╛рд▓рд┐рдХ' рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд▓ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд░реЗрдЦрд╛рдПрдБ рдЬрд╛рдВрдЪреЗрдВ: 64, 60. рдлреНрд▓реИрдЯрдмрдЯрди рдПрдкрд┐рдпрд░реЗрдВрд╕ .cs 64
public int BorderSize { .... set { .... if (owner != null && owner.ParentInternal != null) { LayoutTransaction.DoLayoutIf(....); } owner.Invalidate();
рд▓рд╡рд▓реАред рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдмрд╛рд╣рд░реА рд╢реЛрдзрдХрд░реНрддрд╛ рдХрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИред рдЖрдЦрд┐рд░рдХрд╛рд░, рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЛ рдЗрди рджреЛ
V3125 рдХреЗ рдЕрд▓рд╛рд╡рд╛ WinForms рдХреЛрдб рдореЗрдВ
50 рд╕реЗ рдЕрдзрд┐рдХ рдРрд╕реЗ рдкреИрдЯрд░реНрди
рдорд┐рд▓реЗ ред рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдкрд╛рд╕ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХреБрдЫ рд╣реИред
рдФрд░ рдЕрдВрдд рдореЗрдВ, рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рддреНрд░реБрдЯрд┐ рд╣реИ, рдореЗрд░реА рд░рд╛рдп рдореЗрдВред
PVS-Studio:
V3137 'hCurrentFont' рд╡реИрд░рд┐рдПрдмрд▓ рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрдд рддрдХ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред DeviceContext2.cs 241
sealed partial class DeviceContext : .... { WindowsFont selectedFont; .... internal void DisposeFont(bool disposing) { if (disposing) { DeviceContexts.RemoveDeviceContext(this); } if (selectedFont != null && selectedFont.Hfont != IntPtr.Zero) { IntPtr hCurrentFont = IntUnsafeNativeMethods.GetCurrentObject( new HandleRef(this, hDC), IntNativeMethods.OBJ_FONT); if (hCurrentFont == selectedFont.Hfont) {
рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдиреЗ рдХреНрдпрд╛ рд╕рддрд░реНрдХ рдХрд┐рдпрд╛, рдФрд░ рдпрд╣ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдВрдХреЗрдд рдХреНрдпреЛрдВ рджреЗ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдЪрд░ рдХреЛ рдПрдХ рдорд╛рди рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдб рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрднреА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
DeviceContext2.cs рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рдЖрдВрд╢рд┐рдХ рд╡рд░реНрдЧ рд╣реИред
DisposeFont рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдореБрдХреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдбрд┐рд╡рд╛рдЗрд╕ рд╕рдВрджрд░реНрдн рдФрд░ рдлрд╝реЙрдиреНрдЯред рдмреЗрд╣рддрд░ рд╕рдордЭ рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдкреВрд░реА
рдбрд┐рд╕реНрдкреЛрдЬрд╝рдиреНрдЯ рд╡рд┐рдзрд┐ рджреА рд╣реИред рд╕реНрдерд╛рдиреАрдп рдЪрд░
hCurrentFont рдкрд░ рдзреНрдпрд╛рди
рджреЗрдВ ред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╡рд┐рдзрд┐ рдореЗрдВ рдЗрд╕ рдЪрд░ рдХреА рдШреЛрд╖рдгрд╛ рдЙрд╕реА рдирд╛рдо рдХреЗ рд╡рд░реНрдЧ рдХреНрд╖реЗрддреНрд░ рдХреЛ рдЫреБрдкрд╛рддреА рд╣реИред рдореБрдЭреЗ
DeviceContext рдХреНрд▓рд╛рд╕ рдХреЗ рджреЛ рддрд░реАрдХреЗ рдорд┐рд▓реЗ рдЬрд╣рд╛рдБ
hCurrentFont рдирд╛рдо рд╡рд╛рд▓реЗ
рдлрд╝реАрд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
public IntPtr SelectFont(WindowsFont font) { .... hCurrentFont = font.Hfont; .... } public void ResetFont() { .... hCurrentFont = hInitialFont; }
ResetFont рд╡рд┐рдзрд┐ рдХреЛ рджреЗрдЦреЗрдВред рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐ рдмрд┐рд▓реНрдХреБрд▓ рд╡рд╣реА рд╣реИ рдЬреЛ
рдбрд┐рд╕реНрдкреЛрдЬрд╝рд▓ рд╡рд┐рдзрд┐
рд╕рдмрдмреНрд▓реЙрдХ рдореЗрдВ рдХрд░рддреА рд╣реИ
рдЕрдЧрд░ (рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдмрддрд╛рддреЗ рд╣реИрдВ)ред рдЗрд╕реА рдирд╛рдо рдХрд╛
hCurrentFont рдлрд╝реАрд▓реНрдб
DeviceContext.cs рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЖрдВрд╢рд┐рдХ рд╡рд░реНрдЧ рдХреЗ рдХрд┐рд╕реА рдЕрдиреНрдп рднрд╛рдЧ рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
sealed partial class DeviceContext : .... { .... IntPtr hInitialFont; .... IntPtr hCurrentFont;
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрдХ рд╕реНрдкрд╖реНрдЯ рдЧрд▓рддреА рдХреА рдЧрдИ рдереАред рдПрдХ рдФрд░ рд╕рд╡рд╛рд▓ рдЗрд╕рдХреЗ рдорд╣рддреНрд╡ рдореЗрдВ рд╣реИред рдЕрдм, рдЯрд┐рдкреНрдкрдгреА "рдЪрдпрдирд┐рдд рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдлрд╝реЙрдиреНрдЯ рд╡рд╛рдкрд╕" рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдЕрдиреБрднрд╛рдЧ рдореЗрдВ
DisposeFont рд╡рд┐рдзрд┐ рдХреЗ рдХрд╛рдо рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк,
hCurrentFont рдлрд╝реАрд▓реНрдб рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЗрд╡рд▓ рдХреЛрдб рдХреЗ рд▓реЗрдЦрдХ рд╣реА рд╕рдЯреАрдХ рдирд┐рд░реНрдгрдп рджреЗ рд╕рдХрддреЗ рд╣реИрдВред
рдирд┐рд╖реНрдХрд░реНрд╖рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рдмрд╛рд░, рдореБрдЭреЗ рдПрдордПрд╕ рдХреА рдереЛрдбрд╝реА рдЖрд▓реЛрдЪрдирд╛ рдХрд░рдиреА рд╣реЛрдЧреАред WinForms рдореЗрдВ, рдмрд╣реБрдд рд╕рд╛рд░реА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВ рдЬрд┐рдирдХреЗ рд▓рд┐рдП рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХрд╛ рдкреВрд░рд╛ рдзреНрдпрд╛рди рдЖрд╡рд╢реНрдпрдХ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рдХреБрдЫ рдЬрд▓реНрджрдмрд╛рдЬреА рдХрд╛ рджреЛрд╖ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде MS .NET .NET 3 рдФрд░ рдШрдЯрдХреЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ WinForms рднреА рд╢рд╛рдорд┐рд▓ рд╣реИред рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, WinForms рдХреЛрдб рдЕрднреА рднреА "рдХрдЪреНрдЪрд╛" рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╕реНрдерд┐рддрд┐ рдЬрд▓реНрдж рд╣реА рдмреЗрд╣рддрд░ рд╣реЛрдЧреАред
рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рджреВрд╕рд░рд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░рд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗрд╡рд▓ рдЙрдирдХреА рдЦреЛрдЬ рдореЗрдВ рдмреЗрд╣рддрд░ рд╣реЛ рдЧрдпрд╛ рд╣реИ :)ред
рд╡реИрд╕реЗ, рдореЗрд░реЗ рд╕рд╣рдпреЛрдЧреА рд╕рд░реНрдЧреЗрдИ рд╡рд╛рд╕рд┐рд▓рд┐рд╡ рдХрд╛ рдПрдХ рд▓реЗрдЦ рдЬрд▓реНрдж рд╣реА рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рд╡рд╣ .NET рдХреЛрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдХреЛрдб рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреА рдЦреЛрдЬ рдФрд░ рдЦреЛрдЬ рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЙрдирдХрд╛ рдХрд╛рдо .NET рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдореЗрдВ рднреА рдпреЛрдЧрджрд╛рди рджреЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рд╣рдореЗрд╢рд╛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдЙрдирдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред
рдФрд░ рдЬреЛ рд▓реЛрдЧ рдЕрдкрдиреЗ рдЙрддреНрдкрд╛рджреЛрдВ рдХреЛ рдЕрдкрдиреЗ рджрдо рдкрд░ рд╕реБрдзрд╛рд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдпрд╛ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдЦреЛрдЬ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдореИрдВ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ ред
рд╕рднреА рдХреЛ рдХреНрд▓реАрди рдХреЛрдб!