рд╣реБрдЖрд╡реЗрдИ рдХреНрд▓рд╛рдЙрдб: рдЖрдЬ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдмрд╛рджрд▓ рдЫрд╛рдП рд╣реБрдП рд╣реИрдВ

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

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

рдкрд░рд┐рдЪрдп


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


рдФрд░ рдЗрд╕рд▓рд┐рдП, рдЬрдм рдореИрдВ рдЖрдЧрд╛рдореА рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЙрдард╛ рд░рд╣рд╛ рдерд╛, рддреЛ рдореБрдЭреЗ рдореЗрд▓ рдореЗрдВ Huawei рд╕реЗ рдиреМрдХрд░реА рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдорд┐рд▓рд╛ред рдЗрд╕ рдХрдВрдкрдиреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдПрдХрддреНрд░ рдХрд░рддреЗ рд╕рдордп, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдЙрдирдХреА рдЕрдкрдиреА рдХреНрд▓рд╛рдЙрдб рд╕реЗрд╡рд╛рдПрдБ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЗрди рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб GitHub рдкрд░ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИред рдпрд╣ рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдХрдВрдкрдиреА рдХреЛ рдЪреБрдирдиреЗ рдХрд╛ рдореБрдЦреНрдп рдХрд╛рд░рдг рдерд╛ред рдЬреИрд╕рд╛ рдХрд┐ рдПрдХ рдЪреАрдиреА рдЛрд╖рд┐ рдиреЗ рдХрд╣рд╛: "рджреБрд░реНрдШрдЯрдирд╛рдПрдВ рдЖрдХрд╕реНрдорд┐рдХ рдирд╣реАрдВ рд╣реИрдВред"

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


рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг


рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рдЬрд╛рдирдХрд╛рд░реА рдЦреЛрдЬрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд╣реБрдЖрд╡реЗрдИ рдХрд╛ рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдХреЗрдВрджреНрд░ рд╣реИ рдЬрд╣рд╛рдВ рдЖрдк рдЙрдирдХреА рдХреНрд▓рд╛рдЙрдб рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЬрд╛рдирдХрд╛рд░реА, рдЧрд╛рдЗрдб рдФрд░ рд╕реНрд░реЛрдд рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрди рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЧреЛ, рдЬрд╛рд╡рд╛ рдФрд░ рдкрд╛рдпрдерди рдЬреИрд╕реА рднрд╛рд╖рд╛рдПрдБ рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд░рд╣реАрдВред

рдЪреВрдВрдХрд┐ рдореИрдВ рдЬрд╛рд╡рд╛ рдореЗрдВ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдЙрд╕реА рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛ред рд▓реЗрдЦ рдореЗрдВ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреА рдЧрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╕реНрд░реЛрдд GitHub рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА huaweicloud рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдХреЗрд╡рд▓ рдХреБрдЫ рдХреНрд░рд┐рдпрд╛рдПрдВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА:

  • рднрдВрдбрд╛рд░ рд╕реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ;
  • рдЬрд╛рд╡рд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдкрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╢реБрд░реВ рдХрд░реЗрдВред

рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдХреЗрд╡рд▓ рддреАрди рдХреЛ рдмрд╛рд╣рд░ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗ, рдЬрд┐рди рдкрд░ рдореИрдВ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╢реЗрд╖ рдЬрд╛рд╡рд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХрд╛ рдЖрдХрд╛рд░ рдмрд╣реБрдд рдЫреЛрдЯрд╛ рдерд╛ред

рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкрд░рд┐рдгрд╛рдо (рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдлрд╛рдЗрд▓реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛):


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

рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдореИрдВрдиреЗ рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛, рдЬрд┐рд╕рдХреА рдЪрд░реНрдЪрд╛ рдореИрдВ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдХрд░реВрдБрдЧрд╛ред

рдлреАрд▓реНрдб рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдСрд░реНрдбрд░


V6050 рд╡рд░реНрдЧ рдЖрд░рдВрднреАрдХрд░рдг рдЪрдХреНрд░ рдореМрдЬреВрдж рд╣реИред 'рд▓реЙрдЧ' рдХреЗ рдЖрд░рдВрднреАрдХрд░рдг рд╕реЗ рдкрд╣рд▓реЗ 'INSTANCE' рдХрд╛ рдкреНрд░рд╛рд░рдВрдн рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред рдЕрдирдЯреНрд░рд╕реНрдЯреЗрдбрдПрд╕рдПрд╕рдПрд▓.рдЬрд╛рд╡рд╛ (32), рдЕрдирдЯреНрд░рд╕реНрдЯреЗрдбрдПрд╕рдПрд╕рдПрд▓.рдЬрд╛рд╡рд╛ (59), рдЕрдирдЯреНрд░рд┐рд╕реНрд╡рд░реНрдбрдПрд╕рдПрд╕рдПрд▓.рдЬрд╛рд╡рд╛ (33)

public class UntrustedSSL { private static final UntrustedSSL INSTANCE = new UntrustedSSL(); private static final Logger LOG = LoggerFactory.getLogger(UntrustedSSL.class); .... private UntrustedSSL() { try { .... } catch (Throwable t) { LOG.error(t.getMessage(), t); // <= } } } 

рдпрджрд┐ рдХреЛрдИ рднреА рдЕрдкрд╡рд╛рдж рдЕрдирдЯреНрд░рд╕реНрдЯреЗрдбрдПрд╕рдПрд╕рдПрд▓ рд╡рд░реНрдЧ рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЗрд╕ рдЕрдкрд╡рд╛рдж рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд▓реЙрдЧ рд▓реЙрдЧрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреИрдЪ рдмреНрд▓реЙрдХ рдореЗрдВ рд▓реЙрдЧ рдХреА рдЬрд╛рддреА рд╣реИ ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╕реНрдереИрддрд┐рдХ рдлрд╝реАрд▓реНрдбреНрд╕ рдХреЗ рдЖрд░рдВрднреАрдХрд░рдг рдХреНрд░рдо рдХреЗ рдХрд╛рд░рдг, INSTANCE рдлрд╝реАрд▓реНрдб рдХреЛ рдЖрд░рдореНрдн рдХрд░рдиреЗ рдХреЗ рд╕рдордп рд▓реЙрдЧ рдЕрднреА рддрдХ рдЖрд░рдВрднреАрдХреГрдд рдирд╣реАрдВ рд╣реБрдЖ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЬрдм рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ рдореЗрдВ рдЕрдкрд╡рд╛рдж рдЬрд╛рдирдХрд╛рд░реА рд▓реЙрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдПрдХ NullPointerException рдХреЛ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдЕрдкрд╡рд╛рдж рдХрд┐рд╕реА рдЕрдиреНрдп рдЕрдкрд╡рд╛рдж рдХрд╛ рдХрд╛рд░рдг рд╣реИред InInitializerError рдЕрдкрд╡рд╛рдж рд╣реИ рдЬрд┐рд╕реЗ рдпрджрд┐ рд╕реНрдереИрддрд┐рдХ рдлрд╝реАрд▓реНрдб рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рддреЗ рд╕рдордп рдХреЛрдИ рдЕрдкрд╡рд╛рдж рд╣реБрдЖ, рддреЛ рдЙрд╕реЗ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд░реНрдгрд┐рдд рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рдХреЛ INSTANCE рдЖрд░рдВрднреАрдХрд░рдг рд╕реЗ рдкрд╣рд▓реЗ рд▓реЙрдЧ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рд░рдЦрдирд╛ рд╣реИред

рдЕрджреГрд╢реНрдп рдЯрд╛рдЗрдкреЛ


V6005 рдЪрд░ 'this.metricSchema' рдЦреБрдж рдХреЛ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИред OpenTSDBSchema.java (72)

 public class OpenTSDBSchema { @JsonProperty("metric") private List<SchemaField> metricSchema; .... public void setMetricsSchema(List<SchemaField> metricsSchema) { this.metricSchema = metricSchema; // <= } public void setMetricSchema(List<SchemaField> metricSchema) { this.metricSchema = metricSchema; } .... } 

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

V6005 рдЪрд░ 'рд╕рд╕реНрдкреЗрдВрдб' рдЦреБрдж рдХреЛ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИред SuspendTransferTaskRequest.java (77)

 public class SuspendTransferTaskRequest { .... private boolean suspend; .... public void setSuspend(boolean suspend) { suspend = suspend; } .... } 

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

 public void setSuspend(boolean suspend) { this.suspend = suspend; } 

рдкреВрд░реНрд╡ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕реНрдерд┐рддрд┐


рдЬреИрд╕рд╛ рдХрд┐ рдЕрдХреНрд╕рд░ рд╣реЛрддрд╛ рд╣реИ, V6007 рдирд┐рдпрдо рдЪреЗрддрд╛рд╡рдиреА рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЖрдЧреЗ рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИред

V6007 рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ 'рдлрд╝рд╛рдпрд░рд╡реЙрд▓рдкреЙрд▓рд┐рд╢рд┐рдпрдб == рдирд▓' рд╣рдореЗрд╢рд╛ рдЧрд▓рдд рд╣реЛрддрд╛ рд╣реИред рдлрд╝рд╛рдпрд░рд╡реЙрд▓рдкреЙрд▓реАрд╕реНрдХреВрд▓ рд╕реЗрд╡рд╛рдЗрдореНрдкреНрд▓.рдЬрд╛рд╡рд╛ (125)

 public FirewallPolicy removeFirewallRuleFromPolicy(String firewallPolicyId, String firewallRuleId) { checkNotNull(firewallPolicyId); checkNotNull(firewallRuleId); checkState(!(firewallPolicyId == null && firewallRuleId == null), "Either a Firewall Policy or Firewall Rule identifier must be set"); .... } 

рдЗрд╕ рд╡рд┐рдзрд┐ рдореЗрдВ, checkNotNull рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рдЕрд╢рдХреНрдд рдХреЗ рд▓рд┐рдП рддрд░реНрдХреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИ:

 @CanIgnoreReturnValue public static <T> T checkNotNull(T reference) { if (reference == null) { throw new NullPointerException(); } else { return reference; } } 

CheckNotNull рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рддрд░реНрдХ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк 100% рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЗ рд▓рд┐рдП рджрд┐рдпрд╛ рдЧрдпрд╛ рддрд░реНрдХ рд╢реВрдиреНрдп рдирд╣реАрдВ рд╣реИред рдЪреВрдВрдХрд┐ RemoveFirewallRuleFromPolicy рд╡рд┐рдзрд┐ рдХреЗ рджреЛрдиреЛрдВ рддрд░реНрдХреЛрдВ рдХреЛ CheckNotNull рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рдЬрд╛рдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╢реВрдиреНрдп рдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рддрд░реНрдХреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдкрд╣рд▓реА рджрд▓реАрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдЪреЗрдХрд╕реНрдЯреИрдЯ рд╡рд┐рдзрд┐ рдХреЛ рдкрд╛рд╕ рдХреА рдЬрд╛рддреА рд╣реИ, рдЬрд╣рд╛рдБ рддрд░реНрдХ рдлрд╝рд╛рдпрд░рд╡реЙрд▓рдкреЙрд▓рд┐рд╕рд┐рдЕрд╕ рдФрд░ рдлрд╛рдпрд░рд╡рд╛рд▓рд░реБрд▓реЗрдЗрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рдЬрд╛рдБрдЪ рдХреЗ рд▓рд┐рдП рд╢реВрдиреНрдп рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред

рдлрд╛рдпрд░рд╡реЙрд▓ рдХреЗ рд▓рд┐рдП рдЗрд╕реА рддрд░рд╣ рдХреА рдЪреЗрддрд╛рд╡рдиреА рдЬрд╛рд░реА рдХреА рдЬрд╛рддреА рд╣реИред

  • V6007 рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ 'рдлрд╝рд╛рдпрд░рд╡реЙрд▓RuleId == рдирд▓' рд╣рдореЗрд╢рд╛ рдЧрд▓рдд рд╣реИред рдлрд╝рд╛рдпрд░рд╡реЙрд▓рдкреЙрд▓реАрд╕реНрдХреВрд▓ рд╕реЗрд╡рд╛рдЗрдореНрдкреНрд▓.рдЬрд╛рд╡рд╛ (125)

V6007 рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ 'рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧрдкрд╛рдо! = рдирд▓' рд╣рдореЗрд╢рд╛ рд╕рдЪ рд╣реЛрддрд╛ рд╣реИред NetworkPolicyServiceImpl.java (60)

 private Invocation<NetworkServicePolicies> buildInvocation(Map<String, String> filteringParams) { .... if (filteringParams == null) { return servicePoliciesInvocation; } if (filteringParams != null) { // <= .... } return servicePoliciesInvocation; } 

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

13 рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рдРрд╕рд╛ рд╣реА рд╣реЛрддрд╛ рд╣реИ:

  • V6007 рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ 'рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧрдкрд╛рдо! = рдирд▓' рд╣рдореЗрд╢рд╛ рд╕рдЪ рд╣реЛрддрд╛ рд╣реИред PolicyRuleServiceImpl.java (58)
  • V6007 рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ 'рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧрдкрд╛рдо! = рдирд▓' рд╣рдореЗрд╢рд╛ рд╕рдЪ рд╣реЛрддрд╛ рд╣реИред GroupServiceImpl.java (58)
  • V6007 рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ 'рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧрдкрд╛рдо! = рдирд▓' рд╣рдореЗрд╢рд╛ рд╕рдЪ рд╣реЛрддрд╛ рд╣реИред рдПрдХреНрд╕рдЯрд░реНрдирд▓рд╢рд┐рдк рд╕реЗрд╡рд╛рдЗрдореНрдкреНрд▓.рдЬрд╛рд╡рд╛ (57)
  • V6007 рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ 'рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧрдкрд╛рдо! = рдирд▓' рд╣рдореЗрд╢рд╛ рд╕рдЪ рд╣реЛрддрд╛ рд╣реИред L3policyServiceImpl.java (57)
  • V6007 рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ 'рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧрдкрд╛рдо! = рдирд▓' рд╣рдореЗрд╢рд╛ рд╕рдЪ рд╣реЛрддрд╛ рд╣реИред PolicyRuleSetServiceImpl.java (58)
  • рдФрд░ рдЗрд╕реА рддрд░рд╣ ...

рдЕрд╢рдХреНрдд рд╕рдВрджрд░реНрдн


V6008 'm.blockDeviceMapping' рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рдЕрд╢рдХреНрддред рдиреЛрд╡рд╛рд╕реЗрд╡рд░рдХреНрд░рд┐рдПрдЯ.рдЬрд╛рд╡рд╛ (390)

 @Override public ServerCreateBuilder blockDevice(BlockDeviceMappingCreate blockDevice) { if (blockDevice != null && m.blockDeviceMapping == null) { m.blockDeviceMapping = Lists.newArrayList(); } m.blockDeviceMapping.add(blockDevice); // <= return this; } 

рдЗрд╕ рд╡рд┐рдзрд┐ рдореЗрдВ, рдмреНрд▓реЙрдХред рддрд░реНрдХ рдХреЛ рд╢реВрдиреНрдп рд╣реЛрдиреЗ рдкрд░ m.blockDeviceMapping рд╕рдВрджрд░реНрдн рдлрд╝реАрд▓реНрдб рдХрд╛ рдкреНрд░рд╛рд░рдВрдн рдирд╣реАрдВ рд╣реЛрдЧрд╛ ред рдЗрд╕ рдлрд╝реАрд▓реНрдб рдХреЛ рдХреЗрд╡рд▓ рдЗрд╕ рд╡рд┐рдзрд┐ рдореЗрдВ рдкреНрд░рд╛рд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЬрдм рдРрдб рд╡рд┐рдзрд┐ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ m.blockDeviceMapping рдлрд╝реАрд▓реНрдб NullPointerException рдХреЛ рдлреЗрдВрдХ рджреЗрдЧреАред

V6008 рдлрд╝рдВрдХреНрд╢рди '<init>' рдореЗрдВ 'FileId.get (рдкрде)' рдХреА рд╕рдВрднрд╛рд╡рд┐рдд рдЕрд╢рдХреНрддрддрд╛ ред TrackedFile.java (140), TrackedFile.java (115)

 public TrackedFile(FileFlow<?> flow, Path path) throws IOException { this(flow, path, FileId.get(path), ....); } 

рд╕реНрдерд┐рд░ рд╡рд┐рдзрд┐ FileId.get (рдкрде) рдХрд╛ рдкрд░рд┐рдгрд╛рдо рддреАрд╕рд░реЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ TrackedFile рд╡рд░реНрдЧ рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд┐рдзрд┐ рд╢реВрдиреНрдп рд╣реЛ рд╕рдХрддреА рд╣реИ :

 public static FileId get(Path file) throws IOException { if (!Files.exists(file)) { return null; } .... } 

рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмреБрд▓рд╛рдП рдЧрдП рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ, рдЖрдИрдбреА рдХрд╛ рддрд░реНрдХ рддрдм рддрдХ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдЗрд╕рдХрд╛ рдкрд╣рд▓реА рдмрд╛рд░ рдЙрдкрдпреЛрдЧ рди рдХрд┐рдпрд╛ рдЬрд╛рдП:

 public TrackedFile(...., ...., FileId id, ....) throws IOException { .... FileId newId = FileId.get(path); if (!id.equals(newId)) { .... } } 

рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рд╢реВрдиреНрдп рдХреЛ рддреАрд╕рд░реЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рдзрд┐ рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдПрдХ рдЕрдкрд╡рд╛рдж рд╣реЛрдЧрд╛ред

рдЗрд╕реА рддрд░рд╣ рдХреА рд╕реНрдерд┐рддрд┐ рджреВрд╕рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣реЛрддреА рд╣реИ:

  • V6008 'рдмрдлрд░' рдХреА рд╕рдВрднрд╛рд╡рд┐рдд рдЕрд╢рдХреНрддрддрд╛ред PublishingQueue.java (518)

V6008 'рдбреЗрдЯрд╛рдЯреЗрдореНрдкрд╛рдЗрд▓' рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рдЕрд╢рдХреНрддрддрд╛ред рдХреИрдЪреЗрдордирдЧрд░.рдЬрд╛рд╡рд╛ (91)

 @Override public void putToCache(PutRecordsRequest putRecordsRequest) { .... if (dataTmpFile == null || !dataTmpFile.exists()) { try { dataTmpFile.createNewFile(); // <= } catch (IOException e) { LOGGER.error("Failed to create cache tmp file, return.", e); return ; } } .... } 

рдФрд░ рдлрд┐рд░ рд╕реЗ рдПрди.рдкреА.рдИ. рд╕рд╢рд░реНрдд рд╡рд┐рд╡рд░рдг рдореЗрдВ рдХрдИ рдЪреЗрдХ рдбреЗрдЯрд╛рдЯреИрдореНрдкрдлрд╛рдЗрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЖрдЧреЗ рдбреАрдлреНрд░реЗрдВрд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╢реВрдиреНрдп рд╣реЛрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рджреЛ рдЯрд╛рдЗрдкреЛ рд╣реИрдВ, рдФрд░ рдЪреЗрдХ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:

 if (dataTmpFile != null && !dataTmpFile.exists()) 

рд╕рдмрд╕реНрдЯреНрд░рд┐рдВрдЧ рдФрд░ рдирдХрд╛рд░рд╛рддреНрдордХ рд╕рдВрдЦреНрдпрд╛


V6009 ' рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди ' рдлрд╝рдВрдХреНрд╢рди '-1' рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрдмрдХрд┐ рдЧреИрд░-рдирдХрд╛рд░рд╛рддреНрдордХ рдорд╛рди рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реИред рддрд░реНрдХ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░реЗрдВ: 2. RemoveVersionProjectIdFromURL.java (37)

 @Override public String apply(String url) { String urlRmovePojectId = url.substring(0, url.lastIndexOf("/")); return urlRmovePojectId.substring(0, urlRmovePojectId.lastIndexOf("/")); } 

рдпрд╣ рд╕рдордЭрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ URL рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕ рд╡рд┐рдзрд┐ рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИред рдЕрдВрддрд┐рдо рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдмрд╛рдж рдХрдИ рдмрд╛рд░ рдЗрд╕ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдЯреНрд░рд┐рдо рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдЧрд░ lastIndexOf рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдореЗрд▓ рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИ, рддреЛ рдпрд╣ -1 рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧреАред рдпрд╣ рдПрдХ StringIndexOutOfBoundsException рдлреЗрдВрдХ рджреЗрдЧрд╛ , рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд╡рд┐рдзрд┐ рдХреЗ рддрд░реНрдХ рдЧреИрд░-рдирдХрд╛рд░рд╛рддреНрдордХ рд╕рдВрдЦреНрдпрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрдирдкреБрдЯ рддрд░реНрдХ рдХрд╛ рд╕рддреНрдпрд╛рдкрди рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ рдпрд╛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ lastIndexOf рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдирдХрд╛рд░рд╛рддреНрдордХ рд╕рдВрдЦреНрдпрд╛ рдирд╣реАрдВ рд╣реИрдВред

рдпрд╣рд╛рдБ рдХреБрдЫ рдЕрдиреНрдп рд╕реНрдерд╛рди рд╣реИрдВ рдЬрд╣рд╛рдБ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ:

  • V6009 'рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди' рдлрд╝рдВрдХреНрд╢рди '-1' рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрдмрдХрд┐ рдЧреИрд░-рдирдХрд╛рд░рд╛рддреНрдордХ рдорд╛рди рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реИред рдирд┐рд░реАрдХреНрд╖рдг рддрд░реНрдХ: 2. RemoveProjectIdFromURL.java (37)
  • V6009 'рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди' рдлрд╝рдВрдХреНрд╢рди '-1' рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрдмрдХрд┐ рдЧреИрд░-рдирдХрд╛рд░рд╛рддреНрдордХ рдорд╛рди рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реИред рддрд░реНрдХ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░реЗрдВ: 2. RemoveVersionProjectIdFromURL.java (38)

рднреВрд▓ рдЧрдП рдкрд░рд┐рдгрд╛рдо


V6010 рдлрд╝рдВрдХреНрд╢рди ' рдХреЙрдирдХреИрдЯ ' рдХреЗ рд░рд┐рдЯрд░реНрди рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред AKSK.java (278)

 public static String buildCanonicalHost(URL url) { String host = url.getHost(); int port = url.getPort(); if (port > -1) { host.concat(":" + Integer.toString(port)); } return host; } 

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

 if (port > -1) { host = host.concat(":" + Integer.toString(port)); } 

рдЕрдкреНрд░рдпреБрдХреНрдд рдЪрд░


V6021 рдЪрд░ 'url' рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред TriggerV2Service.java (95)

 public ActionResponse deleteAllTriggersForFunction(String functionUrn) { checkArgument(!Strings.isNullOrEmpty(functionUrn), ....); String url = ClientConstants.FGS_TRIGGERS_V2 + ClientConstants.URI_SEP + functionUrn; return deleteWithResponse(uri(triggersUrlFmt, functionUrn)).execute(); } 

рдЗрд╕ рд╡рд┐рдзрд┐ рдореЗрдВ, рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХреЗ рдмрд╛рдж рдпреВрдЖрд░рдПрд▓ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, url рдЪрд░ рдХреЛ functionUrn рдХреЗ рдмрдЬрд╛рдп рджреВрд╕рд░реЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ uri рд╡рд┐рдзрд┐ рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдЪрд░ functionUrn url рдЪрд░ рдХреЗ рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрддрд╛ рд╣реИред

рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рддрд░реНрдХ


V6022 рдкреИрд░рд╛рдореАрдЯрд░ 'returnType' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдмреЙрдбреА рдХреЗ рдЕрдВрджрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред HttpRequest.java (68)

 public class HttpReQuest<R> { .... Class<R> returnType; .... public HttpRequest(...., Class<R> returnType) // <= { this.endpoint = endpoint; this.path = path; this.method = method; this.entity = entity; } .... public Class<R> getReturnType() { return returnType; } .... } 

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

рдПрдХ рд╣реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛


V6032 рдпрд╣ рдЕрдЬреАрдм рд╣реИ рдХрд┐ рд╡рд┐рдзрд┐ 'рд╕рдХреНрд╖рдо' рдХрд╛ рд╢рд░реАрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рд╡рд┐рдзрд┐ 'рдЕрдХреНрд╖рдо' рдХреЗ рд╢рд░реАрд░ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред ServiceAction.java (32), ServiceAction.java (36)

 public class ServiceAction implements ModelEntity { private String binary; private String host; private ServiceAction(String binary, String host) { this.binary = binary; this.host = host; } public static ServiceAction enable(String binary, String host) { // <= return new ServiceAction(binary, host); } public static ServiceAction disable(String binary, String host) { // <= return new ServiceAction(binary, host); } .... } 

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

рдореБрдЦреНрдп рдмрд╛рдд рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рднреВрд▓ рдЧрдП


V6060 рдирд▓ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ ' рдкрд░рдо ' рд╕рдВрджрд░реНрдн рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред DomainService.java (49), DomainService.java (46)

 public Domains list(Map<String, String> params) { Preconditions.checkNotNull(params.get("page_size"), ....); Preconditions.checkNotNull(params.get("page_number"), ....); Invocation<Domains> domainInvocation = get(Domains.class, uri("/domains")); if (params != null) { // <= .... } return domainInvocation.execute(this.buildExecutionOptions(Domains.class)); } 

рдЗрд╕ рдкрджреНрдзрддрд┐ рдореЗрдВ, рд╣рдордиреЗ рдЕрд╢рдХреНрдд рдЕрд╕рдорд╛рдирддрд╛ рдХреЗ рд▓рд┐рдП рдореИрдк рдХреЗ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, params рддрд░реНрдХ рджреЛ рдмрд╛рд░ рд╡рд┐рдзрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ , рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ checkNotNull рд╡рд┐рдзрд┐ рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдм рдХреБрдЫ рддрд░реНрдХрд╕рдВрдЧрдд рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛! рдЕрдЧрд░ , null рдХреЗ рд▓рд┐рдП params рддрд░реНрдХ рдХреА рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИред рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдпрд╣ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрдирдкреБрдЯ рддрд░реНрдХ рд╢реВрдиреНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдЬрд╛рдВрдЪ рд╕реЗ рдкрд╣рд▓реЗ, рдЧреЗрдЯ рд╡рд┐рдзрд┐ рдХреЛ рджреЛ рдмрд╛рд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд╛рд░рд╛рдореНрд╕ рдХрд╣рд╛ рдЬрд╛рддрд╛ рдерд╛ред рдпрджрд┐ рдирд▓ рдХреЛ рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдкрд╣рд▓реА рдмрд╛рд░ рдкреНрд░рд╛рдкреНрдд рд╡рд┐рдзрд┐ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЗрд╕реА рддрд░рд╣ рдХреА рд╕реНрдерд┐рддрд┐ рддреАрди рдФрд░ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рд╣реЛрддреА рд╣реИ:

  • V6060 рдирд▓ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ 'рдкрд░рдо' рд╕рдВрджрд░реНрдн рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред DomainService.java (389), DomainService.java (387)
  • V6060 рдирд▓ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ 'рдкрд░рдо' рд╕рдВрджрд░реНрдн рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред DomainService.java (372), DomainService.java (369)
  • V6060 рдирд▓ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ 'рдкрд░рдо' рд╕рдВрджрд░реНрдн рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред DomainService.java (353), DomainService.java (350)

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


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

PVS-Studio рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ Huawei рдХреЛ рдЕрдкрдиреА рдХреНрд▓рд╛рдЙрдб рд╕реЗрд╡рд╛рдУрдВ рдХреА рдЬрд╛рдБрдЪ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрд┐рдд рдХрд░реЗрдЧрд╛ рддрд╛рдХрд┐ рдЗрд╕ рдХрдВрдкрдиреА рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЙрдиреНрд╣реЗрдВ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЕрдзреНрдпрдпрди рдХрд░ рд╕рдХреЗрдВред

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



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

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


All Articles