
рд╕рдордп-рд╕рдордп рдкрд░, рд╣рдо рдЙрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдкрд░ рд▓реМрдЯрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдордиреЗ рдкрд╣рд▓реЗ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдерд╛ рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦ рд▓рд┐рдЦреЗ рдереЗред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рджреЛ рдХрд╛рд░рдг рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╣рдорд╛рд░рд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХрд┐рддрдирд╛ рдмреЗрд╣рддрд░ рд╣реЛ рдЧрдпрд╛ рд╣реИред рджреВрд╕рд░реЗ, рдпрд╣ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓реЗрдЦрдХреЛрдВ рдиреЗ рд╣рдорд╛рд░реЗ рд▓реЗрдЦ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рддреНрд░реБрдЯрд┐ рд░рд┐рдкреЛрд░реНрдЯ рд╣реИ рдХрд┐ рд╣рдо рдЖрдорддреМрд░ рдкрд░ рдЙрдиреНрд╣реЗрдВ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рдмреЗрд╢рдХ, рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╣рдорд╛рд░реА рднрд╛рдЧреАрджрд╛рд░реА рдХреЗ рдмрд┐рдирд╛ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рд╣рдореЗрд╢рд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдорд╛рд░реЗ рдкреНрд░рдпрд╛рд╕ рдХрд┐рд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреЗ рд╣реИрдВред рд░реЛрдЬрд▓рд┐рди рдХреЛрдИ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рдерд╛ред рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдПрдХ рдкрд┐рдЫрд▓рд╛ рд╕рдореАрдХреНрд╖рд╛ рд▓реЗрдЦ 23 рджрд┐рд╕рдВрдмрд░, 2015 рддрдХ рдХрд╛ рд╣реИред рдпрд╣ рдХрд╛рдлреА рд▓рдВрдмрд╛ рд╕рдордп рд╣реИ, рдЗрд╕ рдорд╛рд░реНрдЧ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рд╣рдорд╛рд░реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдиреЗ рдЗрд╕ рджреМрд░рд╛рди рдЗрд╕рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдпрд╛рддреНрд░рд╛ рдХреА рд╣реИред рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рд░реЛрдЬрд╝рд▓рд┐рди рдЗрд╕ рддрдереНрдп рд╕реЗ рднреА рдЕрддрд┐рд░рд┐рдХреНрдд рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ рдХрд┐ C # рд╡рд┐рд╢реНрд▓реЗрд╖рдХ PVS-Studio рдХрд╛ рдореВрд▓ рдЖрдзрд╛рд░ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдореЗрдВ рдмрд╣реБрдд рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред рд╣рдо рджреВрд╕рд░реА рдЬрд╛рдВрдЪ рдХреА рд╡реНрдпрд╡рд╕реНрдерд╛ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдПрдВрдЧреЗ рдХрд┐ рдХреНрдпрд╛ рдирдпрд╛ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ (рд▓реЗрдХрд┐рди рдЪрд▓реЛ рдЖрд╢рд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХреБрдЫ рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ) рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд╣рд╛рдВ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИред
рд░реЛрдЬрд▓рд┐рди (рдпрд╛ .NET рдХрдВрдкрд╛рдЗрд▓рд░ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо) рд╢рд╛рдпрдж рд╣рдорд╛рд░реЗ рдХрдИ рдкрд╛рдардХреЛрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдпрд╣ рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рдХреЗ рд╕реА # рдФрд░ рд╡рд┐рдЬрд╝реБрдЕрд▓ рдмреЗрд╕рд┐рдХ .NET рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдУрдкрди рд╕реЛрд░реНрд╕ рдХрдВрдкрд╛рдЗрд▓рд░ рдФрд░ рдПрдкреАрдЖрдИ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рд╕реЛрд░реНрд╕ рдХреЛрдб
GitHub рдкрд░ рдЙрдкрд▓рдмреНрдз
рд╣реИ ред
рдореИрдВрдиреЗ рдЗрд╕ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХрд╛ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рдирд╣реАрдВ рджрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЕрдкрдиреЗ рд╕рд╣рдпреЛрдЧреА рд╕рд░реНрдЧреЗрдИ рд╡рд╛рд╕рд┐рд▓рд┐рд╡реЗ рдХреЗ рд▓реЗрдЦ "
рд░реЛрд╕рд▓рд┐рди рд╕реЗ рдкрд░рд┐рдЪрдп "
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдХреЛ рд╕рд▓рд╛рд╣ рджреВрдВрдЧрд╛ рдХрд┐ "
рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ ред" рдЗрд╕ рд▓реЗрдЦ рд╕реЗ рдЖрдк рди рдХреЗрд╡рд▓ рд░реЛрдЬрд╝рд▓рд┐рди рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдпрд╣ рднреА рдХрд┐ рд╣рдо рдЗрд╕ рдордВрдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░рддреЗ рд╣реИрдВред
рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рд░реЛрдЬрд▓рд┐рди рдЪреЗрдХ "
рдирдП рд╕рд╛рд▓ рдХреА рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ 6.00 рдХреА рд░рд┐рд▓реАрдЬ: рд░реЛрдЬрд▓рд┐рди рдХреА рдЬрд╛рдВрдЪ" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░реЗ рд╕рд╣рдпреЛрдЧреА рдЖрдВрджреНрд░реЗрдИ рдХрд╛рд░рдкреЛрд╡ рджреНрд╡рд╛рд░рд╛ рдЖрдЦрд┐рд░реА рд▓реЗрдЦ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрд╛рдж рддреАрди рд╕рд╛рд▓ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рдмреАрдд рдЪреБрдХреЗ рд╣реИрдВред рдЗрд╕ рд╕рдордп рдХреЗ рджреМрд░рд╛рди, C # PVS-Studio рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдиреЗ рдХрдИ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдкреНрд░рд╛рдкреНрдд рдХреА рд╣реИрдВред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдПрдВрдбреНрд░реА рдХрд╛ рд▓реЗрдЦ рдПрдХ рддрд░рд╣ рдХрд╛ "рдЯреЗрд╕реНрдЯ рдмреЙрд▓" рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рддрдм рд╕реА # рдПрдирд╛рд▓рд╛рдЗрдЬрд╝рд░ рдХреЗрд╡рд▓ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рдХреЗ рдмрд╛рд╡рдЬреВрдж, рддрдм рднреА, рдмрд┐рдирд╛ рд╢рд░реНрдд рдЙрдЪреНрдЪ-рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рд░реЛрдЬрд╝рд▓рд┐рди рджрд┐рд▓рдЪрд╕реНрдк рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗред рд╕реА # рдХреЛрдб рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдореЗрдВ рдЕрдм рддрдХ рдХреНрдпрд╛ рдмрджрд▓рд╛рд╡ рдЖрдпрд╛ рд╣реИ, рдЬреЛ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдЧрд╣рди рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛?
рдкрд┐рдЫрд▓реЗ рд╕рдордп рдореЗрдВ, рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЛрд░ рдФрд░ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рджреЛрдиреЛрдВ рд╡рд┐рдХрд╕рд┐рдд рд╣реБрдП рд╣реИрдВред рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2017 рдФрд░ рд░реЛрд╕рд▓рд┐рди 2.0 рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛, рд╕рд╛рде рд╣реА рд╕рд╛рде MSBuild рдХреЗ рд╕рд╛рде рдЧрд╣рди рдПрдХреАрдХрд░рдг рднреА рдерд╛ред рдЖрдк MSBuild рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдорд╛рд░реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдФрд░ рдЙрди рдХрд╛рд░рдгреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рд╣рдореЗрдВ рдЕрдкрдиреЗ рд╕рд╣рдпреЛрдЧреА рдкрд╛рд╡реЗрд▓ рдпреЗрд░реЗрдореЗрд╡ рджреНрд╡рд╛рд░рд╛ рд▓реЗрдЦ рдореЗрдВ рдЗрд╕реЗ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛, "
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2017 рдФрд░ рд░реЛрдЬрд╝рд▓рд┐рди 2.0 рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди: рдХрднреА-рдХрднреА рддреИрдпрд╛рд░ рд╕рдорд╛рдзрд╛рди рдЙрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реЛрддрд╛ рдЬрд┐рддрдирд╛ рд▓рдЧрддрд╛ рд╣реИред рдПрдХ рдирдЬрд╝рд░ рдореЗрдВ ред тАЭ
рдЕрдм рд╣рдо рдЙрд╕реА рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд░реЛрдЬрд▓рд┐рди 3.0 рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рд╣рдордиреЗ рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2017 рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдерд╛, рдЕрд░реНрдерд╛рддреН, рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЯреВрд▓рд╕реЗрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдЬреЛ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдбрд┐рд╕реНрдЯреНрд░реАрдмреНрдпреВрд╢рди рдХрд┐рдЯ рдореЗрдВ "рд╕реНрдЯрдм" рдХреЗ рд╕рд╛рде рдПрдХ рдЦрд╛рд▓реА рдмреАрдмреАрдпрд▓реНрдб.exe рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрддрд╛ рд╣реИред рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдпрд╣ рдПрдХ "рдмреИрд╕рд╛рдЦреА" рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ (рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рдХрдо рдкреЛрд░реНрдЯреЗрдмрд┐рд▓рд┐рдЯреА рдХреЗ рдХрд╛рд░рдг рддреАрд╕рд░реА-рдкреИрдЯреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП MSBuild рдПрдкреАрдЖрдИ рдмрд╣реБрдд рдЕрдиреБрдХреВрд▓ рдирд╣реАрдВ рд╣реИ), рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдиреЗ рд╣рдореЗрдВ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2017 рдХреЗ рдЬреАрд╡рди рдХреЗ рджреМрд░рд╛рди рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рджрд░реНрдж рд░рд╣рд┐рдд рдХрдИ рд░реЛрдЬрд▓рд┐рди рдХреЛ рд░рд╛рд╣рдд рджреЗрдиреЗ рдореЗрдВ рдорджрдж рдХреА рд╣реИред рдФрд░ рдЕрдм, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдУрд╡рд░рд▓реЗ рдХреЗ рд╕рд╛рде, рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2019 рдХреЗ рдЙрдиреНрдирдпрди рдХреЗ рд╕рд╛рде-рд╕рд╛рде MSBuild рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдкреВрд░реНрдг рдкрд┐рдЫрдбрд╝реЗ рд╕рдВрдЧрддрддрд╛ рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдПред
рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЛрд░ рдореЗрдВ рднреА рдХрдИ рд╕реБрдзрд╛рд░ рд╣реБрдП рд╣реИрдВред рдореБрдЦреНрдп рдирд╡рд╛рдЪрд╛рд░реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдкреВрд░реНрдг рд╡рд┐рдХрд╕рд┐рдд рдЗрдВрдЯрд░рдкреНрд░реЛрдбреЗрдХреНрдЯреЛрд░рд▓ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╣реИ, рдЗрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдирд┐рд╖реНрдкрд╛рджрди рд╢рд╛рдЦрд╛рдУрдВ рдХреА рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдФрд░ рд╡рд╛рдкрд╕реА рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рддрд░реАрдХреЛрдВ рдХреЗ рдЗрдирдкреБрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдПред
рддрд░реАрдХреЛрдВ рдХреЗ рдЕрдВрджрд░ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдХрд░реАрдм рд╣реИ, рдЬрдмрдХрд┐ рдЗрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рд╡рд╣рд╛рдВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдСрдЯреЛ-рдПрдиреЛрдЯреЗрд╢рди рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдирд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рдЦрддрд░рдирд╛рдХ рдбреЗрд░реЗрдлреЗрд░рд┐рдВрдЧ)ред рдпрд╣ рдХрд┐рд╕реА рднреА рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХреНрд╕ рдХреЛ рдбреЗрдЯрд╛-рдкреНрд░рд╡рд╛рд╣ рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЦрддрд░рдирд╛рдХ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ рдЬреЛ рдХрд┐рд╕реА рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдПрдХ рд╡рд┐рдзрд┐ рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╕рдордп рд╣реЛрддреА рд╣реИрдВред рдкрд╣рд▓реЗ, рдЬрдм рдРрд╕реА рдЦрддрд░рдирд╛рдХ рдЬрдЧрд╣реЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рд╣реБрдИ рдереА, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЗрд╕ рддрд░рд╣ рдХреА рд╡рд┐рдзрд┐ рдХреЗ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдЗрдирдкреБрдЯ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдирд╣реАрдВ рдЬрд╛рди рд╕рдХрддреЗ рдереЗред рдЕрдм рд╣рдо рдЦрддрд░реЗ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╕рднреА рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдЬрд╣рд╛рдВ рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрди рдЗрдирдкреБрдЯ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред
рдиреЛрдЯ: рдЖрдк рд╕реНрд╡рдпрдВ рдХреЛ рдореБрдЦреНрдп рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рддрдВрддреНрд░, рдЬреИрд╕реЗ рдбреЗрдЯрд╛-рдкреНрд░рд╡рд╛рд╣ рдФрд░ рдЕрдиреНрдп, "
рдПрд░рд░реНрд╕ рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рддрдХрдиреАрдХ " рд▓реЗрдЦ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реА # рдореЗрдВ рдЗрдВрдЯрд░рдкреНрд░реЛрд╕реЗрд╕рд░ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЗрдирдкреБрдЯ рдорд╛рдкрджрдВрдбреЛрдВ рдпрд╛ рдЧрд╣рд░рд╛рдИ рддрдХ рд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реИред рдХреЗрд╡рд▓ рд╕реАрдорд╛ рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдЖрднрд╛рд╕реА рд╡рд┐рдзрд┐рдпрд╛рдВ рд╣реИрдВ рдЬреЛ рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдХреЗ рд▓рд┐рдП рдмрдВрдж рдирд╣реАрдВ рд╣реБрдИ рдереАрдВ рдФрд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдореЗрдВ рдЧрд┐рд░ рд░рд╣реА рдереАрдВ (рдЬрдм рд╣рдо рд╕реНрдЯреИрдХ рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рдЧрдгрдирд╛ рдХреА рдЧрдИ рд╡рд┐рдзрд┐ рдХреЛ рджреЛрд╣рд░рд╛рддреЗ рд╣реИрдВ рддреЛ рд╣рдо рдмрдВрдж рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ)ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреБрдирд░рд╛рд╡рд░реНрддреА рдкрджреНрдзрддрд┐ рдХреА рдЧрдгрдирд╛ рдЕрдВрддрддрдГ рдЗрд╕ рдзрд╛рд░рдгрд╛ рдХреЗ рд╕рд╛рде рдХреА рдЬрд╛рдПрдЧреА рдХрд┐ рд╕реНрд╡-рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд╛ рдкреНрд░рддрд┐рдлрд▓ рдЕрдЬреНрдЮрд╛рдд рд╣реИред
C # рдПрдирд╛рд▓рд╛рдЗрдЬрд╝рд░ рдореЗрдВ рдПрдХ рдФрд░ рдмрдбрд╝рд╛ рдЗрдиреЛрд╡реЗрд╢рди рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдЕрд╢рдХреНрдд рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдбреАрдлрд╝рд░ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рдкрд╣рд▓реЗ, рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдиреЗ рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рдЕрд╢рдХреНрдд рд╕рдВрджрд░реНрдн рдЕрдкрд╡рд╛рдж рдкрд░ рдХрд╕рдо рдЦрд╛рдИ рдереА рдЕрдЧрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛ рдХрд┐ рд╕рднреА рдирд┐рд╖реНрдкрд╛рджрди рд╢рд╛рдЦрд╛рдУрдВ рдореЗрдВ рдЪрд░ рдХрд╛ рдореВрд▓реНрдп рд╢реВрдиреНрдп рд╣реЛрдЧрд╛ред рдмреЗрд╢рдХ, рд╡рд╣ рдХрднреА-рдХрднреА рдЧрд▓рдд рдерд╛, рдЗрд╕рд▓рд┐рдП
V3080 рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХреНрд╕ рдХреЛ рдкрд╣рд▓реЗ рд╕рдВрднрд╛рд╡рд┐рдд рдЕрд╢рдХреНрдд рд╕рдВрджрд░реНрдн рдХрд╣рд╛ рдЬрд╛рддрд╛ рдерд╛ред
рдЕрдм рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдпрд╛рдж рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЪрд░ рдирд┐рд╖реНрдкрд╛рджрди рд╢рд╛рдЦрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рд╢реВрдиреНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реНрдерд┐рддрд┐ рдореЗрдВ)ред рдпрджрд┐ рд╡рд╣ рдмрд┐рдирд╛ рдЬрд╛рдБрдЪ рдХреЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЪрд░ рддрдХ рдкрд╣реБрдБрдЪ рджреЗрдЦрддрд╛ рд╣реИ, рддреЛ рдЙрд╕реЗ V3080 рд╕рдВрджреЗрд╢ рдорд┐рд▓реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╡рд╣ рд╕рднреА рд╢рд╛рдЦрд╛рдУрдВ рдореЗрдВ рдЕрд╢рдХреНрдд рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рддреЛ рдЗрд╕рд╕реЗ рднреА рдХрдо рд╕реНрддрд░ рдкрд░ред рдмреЗрд╣рддрд░ рдЗрдВрдЯрд░рдкреНрд░реЛрд╕реЗрд░реБрд░рд▓ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ, рдЗрд╕ рддрд░рд╣ рдХреА рдПрдХ рддрдВрддреНрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд▓рдЧрддрд╛ рд╣реИред рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╡рд┐рдзрд┐ рдХреЙрд▓ рдХреА рдПрдХ рд▓рдВрдмреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдЕрдВрддрд┐рдо рдЖрдк рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рдФрд░ рдЬреЛ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрдХрдбрд╝рдиреЗ рдореЗрдВ рдХреБрдЫ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдЕрд╢рдХреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдиреЗ рдЦреБрдж рдХреЛ рдЗрд╕рд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдмрд╕ рдЗрд╕реЗ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдереЗред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗрд╡рд▓ рддрднреА рд╢рдкрде рд▓реЗрддрд╛ рд╣реИ рдЬрдм рд╡рд╣ рдареАрдХ рд╕реЗ рдирд▓ рдХрд╛ рдХрд╛рдо рджреЗрдЦрддрд╛ рд╣реИред рд╣рдорд╛рд░реА рд░рд╛рдп рдореЗрдВ, рдпрд╣ рдЧреБрдгрд╛рддреНрдордХ рд░реВрдк рд╕реЗ C # 8.0 рдХреЗ рдРрд╕реЗ рдирд╡рд╛рдЪрд╛рд░ рд╕реЗ рд╣рдорд╛рд░реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдЕрд╢рдХреНрдд рд╕рдВрджрд░реНрдн рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрд▓рдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдзрд┐ рдореЗрдВ рдЕрд╢рдХреНрдд рдЬрд╛рдВрдЪ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдмрд▓рддрд╛ рд╣реИред рд╣рдо рдПрдХ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ - рдХреЗрд╡рд▓ рдЪреЗрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╣рд╛рдВ рдирд▓ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд╣рдорд╛рд░реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЕрдм рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреА рддрд▓рд╛рд╢ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВред
рддреЛ, рдмрд┐рдирд╛ рджреЗрд░реА рдХрд┐рдП, рдЪрд▓рд┐рдП "рдбреАрдмреНрд░реАрдкрд┐рдВрдЧ" рдХреА рдУрд░ рдмрдврд╝рддреЗ рд╣реИрдВ - рд░реЛрдЬрд▓рд┐рди рдЪреЗрдХ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддреЗ рд╣реБрдПред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЙрдкрд░реЛрдХреНрдд рд╡рд░реНрдгрд┐рдд рдирд╡рд╛рдЪрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рджреЗрдЦреЗрдВред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЗрд╕ рдмрд╛рд░ рд░реЛрдЬрд▓рд┐рди рдХреЛрдб рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдЪреЗрддрд╛рд╡рдиреА рдЬрд╛рд░реА рдХреА рдЧрдИ рдереАред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдмрд╣реБрдд рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛ рд░рд╣рд╛ рд╣реИ (рдХреЛрдб рдЖрдзрд╛рд░ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреЛрдб рдХреА рд▓рдЧрднрдЧ 2,770,000 рдкрдВрдХреНрддрд┐рдпреЛрдВ рдкрд░ рд╣реИ, рдЦрд╛рд▓реА рд╡рд╛рд▓реЗ рдХреЛ рдЫреЛрдбрд╝рдХрд░), рдФрд░ рд╣рдордиреЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдмрд╣реБрдд рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рддреНрд░реБрдЯрд┐рдпрд╛рдБ рдирд╣реАрдВ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреН рд╡реЗ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред рдФрд░ рд╣рд╛рдБ, рд░реЛрдЬрд╝рд▓рд┐рди рдореЗрдВ рдХрд╛рдлреА рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВрдиреЗ рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рдкрд░реАрдХреНрд╖рдг рд╕реЗ рдмрд╛рд╣рд░ рд░рдЦрд╛ рд╣реИред
рдореИрдВ рдордзреНрдпрдо рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕реНрддрд░ рдХреЗ рд╕рд╛рде, V3080 рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реВрдВрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдиреЗ рд╢реВрдиреНрдп рд▓рд┐рдВрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрднрд╡ рдкрд╣реБрдВрдЪ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛, рд▓реЗрдХрд┐рди рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдорд╛рдорд▓реЛрдВ (рдХреЛрдб рд╢рд╛рдЦрд╛рдУрдВ) рдореЗрдВ рдирд╣реАрдВред
рд╕рдВрднрд╛рд╡рд┐рдд рдЕрд╢рдХреНрддрддрд╛ - рдордзреНрдпрдоV3080 рд╕рдВрднрд╡ рдЕрд╢рдХреНрддрддрд╛ред 'рд╡рд░реНрддрдорд╛рди' рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред CSharpSyntaxTreeFactoryService.PositionalSyntaxReference.cs 70
private SyntaxNode GetNode(SyntaxNode root) { var current = root; .... while (current.FullSpan.Contains(....))
рдЧреЗрдЯрдиреЙрдб рд╡рд┐рдзрд┐ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЕрд╢рдХреНрдд рд╕рдВрджрд░реНрдн рддрдХ рдкрд╣реБрдВрдЪ рд╕рдВрднрд╡ рд╣реИ
рдЬрдмрдХрд┐ рдмреНрд▓реЙрдХ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВред
рдЬрдмрдХрд┐ рдмреНрд▓реЙрдХ рдХреЗ рд╢рд░реАрд░ рдореЗрдВ,
рд╡рд░реНрддрдорд╛рди рдЪрд░ рдХреЛ рдПрдХ рдорд╛рди рд╕реМрдВрдкрд╛ рдЬрд╛рдПрдЧрд╛ -
AsNode рд╡рд┐рдзрд┐ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рдкрд░рд┐рдгрд╛рдоред рдФрд░ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдпрд╣ рдорд╛рди
рд╢реВрдиреНрдп рд╣реЛрдЧрд╛ред рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ рдЗрдВрдЯрд░рдкреНрд░реЛрдбреЗрдХреНрдЯреНрд░рд┐рдпрд▓ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИред
рдЕрдм рдЗрд╕реА рддрд░рд╣ рдХреЗ рдПрдХ рдорд╛рдорд▓реЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬрд┐рд╕рдореЗрдВ рджреЛ рд╡рд┐рдзрд┐ рдХреЙрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрдВрдЯрд░рдкреНрд░реЛрдбреЗрдХреНрдЯрд▓ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
V3080 рд╕рдВрднрд╡ рдЕрд╢рдХреНрддрддрд╛ред 'рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛' рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред CommonCommandLineParser.cs 911
private IEnumerable<CommandLineSourceFile> ExpandFileNamePattern(string path, string baseDirectory, ....) { string directory = PathUtilities.GetDirectoryName(path); .... var resolvedDirectoryPath = (directory.Length == 0) ?
ExpandFileNamePattern рд╡рд┐рдзрд┐ рдХреЗ
рдореБрдЦреНрдп рднрд╛рдЧ рдореЗрдВ
рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдЪрд░
GetDirectoryName (рд╕реНрдЯреНрд░рд┐рдВрдЧ) рд╡рд┐рдзрд┐ рд╕реЗ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдмрджрд▓реЗ рдореЗрдВ, рдЕрддрд┐рднрд╛рд░рд┐рдд
GetDirectoryName (рд╕реНрдЯреНрд░рд┐рдВрдЧ, рдмреВрд▓) рд╡рд┐рдзрд┐ рдХрд╛ рдкрд░рд┐рдгрд╛рдо
рд▓реМрдЯрд╛рдПрдЧрд╛ , рдЬрд┐рд╕рдХрд╛ рдореВрд▓реНрдп
рд╢реВрдиреНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдЖрдЧреЗ
ExpandFileNamePattern рдкрджреНрдзрддрд┐ рдХреЗ рд╢рд░реАрд░ рдореЗрдВ
рдЕрд╢рдХреНрдд рд╕рдорд╛рдирддрд╛ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реА рдЬрд╛рдБрдЪ рдХреЗ рдмрд┐рдирд╛
рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рдо рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рджреНрд╡рд╛рд░рд╛ рдЪреЗрддрд╛рд╡рдиреА рдХреА рд╡реИрдзрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдбрд┐рдЬрд╛рдЗрди рд╣реИред
рдХреЛрдб рдХрд╛ рдПрдХ рдФрд░ рдЯреБрдХрдбрд╝рд╛ V3080 рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде, рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ, рдХреЛрдб рдХреА рдПрдХ рдкрдВрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдЬрд╛рд░реА рджреЛ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рдеред рдпрд╣рд╛рдВ, рдЗрдВрдЯрд░рдкреНрд░реЛрдбреЗрдХреНрдЯрд▓ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рдереАред
V3080 рд╕рдВрднрд╡ рдЕрд╢рдХреНрддрддрд╛ред 'рд╕реНрдкреИрдирд╕реНрдЯрд╛рд░реНрдЯрд▓реЛрдХреЗрд╢рди' рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред TestWorkspace.cs 574
V3080 рд╕рдВрднрд╡ рдЕрд╢рдХреНрддрддрд╛ред рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ 'spanEndLocationExclusive'ред TestWorkspace.cs 574
private void MapMarkupSpans(....) { .... foreach (....) { .... foreach (....) { .... int? spanStartLocation = null; int? spanEndLocationExclusive = null; foreach (....) { if (....) { if (spanStartLocation == null && positionInMarkup <= markupSpanStart && ....) { .... spanStartLocation = ....; } if (spanEndLocationExclusive == null && positionInMarkup <= markupSpanEndExclusive && ....) { .... spanEndLocationExclusive = ....; break; } .... } .... } tempMappedMarkupSpans[key]. Add(new TextSpan( spanStartLocation.Value,
рд╕реНрдкреИрдирд╕реНрдЯрд╛рд░реНрдЯрд▓реЛрдХреЗрд╢рди рдФрд░
рд╕реНрдкреИрдирдПрдбрд▓реЛрдХреЗрд╢рди рдПрдХреНрд╕рдХреНрд▓реВрд╕рд┐рд╡ рд╡реИрд░рд┐рдПрдмрд▓ рдЕрд╢рдХреНрдд рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ
рд╢реВрдиреНрдп рд╕реЗ рдЖрд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдЧреЗ рдХреЛрдб рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕реМрдВрдкрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЕрдЧрд░ рдХреБрдЫ рд╢рд░реНрддреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЙрдирдХрд╛ рдореВрд▓реНрдп
рд╢реВрдиреНрдп рдХреЗ рдмрд░рд╛рдмрд░ рд░рд╣реЗрдЧрд╛ред рдХреЛрдб рдореЗрдВ рдЖрдЧреЗ, рдЗрди рдЪрд░ рдХреЛ
рдЕрд╢рдХреНрдд рд╕рдорд╛рдирддрд╛ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реА рдЬрд╛рдВрдЪ рдХреЗ рдмрд┐рдирд╛ рд╕рдВрджрд░реНрдн рджреНрд╡рд╛рд░рд╛ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред
рд░реЛрд╕рд▓рд┐рди рдХреЛрдб рдореЗрдВ рдРрд╕реА рдХреБрдЫ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВ, рдЬреЛ 100 рд╕реЗ рдЕрдзрд┐рдХ рд╣реИрдВред рдЕрдХреНрд╕рд░ рдЗрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдкреИрдЯрд░реНрди рд╕рдорд╛рди рд╣реЛрддрд╛ рд╣реИред рдХреБрдЫ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдзрд┐ рд╣реИ рдЬреЛ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ
рдЕрд╢рдХреНрдд рд╣реИ ред рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХрднреА-рдХрднреА рджрд░реНрдЬрдиреЛрдВ рдордзреНрдпрд╡рд░реНрддреА рд╡рд┐рдзрд┐ рдХреЙрд▓ рдпрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдВрдЪ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗред рдпрд╣ рд╕рдордЭрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдпреЗ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдШрд╛рддрдХ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдЕрд╢рдХреНрдд рд▓рд┐рдВрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдРрд╕реА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЖрдкрдХреЛ рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рднрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕рдореЗрдВ рдпрджрд┐ рд╡рд┐рдзрд┐ рд╡рд╛рдкрд╕ рд▓реМрдЯ
рдЖрддреА рд╣реИ рддреЛ рдПрдХ рдЕрдкрд╡рд╛рдж рдХреЛ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЕрдиреНрдпрдерд╛, рдЖрдк рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рдХреЗрд╡рд▓ рдХреБрд▓ рдЪреЗрдХ рдХреЗ рд╕рд╛рде рд╕реБрд░рдХреНрд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдХрд╛рдлреА рдердХрд╛рдК рдФрд░ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реИред рдмреЗрд╢рдХ, рдкреНрд░рддреНрдпреЗрдХ рдорд╛рдорд▓реЗ рдореЗрдВ, рдирд┐рд░реНрдгрдп рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдиреЛрдЯред рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╕рдордп рдХреЛрдИ рднреА рд╕реНрдерд┐рддрд┐ (рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛) рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рдзрд┐
рд╢реВрдиреНрдп рд╣реЛ рдЬрд╛рддреА рд╣реИ рдФрд░ рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдРрд╕рд╛ рдХреЛрдб рдЕрднреА рднреА рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдб рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рд╕рдм рдХреБрдЫ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред
V3080 рдХреЗ рд╕рд╛рде рд╡рд┐рд╖рдп рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдЙрдЪреНрдЪ рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕ рд╕реНрддрд░ рдХреЗ рд╕рд╛рде рд╕реНрдкрд╖реНрдЯ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ, рдЬрдм рдПрдХ рдЕрд╢рдХреНрдд рд▓рд┐рдВрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╣реБрдВрдЪ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдкрд░рд┐рд╣рд╛рд░реНрдп рд╣реИред
рд╕рдВрднрд╛рд╡рд┐рдд рдЕрд╢рдХреНрддрддрд╛ - рдЙрдЪреНрдЪV3080 рд╕рдВрднрд╡ рдЕрд╢рдХреНрддрддрд╛ред 'CollectionType.Type' рдХреЗ рдирд┐рд░реАрдХреНрд╖рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред AbstractConvertForToForEachCodeRefactoringProvider.cs 137
public override async Task ComputeRefactoringsAsync(CodeRefactoringContext context) { .... var collectionType = semanticModel.GetTypeInfo(....); if (collectionType.Type == null && collectionType.Type.TypeKind == TypeKind.Error) { return; } .... }
рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдПрдХ рдЯрд╛рдЗрдкреЛ рдХреЗ рдХрд╛рд░рдг (рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╣рдо рдЬрд┐рд╕ рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рдереЗ
&& ), рдХреЛрдб рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдФрд░
рд╕рдВрдЧреНрд░рд╣ рдкреНрд░рдХрд╛рд░ред рдЯрд╛рдЗрдк рдЪрд░ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдпрджрд┐ рдпрд╣
рд╢реВрдиреНрдп рд╣реИ ред рд╣рд╛рд▓рдд рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╕рд╣реА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП:
if (collectionType.Type == null || collectionType.Type.TypeKind == TypeKind.Error) ....
рд╡реИрд╕реЗ, рдШрдЯрдирд╛рдУрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХрд╛ рджреВрд╕рд░рд╛ рд╕рдВрд╕реНрдХрд░рдг рднреА рд╕рдВрднрд╡ рд╣реИ: рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ, рдкрд░рд┐рдЪрд╛рд▓рдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рдорд┐рд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
== рдФрд░
! = ред рдлрд┐рд░ рд╕рд╣реА рдХреЛрдб рд╣реЛрдЧрд╛:
if (collectionType.Type != null && collectionType.Type.TypeKind == TypeKind.Error) ....
рдХреЛрдб рдХрд╛ рдпрд╣ рд╕рдВрд╕реНрдХрд░рдг рдХрдо рддрд╛рд░реНрдХрд┐рдХ рд╣реИ, рд▓реЗрдХрд┐рди рддреНрд░реБрдЯрд┐ рдХреЛ рднреА рдареАрдХ рдХрд░рддрд╛ рд╣реИред рдЕрдВрддрд┐рдо рдирд┐рд░реНрдгрдп рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓реЗрдЦрдХреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИред
рдПрдХ рдФрд░ рд╕рдорд╛рди рддреНрд░реБрдЯрд┐ред
V3080 рд╕рдВрднрд╡ рдЕрд╢рдХреНрддрддрд╛ред рдирд┐рд░реАрдХреНрд╖рдг 'рдХрд╛рд░реНрд░рд╡рд╛рдИ' рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред TextViewWindow_InProc.cs 372
private Func<IWpfTextView, Task> GetLightBulbApplicationAction(....) { .... if (action == null) { throw new InvalidOperationException( $"Unable to find FixAll in {fixAllScope.ToString()} code fix for suggested action '{action.DisplayText}'."); } .... }
рдХрд┐рд╕реА рдЕрдкрд╡рд╛рдж рдХреЗ рд▓рд┐рдП рд╕рдВрджреЗрд╢ рд▓рд┐рдЦрддреЗ рд╕рдордп рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реБрдИ рдереАред рдЙрд╕реА рд╕рдордп,
рдХрд╛рд░реНрд░рд╡рд╛рдИ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдХрд╛рд░реНрд░рд╡рд╛рдИ рдЪрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗред рд╕рдВрдкрддреНрддрд┐ рд╕рдВрдкрддреНрддрд┐, рдЬреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ
рдЕрд╢рдХреНрдд рд╣реИ ред
рдФрд░ рдЕрдВрддрд┐рдо рддреНрд░реБрдЯрд┐ V3080 рдЙрдЪреНрдЪ рд╕реНрддрд░ рд╣реИред
V3080 рд╕рдВрднрд╡ рдЕрд╢рдХреНрддрддрд╛ред 'рдкреНрд░рдХрд╛рд░' рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред ObjectFormatterHelpers.cs 91
private static bool IsApplicableAttribute( TypeInfo type, TypeInfo targetType, string targetTypeName) { return type != null && AreEquivalent(targetType, type) || targetTypeName != null && type.FullName == targetTypeName; }
рд╡рд┐рдзрд┐ рдЫреЛрдЯрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕рдХрд╛ рдкреВрд░рд╛ рдХреЛрдб рджреЗрддрд╛ рд╣реВрдВред
рд░рд┐рдЯрд░реНрди рдмреНрд▓реЙрдХ рдореЗрдВ рд╕реНрдерд┐рддрд┐ рдЧрд▓рдд рд╣реИред рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ,
рдЯрд╛рдЗрдк рдХрд░рддреЗ рд╕рдордп
NullReferenceException рдХреЛ рдлреЗрдВрдХрдирд╛ рд╕рдВрднрд╡ рд╣реИред
FullName ред рдореИрдВ рд╕реНрдерд┐рддрд┐ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрд╖реНрдардХ (рд╡реЗ рдпрд╣рд╛рдБ рд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рдмрджрд▓реЗрдВрдЧреЗ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:
return (type != null && AreEquivalent(targetType, type)) || (targetTypeName != null && type.FullName == targetTypeName);
рдЗрд╕ рддрд░рд╣, рд╕рдВрдЪрд╛рд▓рди рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдпрд╣ рдХреЛрдб рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдпрджрд┐
рдкреНрд░рдХрд╛рд░ рдЪрд░
рд╢реВрдиреНрдп рд╣реИ , рддреЛ рд╣рдо рдПрдХ рдФрд░ рдЬрд╛рдВрдЪ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐
targetTypeName рдЪрд░
рд╢реВрдиреНрдп рд╣реИ , рд╣рдо рдЕрд╢рдХреНрдд
рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдВрджрд░реНрдн рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдХреЛрдб рдХреЛ рдареАрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
return type != null && (AreEquivalent(targetType, type) || targetTypeName != null && type.FullName == targetTypeName);
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬрд╣рд╛рдВ рдЖрдк V3080 рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдЕрдзреНрдпрдпрди рдкреВрд░рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд░реЛрд╕реЗ рдХреЛрдб рдореЗрдВ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдФрд░ рдХреНрдпрд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред
рдЯрд╛рдЗрдкреЛV3005 'SourceCodeKind' рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЛ рд╣реА рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИред рдбрд╛рдпрдирд╛рдорд┐рдХрдлрд╛рдЗрд▓рдЗрдиреНрдлреЛ .cs 17
internal sealed class DynamicFileInfo { .... public DynamicFileInfo( string filePath, SourceCodeKind sourceCodeKind, TextLoader textLoader, IDocumentServiceProvider documentServiceProvider) { FilePath = filePath; SourceCodeKind = SourceCodeKind;
рдПрдХ рдЕрд╕рдлрд▓ рдЪрд░ рдирд╛рдо рдХреЗ рдХрд╛рд░рдг, рдПрдХ рдЯрд╛рдЗрдкреЛ рдХреЛ
рдбрд╛рдпрдирд╛рдорд┐рдХрдлрд╛рдЗрд▓рдЗрдиреНрдлреЛ рд╡рд░реНрдЧ рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред
SourceCodeKind рдлрд╝реАрд▓реНрдб рдХреЛ SourceCodeKind рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдорд╛рди рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдРрд╕реА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ рдирд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдЙрдкрд╕рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИред рдореИрдВ рдХреЛрдб рдХреЗ рд╕рд╣реА рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛:
public DynamicFileInfo( string _filePath, SourceCodeKind _sourceCodeKind, TextLoader _textLoader, IDocumentServiceProvider _documentServiceProvider) { FilePath = _filePath; SourceCodeKind = _sourceCodeKind; TextLoader = _textLoader; DocumentServiceProvider = _documentServiceProvider; }
рдЖрдирд╛рдХрд╛рдиреАV3006 рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред 'рдереНрд░реЛ' рдХреАрд╡рд░реНрдб рдЧрд╛рдпрдм рд╣реЛ рд╕рдХрддрд╛ рд╣реИ: рдирдпрд╛ InvalidOperationException (FOO) рдлреЗрдВрдХреЗрдВред ProjectBuildManager.cs 61
~ProjectBuildManager() { if (_batchBuildStarted) { new InvalidOperationException("ProjectBuilderManager.Stop() not called."); } }
рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реНрдерд┐рддрд┐ рдХреЗ рддрд╣рдд, рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдХреЛ рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдЕрдкрд╡рд╛рдж рд╡рд╕реНрддреБ рдмрд╕ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИред
рдлреЗрдВрдХ рдХреАрд╡рд░реНрдб рдЫреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ред рдХреЛрдб рдХрд╛ рд╕рд╣реА рд╕рдВрд╕реНрдХрд░рдг:
~ProjectBuildManager() { if (_batchBuildStarted) { throw new InvalidOperationException("ProjectBuilderManager.Stop() not called."); } }
рд╕реА # рдореЗрдВ рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдФрд░ рдЙрдирд╕реЗ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрдиреЗ рдХрд╛ рдореБрджреНрджрд╛ рдПрдХ рдЕрд▓рдЧ рдЪрд░реНрдЪрд╛ рдХрд╛ рд╡рд┐рд╖рдп рд╣реИ, рдЬреЛ рдЗрд╕ рд▓реЗрдЦ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИред
рдЬрдм рдкрд░рд┐рдгрд╛рдо рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИрд╕рднреА рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕рдорд╛рди рдорд╛рди рд▓реМрдЯрд╛рдиреЗ рд╡рд╛рд▓реЗ рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдХрдИ
V3009 рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдБ рдкреНрд░рд╛рдкреНрдд рд╣реБрдИ рд╣реИрдВред рдХрднреА-рдХрднреА рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдпрд╛ рдХреЙрд▓рд┐рдВрдЧ рдХреЛрдб рдореЗрдВ рд░рд┐рдЯрд░реНрди рдХреЛрдб рдХреА рдЖрд╕рд╛рдиреА рд╕реЗ рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИред рдРрд╕реА рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рд╕реЗ рдореИрдВ рдЪреВрдХ рдЧрдпрд╛ред рд▓реЗрдХрд┐рди рдХреЛрдб рдХреЗ рдХреБрдЫ рдЯреБрдХрдбрд╝реЗ рдореБрдЭреЗ рд╕рдВрджреЗрд╣рд╛рд╕реНрдкрдж рд▓рдЧ рд░рд╣реЗ рдереЗред рдореИрдВ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рд╣рд╡рд╛рд▓рд╛ рджреВрдВрдЧрд╛:
V3009 рдпрд╣ рд╡рд┐рдЪрд┐рддреНрд░ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рдзрд┐ рд╣рдореЗрд╢рд╛ рдПрдХ рдФрд░ 'рд╕рд╣реА' рдХреЗ рд╕рдорд╛рди рдорд╛рди рджреЗрддреА рд╣реИред GoToDefinitionCommandHandler.cs 62
internal bool TryExecuteCommand(....) { .... using (context.OperationContext.AddScope(....)) { if (....) { return true; } } .... return true; }
TryExecuteCommand рд╡рд┐рдзрд┐ рдХреЗрд╡рд▓
рд╕рд╣реА рд▓реМрдЯрд╛рддреА
рд╣реИ , рдФрд░
рд╕рддреНрдп рдХреЗ рд╕рд┐рд╡рд╛рдп рдХреБрдЫ рднреА рдирд╣реАрдВред рдЙрд╕реА рд╕рдордп, рдХреЙрд▓рд┐рдВрдЧ рдХреЛрдб рдореЗрдВ рдХреБрдЫ рдЪреЗрдХ рдореЗрдВ рд░рд┐рдЯрд░реНрди рд╡реИрд▓реНрдпреВ рд╢рд╛рдорд┐рд▓ рд╣реЛрддреА рд╣реИ:
public bool ExecuteCommand(....) { .... if (caretPos.HasValue && TryExecuteCommand(....)) { .... } .... }
рдпрд╣ рдХрд╣рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдХрд┐ рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд┐рддрдирд╛ рдЦрддрд░рдирд╛рдХ рд╣реИред рд▓реЗрдХрд┐рди рдпрджрд┐ рдкрд░рд┐рдгрд╛рдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ рд░рд┐рдЯрд░реНрди рдкреНрд░рдХрд╛рд░ рдХреЛ рд╢реВрдиреНрдп рд╕реЗ рдмрджрд▓рдиреЗ рдФрд░ рдХреЙрд▓рд┐рдВрдЧ рд╡рд┐рдзрд┐ рдореЗрдВ рдиреНрдпреВрдирддрдо рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рдХреЛрдб рдЕрдзрд┐рдХ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рдФрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рдЕрдиреНрдп рд╕рдорд╛рди рдЪреЗрддрд╛рд╡рдиреА:
- V3009 рдпрд╣ рд╡рд┐рдЪрд┐рддреНрд░ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рдзрд┐ рд╣рдореЗрд╢рд╛ рдПрдХ рдФрд░ 'рд╕рд╣реА' рдХреЗ рд╕рдорд╛рди рдорд╛рди рджреЗрддреА рд╣реИред CommentUncommentSelectionCommandHandler.cs 86
- V3009 рдпрд╣ рд╡рд┐рдЪрд┐рддреНрд░ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рдзрд┐ рд╣рдореЗрд╢рд╛ рдПрдХ рдФрд░ 'рд╕рд╣реА' рдХреЗ рд╕рдорд╛рди рдорд╛рди рджреЗрддреА рд╣реИред RenameTrackingTaggerProvider.RenameTrackingCommitter.cs 99
- V3009 рдпрд╣ рд╡рд┐рдЪрд┐рддреНрд░ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рдзрд┐ рд╣рдореЗрд╢рд╛ рдПрдХ рдФрд░ 'рд╕рд╣реА' рдХреЗ рд╕рдорд╛рди рдорд╛рди рджреЗрддреА рд╣реИред JsonRpcClient.cs 138
- V3009 рдпрд╣ рд╡рд┐рдЪрд┐рддреНрд░ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рдзрд┐ рд╣рдореЗрд╢рд╛ рдПрдХ рдФрд░ 'рд╕рд╣реА' рдХреЗ рд╕рдорд╛рди рдорд╛рди рджреЗрддреА рд╣реИред AbstractFormatEngine.OperationApplier.cs 164
- V3009 рдпрд╣ рд╡рд┐рдЪрд┐рддреНрд░ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рдзрд┐ рд╣рдореЗрд╢рд╛ рдПрдХ рдФрд░ 'рд╕рдорд╛рди' рдореВрд▓реНрдп рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рддреА рд╣реИред TriviaDataFactory.CodeShapeAnalyzer.cs 254
- V3009 рдпрд╣ рд╡рд┐рдЪрд┐рддреНрд░ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рдзрд┐ рд╣рдореЗрд╢рд╛ рдПрдХ рдФрд░ 'рд╕рд╣реА' рдХреЗ рд╕рдорд╛рди рдорд╛рди рджреЗрддреА рд╣реИред ObjectList.cs 173
- V3009 рдпрд╣ рд╡рд┐рдЪрд┐рддреНрд░ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рдзрд┐ рд╣рдореЗрд╢рд╛ рдПрдХ рдФрд░ 'рд╕рд╣реА' рдХреЗ рд╕рдорд╛рди рдорд╛рди рджреЗрддреА рд╣реИред ObjectList.cs 249
рдЬрд╛рдБрдЪ рдирд╣реАрдВ рд╣реБрдИV3019 рд╕рдВрднрд╡рддрдГ рдПрдХ рдЧрд▓рдд рд╡реИрд░рд┐рдПрдмрд▓ рдХреА рддреБрд▓рдирд╛ 'рдХреАрд╡рд░реНрдб' рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЯрд╛рдЗрдк рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рдмрд╛рдж рдХреА рдЬрд╛рддреА рд╣реИред рдЪрд░ 'рдорд╛рди', 'valueToSerialize' рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред RoamingVisualStudioProfileOptionPersister.cs 277
public bool TryPersist(OptionKey optionKey, object value) { .... var valueToSerialize = value as NamingStylePreferences; if (value != null) { value = valueToSerialize.CreateXElement().ToString(); } .... }
рдЪрд░
рдорд╛рди NamingStylePreferences рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реИред рд╕рдорд╕реНрдпрд╛ рдЗрд╕ рдЬрд╛рдБрдЪ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░ рд░рд╣реА рд╣реИред рднрд▓реЗ рд╣реА
рдорд╛рди рдЪрд░ рд╢реВрдиреНрдп рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рдХрд╛рд░ рд░реВрдкрд╛рдВрддрд░рдг рд╕рдлрд▓ рд░рд╣рд╛ рдерд╛ рдФрд░
рдорд╛рди рдХреЛ
рд╕рдорд░реВрдкрддрд╛ рдореЗрдВ
рд╢реВрдиреНрдп рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
NullReferenceException рдХреЛ рдлреЗрдВрдХрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред рдХреЛрдб рдХреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рддрдп рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
var valueToSerialize = value as NamingStylePreferences; if (valueToSerialize != null) { value = valueToSerialize.CreateXElement().ToString(); }
рдФрд░ рдПрдХ рдФрд░ рд╕рдорд╛рди рддреНрд░реБрдЯрд┐ред
V3019 рд╕рдВрднрд╡рддрдГ рдПрдХ рдЧрд▓рдд рд╡реИрд░рд┐рдПрдмрд▓ рдХреА рддреБрд▓рдирд╛ 'рдХреАрд╡рд░реНрдб' рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЯрд╛рдЗрдк рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рдмрд╛рдж рдХреА рдЬрд╛рддреА рд╣реИред рдЪрд░ 'рдХреЙрд▓рдорд╕реНрдЯреЗрдЯ', 'рдХреЙрд▓рдорд╕реНрдЯреИрдЯ 2' рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред StreamingFindUsagesPresenter.cs 181
private void SetDefinitionGroupingPriority(....) { .... foreach (var columnState in ....) { var columnState2 = columnState as ColumnState2; if (columnState?.Name ==
рд╡реЗрд░рд┐рдПрдмрд▓
рдХреЙрд▓рдорд╕реНрдЯреЗрдЯ ColumnState2 рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдСрдкрд░реЗрд╢рди рдХрд╛ рдкрд░рд┐рдгрд╛рдо, рдЪрд░
columnState2 ,
null рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдХреА рдЬрд╛рдБрдЪ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп,
рд╕рд╢рд░реНрдд рд╕реНрддрдВрдн рдХрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЪрд░
рд╕реНрддрдореНрднрди рдХреА рдЬрд╛рдБрдЪ рдХреА
рдЬрд╛рддреА рд╣реИред рдЗрд╕ рдХреЛрдб рдХрд╛ рдЦрддрд░рд╛ рдХреНрдпрд╛ рд╣реИ? рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдСрдкрд░реЗрдЯрд░ рдХреЗ
рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд╕реНрдЯрд┐рдВрдЧ рд╡рд┐рдлрд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░
рдХреЙрд▓рдорд╕реНрдЯреЗрдЯ 2 рдЪрд░
рд╢реВрдиреНрдп рд╣реЛрдЧрд╛, рдЬреЛ рдЖрдЧреЗ рдПрдХ рдЕрдкрд╡рд╛рдж рдХреЛ рдлреЗрдВрдХ рджреЗрдЧрд╛ред рд╡реИрд╕реЗ, рдПрдХ рдЯрд╛рдЗрдкреЛ рдХреЛ рджреЛрд╖ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЕрдЧрд░ рдмреНрд▓реЙрдХ рдореЗрдВ рд╣рд╛рд▓рдд рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред рд╢рд╛рдпрдж
рдХреЙрд▓рдорд╕реНрдЯреИрдЯ рдХреЗ рдмрдЬрд╛рдп
?ред рдХреНрдпрд╛ рд╡реЗ
рдХреЙрд▓рдорд╕реНрдЯреИрдЯ 2 рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ
? рдирд╛рдо ред рдпрд╣ рдмрд╣реБрдд рд╣реА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рдЪрд░ рдирд╛рдо
рдХреЙрд▓рдорд╕реНрдЯреИрдЯ рдФрд░ рдХреЙрд▓рдорд╕реНрдЯреЗрдЯ 2 рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИредрдирд┐рд░рд░реНрдердХ рдЬрд╛рдБрдЪрдЧреИрд░-рдорд╣рддреНрд╡рдкреВрд░реНрдг, рд▓реЗрдХрд┐рди рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдЪреЗрдХ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝реЗ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдирд┐рд░реНрдорд╛рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА (100 рд╕реЗ рдЕрдзрд┐рдХ) рдЬрд╛рд░реА рдХреА рдЧрдИ рдереАред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рджреВрдВрдЧрд╛ред
V3022 рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ 'navInfo == null' рд╣рдореЗрд╢рд╛ рдЭреВрдареА рд╣реЛрддреА рд╣реИред AbstractSyncClassViewCommandHandler.cs 101
public bool ExecuteCommand(....) { .... IVsNavInfo navInfo = null; if (symbol != null) { navInfo = libraryService.NavInfoFactory.CreateForSymbol(....); } if (navInfo == null) { navInfo = libraryService.NavInfoFactory.CreateForProject(....); } if (navInfo == null)
рд╢рд╛рдпрдж рдпрд╣рд╛рдВ рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЧрд▓рддреА рдирд╣реАрдВ рд╣реИред рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпреЛрдВ "рдЗрдВрдЯрд░рдкреНрд░реЛрдбреЗрдХреНрдЯреЛрд░рд▓ рд╡рд┐рд╢реНрд▓реЗрд╖рдг + рдбреЗрдЯрд╛ рдкреНрд░рд╡рд╛рд╣ рд╡рд┐рд╢реНрд▓реЗрд╖рдг" рдХреЗ рд╕рдВрдпреЛрдЬрди рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░рдиреЗ рдХрд╛ рд╕рд┐рд░реНрдл рдПрдХ рдЕрдЪреНрдЫрд╛ рдХрд╛рд░рдг рд╣реИред рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рджреВрд╕рд░рд╛ рдЪреЗрдХ
рдиреЗрд╡реАрдлреЛ == рдирд▓ рдирд┐рд░рд░реНрдердХ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ,
navInfo рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореВрд▓реНрдп
LibraryService.NavInfoFactory.CreateForProject рд╡рд┐рдзрд┐ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ
NavInfo рд╡рд░реНрдЧ рдХреА рдПрдХ рдирдИ рд╡рд╕реНрддреБ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдФрд░ рд╡рд╛рдкрд╕реА рдХрд░реЗрдЧрд╛ред рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ
рдЕрд╢рдХреНрдд рдирд╣реАрдВред рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐, рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдиреЗ рдкрд╣рд▓реЗ рдЪреЗрдХ
navInfo == null рдХреЗ рд▓рд┐рдП рдЪреЗрддрд╛рд╡рдиреА рдХреНрдпреЛрдВ рдирд╣реАрдВ рджреА? рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрджрд┐
рдкреНрд░рддреАрдХ рдЪрд░
рд╢реВрдиреНрдп рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ
navInfo рдХрд╛ рдорд╛рди рдПрдХ рд╢реВрдиреНрдп рд╕рдВрджрд░реНрдн рдмрдирд╛ рд░рд╣реЗрдЧрд╛ред рджреВрд╕рд░реЗ, рднрд▓реЗ рд╣реА
navInfo рдХреЛ
LibraryService.NavInfoFactory.CreateForSymbol рд╡рд┐рдзрд┐ рд╕реЗ рдорд╛рди рдорд┐рд▓реЗ, рдпрд╣ рдорд╛рди
рд╢реВрдиреНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рддреЛ
navInfo == рдирд▓ рдХреА рдкрд╣рд▓реА рдЬрд╛рдВрдЪ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рдкрд░реНрдпрд╛рдкреНрдд рдЬрд╛рдВрдЪ рдирд╣реАрдВрдФрд░ рдЕрдм рд╕реНрдерд┐рддрд┐ рдЙрдкрд░реЛрдХреНрдд рдХреЗ рд╡рд┐рдкрд░реАрдд рд╣реИред рдХрдИ
V3042 рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдБ рдХреЛрдб рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдкреНрдд рд╣реБрдИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдПрдХ рд╢реВрдиреНрдп рд╕рдВрджрд░реНрдн рджреНрд╡рд╛рд░рд╛ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреЗрд╡рд▓ рдПрдХ рдпрд╛ рджреЛ рдЫреЛрдЯреЗ рдЪреЗрдХ рд╕рдм рдХреБрдЫ рдареАрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдХреЛрдб рдХреЛрдб рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬрд┐рд╕рдореЗрдВ рджреЛ рдРрд╕реА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВред
V3042 рд╕рдВрднрд╛рд╡рд┐рдд NullReferenceExceptionред '?' рдФрд░ '' рдСрдкрд░реЗрдЯрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ 'рд░рд┐рд╕реАрд╡рд░' рдСрдмреНрдЬреЗрдХреНрдЯ Binder_Expressions.cs 7770 рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
V3042 рд╕рдВрднрд╛рд╡рд┐рдд NullReferenceExceptionред '?' рдФрд░ '' рдСрдкрд░реЗрдЯрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ 'рд░рд┐рд╕реАрд╡рд░' рдСрдмреНрдЬреЗрдХреНрдЯ Binder_Expressions.cs 7776 рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
private BoundExpression GetReceiverForConditionalBinding( ExpressionSyntax binding, DiagnosticBag diagnostics) { .... BoundExpression receiver = this.ConditionalReceiverExpression; if (receiver?.Syntax !=
рд░рд┐рд╕реАрд╡рд░ рдЪрд░
рд╢реВрдиреНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдХреЛрдб рдХреЗ рд▓реЗрдЦрдХ рдХреЛ рдпрд╣ рдкрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣ рд╕рд╢рд░реНрдд
рдЕрд╢рдХреНрдд рд╕рдВрдЪрд╛рд▓рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ
рдпрджрд┐ рдмреНрд▓реЙрдХ рдореЗрдВ
рд░рд┐рд╕реАрд╡рд░ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдХреЛрдб рдореЗрдВ рдЖрдЧреЗ,
рд░рд┐рд╕реАрд╡рд░ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдЪреЗрдХ рдХреЗ рдмрд┐рдирд╛ рд╡реЗрд░рд┐рдПрдмрд▓
рд░рд┐рд╕реАрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЯрд╛рдЗрдк рдХрд░реЗрдВ ,
рд░рд┐рд╕реАрд╡рд░ ред
рд╕рд╛рдЗрдирдЯреИрдХреНрд╕ рдФрд░
рд░рд┐рд╕реАрд╡рд░редрд╣реЗрд╕рд░рд░реНрд╕ ред рдЗрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
private BoundExpression GetReceiverForConditionalBinding( ExpressionSyntax binding, DiagnosticBag diagnostics) { .... BoundExpression receiver = this.ConditionalReceiverExpression; if (receiver?.Syntax != GetConditionalReceiverSyntax(conditionalAccessNode)) { receiver = BindConditionalAccessReceiver(conditionalAccessNode, diagnostics); } var receiverType = receiver?.Type; if (receiverType?.IsNullableType() == true) { .... } receiver = new BoundConditionalReceiver(receiver?.Syntax, 0, receiverType ?? CreateErrorType(), hasErrors: receiver?.HasErrors) { WasCompilerGenerated = true }; return receiver; }
рдЖрдкрдХреЛ рдпрд╣ рднреА рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐
рдмрд╛рдЙрдВрдбрдХреЙрдиреНрдбреЗрдбрд┐рд╢рд┐рдпрд▓ рд░реАрд╕рд╛рдЗрд╡рд░ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдЕрдкрдиреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд▓рд┐рдП
рд╢реВрдиреНрдп рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдпрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд
рд░реАрдлрд╝реЙрд░реНрдорд┐рдВрдЧ рдХрд░рддрд╛ рд╣реИред
рдЕрдиреНрдп рд╕рдорд╛рди рддреНрд░реБрдЯрд┐рдпрд╛рдВ:
- V3042 рд╕рдВрднрд╛рд╡рд┐рдд NullReferenceExceptionред '?' рдФрд░ '' рдСрдкрд░реЗрдЯрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ ''TType' рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред SyntaxGeneratorExtensions_Negate.cs 240
- V3042 рд╕рдВрднрд╛рд╡рд┐рдд NullReferenceExceptionред '?' рдФрд░ '' рдСрдкрд░реЗрдЯрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ 'рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐' рдСрдмреНрдЬреЗрдХреНрдЯ рдПрдХреНрд╕рдкреНрд░реЗрд╢рдирд╕рд┐рдирдЯреИрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕.рдПрд╕рд╕реА 349 рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
- V3042 рд╕рдВрднрд╛рд╡рд┐рдд NullReferenceExceptionред '?' рдФрд░ '' рдСрдкрд░реЗрдЯрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ 'рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐' рдСрдмреНрдЬреЗрдХреНрдЯ рдПрдХреНрд╕рдкреНрд░реЗрд╢рдирд╕рд┐рдирдЯреИрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕.рдПрд╕рд╕реА 349 рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рд╣рд╛рд▓рдд рдореЗрдВ рддреНрд░реБрдЯрд┐V3057 '
рд╕рдмреНрд╕реНрдЯреНрд░рд┐рдВрдЧ ' рдлрд╝рдВрдХреНрд╢рди '-1' рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрдмрдХрд┐ рдЧреИрд░-рдирдХрд╛рд░рд╛рддреНрдордХ рдорд╛рди рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реИред рджреВрд╕рд░реЗ рддрд░реНрдХ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░реЗрдВред CommonCommandLineParser.cs 109
internal static bool TryParseOption(....) { .... if (colon >= 0) { name = arg.Substring(1, colon - 1); value = arg.Substring(colon + 1); } .... }
рдпрджрд┐
рдХреЛрд▓рди рд╡реИрд░рд┐рдПрдмрд▓ 0 рд╣реИ, рдЬреЛ рдХреЛрдб рдореЗрдВ рдПрдХ рд╕реНрдерд┐рддрд┐ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рддреЛ
рд╕рдмреНрд╕реНрдЯреАрдЯреНрдпреВрдЯрд┐рдВрдЧ рд╡рд┐рдзрд┐ рдПрдХ
ArgumentOutOfRadException рдХреЛ рдлреЗрдВрдХ
рджреЗрдЧреА ред рд╕реБрдзрд╛рд░ рдЖрд╡рд╢реНрдпрдХ:
if (colon > 0)
рдЯрд╛рдЗрдкреЛ рд╕рдВрднрд╡ рд╣реИV3065 рдкреИрд░рд╛рдореАрдЯрд░ 't2' рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рдзрд┐ рдХреЗ рд╢рд░реАрд░ рдХреЗ рдЕрдВрджрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред CSharpCodeGenerationHelpers.cs 84
private static TypeDeclarationSyntax ReplaceUnterminatedConstructs(....) { .... var updatedToken = lastToken.ReplaceTrivia(lastToken.TrailingTrivia, (t1, t2) => { if (t1.Kind() == SyntaxKind.MultiLineCommentTrivia) { var text = t1.ToString(); .... } else if (t1.Kind() == SyntaxKind.SkippedTokensTrivia) { return ReplaceUnterminatedConstructs(t1); } return t1; }); .... }
рджреЛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд▓реИрдореНрдмреНрдбрд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдЯреА 1 рдФрд░ рдЯреА 2ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХреЗрд╡рд▓ t1 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╕рдВрджрд┐рдЧреНрдз рд▓рдЧрддрд╛ рд╣реИ, рдЗрди рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЧрд▓рддреА рдХрд░рдирд╛ рдХрд┐рддрдирд╛ рдЖрд╕рд╛рди рд╣реИред
рдЖрдирд╛рдХрд╛рдиреАV3083 рдЗрд╡реЗрдВрдЯ 'TagsChanged', NullReferenceException рдХрд╛ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдЖрд╣реНрд╡рд╛рди рд╕рдВрднрд╡ рд╣реИред рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдХреЛ рдШрдЯрдирд╛ рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрдиUpdater.Tagger.cs 37
public void OnTextBufferChanged() { if (PreviewUpdater.SpanToShow != default) { if (TagsChanged != null) { var span = _textBuffer.CurrentSnapshot.GetFullSpan(); TagsChanged(this, new SnapshotSpanEventArgs(span));
TagChanged рдИрд╡реЗрдВрдЯ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк
рд╕реЗ рдЪрд╛рд▓реВ рд╣реЛ
рдЬрд╛рддрд╛ рд╣реИ ред
рдЕрд╢рдХреНрдд рд╕рдорд╛рдирддрд╛ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдФрд░ рдХрд┐рд╕реА рдИрд╡реЗрдВрдЯ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмреАрдЪ, рдЙрдирдХреЗ рдкрд╛рд╕ рдЗрд╕рд╕реЗ рд╕рджрд╕реНрдпрддрд╛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдлрд┐рд░ рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛,
рдЕрдЧрд░ рдШрдЯрдирд╛ рдХреЗ рдХреЙрд▓ рд╕реЗ рддреБрд░рдВрдд рдкрд╣рд▓реЗ,
рдпрджрд┐ рдХреЛрдИ рдЕрдиреНрдп рдСрдкрд░реЗрд╢рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ,
рддреЛ рд╢рд░реАрд░ рдореЗрдВред рдореИрдВрдиреЗ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ "Inattention" рдХрд╣рд╛, рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдб рдореЗрдВ рдЕрдиреНрдп рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рд╡реЗ рдЗрд╕ рдШрдЯрдирд╛ рдХреЗ рд╕рд╛рде рдФрд░ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬреИрд╕реЗ:
private void OnTrackingSpansChanged(bool leafChanged) { var handler = TagsChanged; if (handler != null) { var snapshot = _buffer.CurrentSnapshot; handler(this, new SnapshotSpanEventArgs(snapshot.GetFullSpan())); } }
рд╡реИрдХрд▓реНрдкрд┐рдХ
рд╣реИрдВрдбрд▓рд░ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред
OnTextBufferChanged рд╡рд┐рдзрд┐ рдореЗрдВ,
рдЖрдкрдХреЛ рдЗрд╡реЗрдВрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рд╕реБрд░рдХреНрд╖рд┐рдд рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рд╕рдВрдкрд╛рджрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЕрдВрддрд░реНрд╡рд┐рд░реЛрдзреА рдкрд░реНрд╡рддрдорд╛рд▓рд╛рд╕рд╢рд░реНрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рднреАрддрд░
V3092 рд░реЗрдВрдЬ рдЪреМрд░рд╛рд╣реЗ рд╕рдВрднрд╡ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг: рдЕрдЧрд░ (A> 0 && A <5) {...} рдФрд░ рдпрджрд┐ (A> 3 && A <9) {...}ред ILBuilderEmit.cs 677
internal void EmitLongConstant(long value) { if (value >= int.MinValue && value <= int.MaxValue) { .... } else if (value >= uint.MinValue && value <= uint.MaxValue) { .... } else { .... } }
рдПрдХ рдмреЗрд╣рддрд░ рд╕рдордЭ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЗрд╕ рдХреЛрдб рдХреЗ рдЯреБрдХрдбрд╝реЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреВрдВрдЧрд╛, рдЙрдирдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдирд┐рд░рдВрддрд░ рдирд╛рдореЛрдВ рдХреА рдЬрдЧрд╣:
internal void EmitLongConstant(long value) { if (value >= -2147483648 && value <= 2147483648) { .... } else if (value >= 0 && value <= 4294967295) { .... } else { .... } }
рд╢рд╛рдпрдж, рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЧрд▓рддреА рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрдерд┐рддрд┐ рдЕрдЬреАрдм рджрд┐рдЦрддреА рд╣реИред рджреВрд╕рд░рд╛ рднрд╛рдЧ (
рдФрд░ рдпрджрд┐ ) рдХреЗрд╡рд▓ 2147483648 + 1 рд╕реЗ 4294967295 рдореВрд▓реНрдпреЛрдВ рдХреА рд╢реНрд░реЗрдгреА рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЗрди рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреА рдПрдХ рдЬреЛрдбрд╝реА рдФрд░ рдЕрдзрд┐рдХ:
- рд╕рд╢рд░реНрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рднреАрддрд░ V3092 рд░реЗрдВрдЬ рдЪреМрд░рд╛рд╣реЗ рд╕рдВрднрд╡ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг: рдЕрдЧрд░ (A> 0 && A <5) {...} рдФрд░ рдпрджрд┐ (A> 3 && A <9) {...}ред LocalRewriter_Literal.cs 109
- рд╕рд╢рд░реНрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рднреАрддрд░ V3092 рд░реЗрдВрдЬ рдЪреМрд░рд╛рд╣реЗ рд╕рдВрднрд╡ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг: рдЕрдЧрд░ (A> 0 && A <5) {...} рдФрд░ рдпрджрд┐ (A> 3 && A <9) {...}ред LocalRewriter_Literal.cs 66
рдЕрд╢рдХреНрдд рд╕рдорд╛рдирддрд╛ рдЬрд╛рдВрдЪ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ (рдпрд╛ рдЗрд╕рдХреЗ рдЕрднрд╛рд╡)рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж
рд╢реВрдиреНрдп рдХреЗ рд▓рд┐рдП рдПрдХ рдЪрд░ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ
V3095 рддреНрд░реБрдЯрд┐рдпрд╛рдВред рдкрд╣рд▓рд╛ рдЕрд╕реНрдкрд╖реНрдЯ рд╣реИ, рдХреЛрдб рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
V3095 рдирд▓ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ 'displayName' рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрди: 498, 503. рдлреНрдпреВрдЬрдирдПрдПрд╕рдПрд╕рдбрд┐рдореЗрдиреНрдбрд┐рдЯреА.рдПрд╕рд╕реА 498
internal static IAssemblyName ToAssemblyNameObject(string displayName) { if (displayName.IndexOf('\0') >= 0) { return null; } Debug.Assert(displayName != null); .... }
рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐
рдбрд┐рд╕реНрдкреНрд▓реЗрдирд╛рдо рд╕рдВрджрд░реНрдн рд╢реВрдиреНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,
рдбреАрдмрдЧ.рдПрдЬрд╝рд░реНрд╕ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдпрд╣ рдХреНрдпреЛрдВ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рднреА
рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдбрд┐рдмрдЧ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдиреНрдп рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП, рдХрдВрдкрд╛рдЗрд▓рд░ рдбреАрдмрдЧ рдХреЛ
рд╣рдЯрд╛ рджреЗрдЧрд╛ред рдХреЛрдб рд╕реЗ рд╕рднреА
рдХреЛ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░реЗрдВ ред рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдХреЗрд╡рд▓ рдбрд┐рдмрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд╢рдХреНрдд рд╕рдВрджрд░реНрдн рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ? рдФрд░ рдЕрдЧрд░ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ
рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рдЬрд╛рдВрдЪ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХреА рдЧрдИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП
NullOrEmpty (рд╕реНрдЯреНрд░рд┐рдВрдЧ) ред рдпреЗ рдХреЛрдб рдХреЗ рд▓реЗрдЦрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╢реНрди рд╣реИрдВред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддреНрд░реБрдЯрд┐ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд╣реИред
V3095 рдирд▓ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ 'scriptArgsOpt' рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 321, 325. рдХреЙрдордирдХреЙрдордирд▓рд╛рдЗрдирдкреИрд░ред 321
internal void FlattenArgs(...., List<string> scriptArgsOpt, ....) { .... while (args.Count > 0) { .... if (parsingScriptArgs) { scriptArgsOpt.Add(arg);
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдХреЛрдб рдСрдл рдХреЛрдб рдХреЛ рдХрд┐рд╕реА рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдореИрдВ рд╕рд╣реА рд╕рдВрд╕реНрдХрд░рдг рджреВрдВрдЧрд╛:
internal void FlattenArgs(...., List<string> scriptArgsOpt, ....) { .... while (args.Count > 0) { .... if (parsingScriptArgs) { scriptArgsOpt?.Add(arg); continue; } if (scriptArgsOpt != null) { .... } .... } }
рд░реЛрд╕рд▓рд┐рди рдХреЛрдб рдХреЛ рдРрд╕реА 15 рдФрд░ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдорд┐рд▓реАрдВ:
- V3095 рдирд▓ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ 'LocalFunctions' рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 289, 317. ControlFlowGraphBuilder.RegionBuilder.cs 289
- V3095 'рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди .verloadResolutionResult' рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╡рд╣ рдЕрд╢рдХреНрдд рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 579, 588. рдмрд╛рдЗрдВрдбрд░_рдЗрдирд╡реЛрдХреЗрд╢рди.рдХреЗ 579
- V3095 'рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рдиред рдореАрдереЛрдбрдЧреНрд░реБрдк' рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢реВрдиреНрдп рд╕реЗ рдкрд╣рд▓реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрди: 592, 621. рдмрд╛рдЗрдВрдбрд░_ рдЗрдирд╡реЛрдХреЗрд╢рди.рдХреЗ 592
- V3095 рдЕрд╢рдХреНрдд рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ 'рдЫреБрдЖ-рдЫреАрдВрдЯрд╛ Logger' рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЬрд╛рдБрдЪ рд▓рд╛рдЗрдиреЗрдВ: 111, 126. CSharpCompiler.cs 111
- V3095 рдирд▓ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ 'newExceptionRegionsOpt' рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 736, 743. AbstractEditAndContinueAnalyzer.cs 736
- V3095 рдирд▓ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ 'рдкреНрд░рддреАрдХ' рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 422, 427. AbstractGenerateConstructorService.Editor.cs 422
- V3095 рдирд▓ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ '_state.BaseTypeOrInterfaceOpt' рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 132, 140ред AbstractGenerateTypeService.GenerateNamedType.cs 132
- V3095 рдирд▓ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ 'рдПрд▓рд┐рдореЗрдВрдЯ' рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрди: 232, 233. рдкреНрд░реЛрдЬреЗрдХреНрдЯрдпреВрд▓реЗрдЯ .cs 232
- V3095 рдирд▓ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ 'рднрд╛рд╖рд╛' рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрди: 22, 28. ExportCodeCleanupProvider.cs 22
- V3095 рдирд▓ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ 'рд╕рджрд╕реНрдп рдЯрд╛рдЗрдк' рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрди: 183, 184. рд╕рд┐рдВрдЯреИрдХреНрд╕рдЬреЗрдирд░реЗрдЯрд░рдПрдХреНрд╕реНрдЯреЗрдВрд╢рди_рдХреНрд░рд┐рдПрдЯрдЧреЗрдЯ рд╣реИрд╢рдХреЛрдбрдореИрдереЛрдбреНрд╕ред 183
- V3095 рдирд▓ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ 'рдорд╛рдиреНрдпрдЯрд╛рдЗрдкрдбрдХреНрд▓реЗрд░реЗрд╢рди' рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред Check lines: 223, 228. SyntaxTreeExtensions.cs 223
- V3095 The 'text' object was used before it was verified against null. Check lines: 376, 385. MSBuildWorkspace.cs 376
- V3095 The 'nameOrMemberAccessExpression' object was used before it was verified against null. Check lines: 206, 223. CSharpGenerateTypeService.cs 206
- V3095 The 'simpleName' object was used before it was verified against null. Check lines: 83, 85. CSharpGenerateMethodService.cs 83
- V3095 The 'option' object was used before it was verified against null. Check lines: 23, 28. OptionKey.cs 23
V3105 рдХреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ ред рдпрд╣ рдЪрд░ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рддреЗ рд╕рдордп рд╕рд╢рд░реНрдд рдирд▓ рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ , рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рдж рдХреЛрдб рдореЗрдВ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢реВрдиреНрдп рд╕рдорд╛рдирддрд╛ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХреЗ рдмрд┐рдирд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ редрдЕрдЧрд▓реА рддреНрд░реБрдЯрд┐ рдХреЛ рджреЛ рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рддреБрд░рдВрдд рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИредV3105 'рдбреЙрдХреНрдпреВрдореЗрдВрдЯрдЖрдИрдб' рд╡реЗрд░рд┐рдПрдмрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд▓-рд╕рд╢рд░реНрдд рдСрдкрд░реЗрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрд╕рд╛рдЗрди рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред NullReferenceException рд╕рдВрднрд╡ рд╣реИред CodeLensReferencesService.cs 138V3105 'рдбреЙрдХреНрдпреВрдореЗрдВрдЯрдЖрдИрдб' рд╡реИрд░рд┐рдПрдмрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рддрдм рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬрдм рдЗрд╕реЗ рдирд▓-рд╕рд╢рд░реНрдд рдСрдкрд░реЗрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рдерд╛ред NullReferenceException рд╕рдВрднрд╡ рд╣реИред CodeLensReferencesService.cs 139 private static async Task<ReferenceLocationDescriptor> GetDescriptorOfEnclosingSymbolAsync(....) { .... var documentId = solution.GetDocument(location.SourceTree)?.Id; return new ReferenceLocationDescriptor( .... documentId.ProjectId.Id, documentId.Id, ....); }
рдЪрд░ рдбреЙрдХреНрдпреБрдореЗрдВрдЯрдЖрдИрдб рдХреЛ рд╢реВрдиреНрдп рд╕реЗ рдЖрд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред рдирддреАрдЬрддрди, ReferenceLocationDescriptor рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдПрдХ рдЕрдкрд╡рд╛рдж рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрдЧрд╛ред рдХреЛрдб рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: return new ReferenceLocationDescriptor( .... documentId?.ProjectId.Id, documentId?.Id, ....);
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреЛрдб рдореЗрдВ рдЖрдЧреЗ, рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рджрд┐рдП рдЧрдП рдЕрд╢рдХреНрдд рдЪрд░ рдХреА рд╕рдорд╛рдирддрд╛ рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рдП редрдХреЛрдб рдореЗрдВ рдЕрдиреНрдп рд╕рдорд╛рди рддреНрд░реБрдЯрд┐рдпрд╛рдВ:- V3105 'рдкреНрд░рддреАрдХ' рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрд╢рдХреНрдд-рд╕рд╢рд░реНрдд рд╕рдВрдЪрд╛рд▓рдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реМрдВрдкрд╛ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред NullReferenceException рд╕рдВрднрд╡ рд╣реИред SymbolFinder_Hierarchy.cs 44
- V3105 'рдкреНрд░рддреАрдХ' рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрд╢рдХреНрдд-рд╕рд╢рд░реНрдд рдСрдкрд░реЗрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реМрдВрдкрд╛ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред NullReferenceException рд╕рдВрднрд╡ рд╣реИред SymbolFinder_Hierarchy.cs 51
рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдПрдБ рдФрд░ рдХреЛрд╖реНрдардХV3123 рд╢рд╛рдпрдж '?:' рдСрдкрд░реЗрдЯрд░ рдЕрдкреЗрдХреНрд╖рд╛ рдХреЗ рдЕрдиреБрд░реВрдк рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдЗрд╕рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЕрдиреНрдп рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╕реЗ рдХрдо рд╣реИред Edit.cs 70 public bool Equals(Edit<TNode> other) { return _kind == other._kind && (_oldNode == null) ? other._oldNode == null : _oldNode.Equals(other._oldNode) && (_newNode == null) ? other._newNode == null : _newNode.Equals(other._newNode); }
рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд░рд┐рдЯрд░реНрди рдмреНрд▓реЙрдХ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЧрдгрдирд╛ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИред рдпрд╣ рдорд╛рди рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдкрд╣рд▓реА рд╢рд░реНрдд _kind == other._kin d рд╣реЛрдЧреА (рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рдж рд▓рд╛рдЗрди рд░реИрдкрд┐рдВрдЧ рдХреА рдЧрдИ рдереА), рдФрд░ рдлрд┐рд░ " ? " рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╕реНрдерд┐рддрд┐ рдмреНрд▓реЙрдХ рдХреА рдЧрдгрдирд╛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдХреА рдЬрд╛рдПрдЧреА ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдкрд╣рд▓реА рд╕реНрдерд┐рддрд┐ _kind == other._kind && (_oldNode == null) рд╣реЛрдЧреА ред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ && рдСрдкрд░реЗрдЯрд░ рдХреЗ рдкрд╛рд╕ " ? " рдСрдкрд░реЗрдЯрд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╣реИ ред рддреНрд░реБрдЯрд┐ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, " ? " рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╕рднреА рднрд╛рд╡реЛрдВ рдХреЛ рд╕рдореЗрдЯрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ : return _kind == other._kind && ((_oldNode == null) ? other._oldNode == null : _oldNode.Equals(other._oldNode)) && ((_newNode == null) ? other._newNode == null : _newNode.Equals(other._newNode));
рдпрд╣ рдорд┐рд▓реА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд╡рд┐рд╡рд░рдг рдХрд╛ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИредрдирд┐рд╖реНрдХрд░реНрд╖рд░реЛрд╕рд▓рд┐рди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛрдб (2,770,000 рдкрдВрдХреНрддрд┐рдпреЛрдВ) рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, рдореИрдВ рдЬрд┐рди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛, рдЙрдирдХреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдпрд╣ рдХрд╛рдлреА рдХрдо рд░рд╛рд╢рд┐ рд╣реЛрдЧреАред рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдЖрдВрджреНрд░реЗрдИ рдХреА рддрд░рд╣, рдореИрдВ рднреА рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЙрдЪреНрдЪ рдЧреБрдгрд╡рддреНрддрд╛ рдХреЛ рдкрд╣рдЪрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реВрдВредрдореИрдВ рдпрд╣ рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдРрд╕реЗ рд╕рд╛рдордпрд┐рдХ рдХреЛрдб рдЪреЗрдХреЛрдВ рдХрд╛ рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреА рдХрд╛рд░реНрдпрдкреНрд░рдгрд╛рд▓реА рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдЗрд╕рдХрд╛ рдХреЛрдИ рд▓рд╛рдн рдирд╣реАрдВ рд╣реИред рд╕реНрдЯреЗрдЯрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЛ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рди рдХрд┐ рдХреЗрд╕ рд╕реЗ рдХреЗрд╕ рддрдХред рдлрд┐рд░ рдХрдИ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╢реБрд░реБрдЖрддреА рдЪрд░рдгреЛрдВ рдореЗрдВ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдЗрд╕рд▓рд┐рдП, рдЙрдиреНрд╣реЗрдВ рдареАрдХ рдХрд░рдиреЗ рдХреА рд▓рд╛рдЧрдд рджрд╕ рдЧреБрдирд╛ рдХрдо рд╣реЛрдЧреАред рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЛ рдЗрд╕ рдЫреЛрдЯреЗ рд╕реЗ рд▓реЗрдЦ рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ , рдЬрд┐рд╕реЗ рдореИрдВ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд╕рд╛рде рдкрд░рд┐рдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реВрдВредрдЖрдк рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдП рдЧрдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ, рдФрд░ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рджреЛрдиреЛрдВ рдореЗрдВ рдХреБрдЫ рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдмрд╕ рд╣рдорд╛рд░реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ред
рдпрджрд┐ рдЖрдк рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдЕрдВрдЧреНрд░реЗрдЬреА рдмреЛрд▓рдиреЗ рд╡рд╛рд▓реЗ рджрд░реНрд╢рдХреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдЕрдиреБрд╡рд╛рдж рдХреЗ рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ: рд╕рд░реНрдЧреЗрдИ рдЦреНрд░реЗрдиреЛрд╡ред рд░реЛрдЬрд▓рд┐рди рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛ ред