рдЬрд╛рд╡рд╛ рдХреЗ рд▓рд┐рдП рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕рдбрд╝рдХ рдХреЛ рд╣рд┐рдЯ рдХрд░рддрд╛ рд╣реИред рдЕрдЧрд▓рд╛ рдкрдбрд╝рд╛рд╡ рд╣реИ рдПрд▓реАрдЯреЗрд╕рд░реНрдЪ

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

PVS- рд╕реНрдЯреВрдбрд┐рдпреЛ рдЯреАрдо рдХрдИ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдПрдХ рд╣реА рдирд╛рдо рд╡рд╛рд▓реЗ рд╕реНрдерд┐рд░ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рджреНрд╡рд╛рд░рд╛ рдУрдкрди-рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдЪреЗрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмреНрд▓реЙрдЧ рдХреЛ рд░рдЦ рд░рд╣реА рд╣реИред рдЖрдЬ рддрдХ, 300 рд╕реЗ рдЕрдзрд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рдЬрд╛рдБрдЪ рдХреА рдЧрдИ рд╣реИ, рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдореЗрдВ 12000 рд╕реЗ рдЕрдзрд┐рдХ рдорд╛рдорд▓реЗ рд╣реИрдВред рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ C рдФрд░ C ++ рдХреЛрдб рдХреА рдЬрд╛рдБрдЪ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдмрд╛рдж рдореЗрдВ C # рдХрд╛ рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рд▓рд┐рдП, рд╕рднреА рдЪреЗрдХ рдХрд┐рдП рдЧрдП рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдореЗрдВ C рдФрд░ C ++ рдХреЗ рдмрд╣реБрдордд (> 80%) рдЦрд╛рддреЗ рд╣реИрдВред рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЬрд╛рд╡рд╛ рдХреЛ рд╕рдорд░реНрдерд┐рдд рднрд╛рд╖рд╛рдУрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рд▓рд┐рдП рдЕрдм рдПрдХ рдкреВрд░реА рдирдИ рдЦреБрд▓реА рджреБрдирд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЬрд╛рд╡рд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рд╕реЗ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЖрдзрд╛рд░ рдХреЛ рдкреВрд░рдХ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред

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

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдЗрд▓рд╛рд╕реНрдЯрд┐рдХреНрд╕рд░реНрдЪ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ


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

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

рдареАрдХ рд╣реИ, рдкрд░реНрдпрд╛рдкреНрдд рдкрд░рд┐рдЪрдпред

рдЪреАрдЬреЗрдВ рдХреИрд╕реА рдереАрдВ, рдЗрд╕рдХреА рдкреВрд░реА рдХрд╣рд╛рдиреА


рдЪреЗрдХ рд╕реЗ рд╣реА рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рдереАред рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдХреНрд░рдо рд╕рд░рд▓ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдордп рдирд╣реАрдВ рд▓рдЧрд╛ рд╣реИ:

  • GitHub рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЧрдИ рдЗрд▓рд╛рд╕реНрдЯрд┐рдХреНрд╕ рдЦреЛрдЬ;
  • рдЬрд╛рд╡рд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди тАЛтАЛрдХрд┐рдпрд╛ рдФрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЪрд▓рд╛рдпрд╛;
  • рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛, рдЗрд╕рдореЗрдВ рд╡рд┐рд▓рдВрдм рдХрд┐рдпрд╛ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рдорд╛рдорд▓реЛрдВ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ред

рдЕрдм рдореБрдЦреНрдп рдмрд┐рдВрджреБ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред

рдмрд╛рд╣рд░ рджреЗрдЦреЛ! рд╕рдВрднрд╡ NullPointerException


V6008 'рд▓рд╛рдЗрди тАЩрдХрд╛ рдЕрд╢рд╛рдВрддрд┐рдХрд░рдг ред GoogleCloudStorageFixture.java (451)

private static PathTrie<RequestHandler> defaultHandlers(....) { .... handlers.insert("POST /batch/storage/v1", (request) -> { .... // Reads the body line = reader.readLine(); byte[] batchedBody = new byte[0]; if ((line != null) || (line.startsWith("--" + boundary) == false)) // <= { batchedBody = line.getBytes(StandardCharsets.UTF_8); } .... }); .... } 

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

V6008 ' рдЕрдиреБрд╡рд░реНрддреА IndexexMetadata ' рдХреА рд╕рдВрднрд╛рд╡рд┐рдд рдЕрд╢рдХреНрддрддрд╛ ред TransportResumeFollowAction.java (171), TransportResumeFollowAction.java (170), TransportResumeFollowAction.java (194)

 void start( ResumeFollowAction.Request request, String clusterNameAlias, IndexMetaData leaderIndexMetadata, IndexMetaData followIndexMetadata, ....) throws IOException { MapperService mapperService = followIndexMetadata != null // <= ? .... : null; validate(request, leaderIndexMetadata, followIndexMetadata, // <= leaderIndexHistoryUUIDs, mapperService); .... } 

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

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

 static void validate( final ResumeFollowAction.Request request, final IndexMetaData leaderIndex, final IndexMetaData followIndex, // <= ....) { .... Map<String, String> ccrIndexMetadata = followIndex.getCustomData(....); // <= if (ccrIndexMetadata == null) { throw new IllegalArgumentException(....); } .... }} 

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

N60 рдХреЗ рд╡рд┐рд░реБрджреНрдз рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ V6060 'рдиреЛрдб' рд╕рдВрджрд░реНрдн рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред RestTasksAction.java (152), RestTasksAction.java (151)

 private void buildRow(Table table, boolean fullId, boolean detailed, DiscoveryNodes discoveryNodes, TaskInfo taskInfo) { .... DiscoveryNode node = discoveryNodes.get(nodeId); .... // Node information. Note that the node may be null because it has // left the cluster between when we got this response and now. table.addCell(fullId ? nodeId : Strings.substring(nodeId, 0, 4)); table.addCell(node == null ? "-" : node.getHostAddress()); table.addCell(node.getAddress().address().getPort()); table.addCell(node == null ? "-" : node.getName()); table.addCell(node == null ? "-" : node.getVersion().toString()); .... } 

рдЗрд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдФрд░ рдиреИрджрд╛рдирд┐рдХ тАЛтАЛрдирд┐рдпрдо рдпрд╣рд╛рдВ рд╢реБрд░реВ рд╣реБрдЖред NullPointerException ред рдирд┐рдпрдо рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рд░реЛрддрд╛ рд╣реИ: "рджреЛрд╕реНрддреЛрдВ, рдЖрдк рдХреНрдпрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдЖрдк рдРрд╕рд╛ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдУрд╣, рдпрд╣ рднрдпрд╛рдирдХ рд╣реИ! рдЖрдк рдкрд╣рд▓реА рдмрд╛рд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрдЧрд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рдирд▓ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░рддреЗ рд╣реИрдВ? рдпрд╣рд╛рдБ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдЕрд╢рдХреНрдд рд╡рд╕реНрддреБ рдХреИрд╕реЗ рд╣реЛрддреА рд╣реИред рдХрд╛рд╢, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдХреА рдЯрд┐рдкреНрдкрдгреА рд╕реЗ рднреА рдорджрдж рдирд╣реАрдВ рдорд┐рд▓реАред

N60 рдХреЗ рд╡рд┐рд░реБрджреНрдз рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ V6060 'рдХрд╛рд░рдг' рд╕рдВрджрд░реНрдн рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред StartupException.java (76), StartupException.java (73)

 private void printStackTrace(Consumer<String> consumer) { Throwable originalCause = getCause(); Throwable cause = originalCause; if (cause instanceof CreationException) { cause = getFirstGuiceCause((CreationException)cause); } String message = cause.toString(); // <= consumer.accept(message); if (cause != null) { // <= // walk to the root cause while (cause.getCause() != null) { cause = cause.getCause(); } .... } .... } 

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

рдЕрд░реНрдерд╣реАрди рд╕реНрдерд┐рддрд┐


V6007 рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ 's.charAt (i)! =' \ T '' рд╣рдореЗрд╢рд╛ рд╕рддреНрдп рд╣реЛрддрд╛ рд╣реИред рдХреНрд░реЛрди.рдЬрд╛рд╡рд╛ (1223)

 private static int findNextWhiteSpace(int i, String s) { for (; i < s.length() && (s.charAt(i) != ' ' || s.charAt(i) != '\t'); i++) { // intentionally empty } return i; } 

рдорд╛рдирд╛ рдЧрдпрд╛ рдлрд╝рдВрдХреНрд╢рди i рдЗрдВрдбреЗрдХреНрд╕ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдХрд░ рдкрд╣рд▓реЗ рд╕реНрдкреЗрд╕ рдХреИрд░реЗрдХреНрдЯрд░ рдХреЗ рдЗрдВрдбреЗрдХреНрд╕ рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдХреНрдпрд╛ рдЧрд▓рдд рд╣реИ? рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЪреЗрддрд╛рд╡рдиреА рд╣реИ рдХрд┐ s.charAt (i)! = '\ T' рд╣рдореЗрд╢рд╛ рд╕рддреНрдп рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ (s.charAt (i)! = '' '|| s.charAt (i)! =' \ _ T !! ') рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рд╕рдЪ рднреА рд╣реЛрдЧрд╛ред рдХреНрдпрд╛ рдпрд╣ рд╕рдЪ рд╣реИ? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдЖрдк рдХрд┐рд╕реА рднреА рдЪрд░рд┐рддреНрд░ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдХреЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдпрд╣ рд╡рд┐рдзрд┐ рд╣рдореЗрд╢рд╛ s.length () рдХреЗ рдмрд░рд╛рдмрд░ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЛ рд▓реМрдЯрд╛рдПрдЧреА , рдЬреЛ рдЧрд▓рдд рд╣реИред рдореИрдВ рдпрд╣ рд╕реБрдЭрд╛рд╡ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрджреНрдпрдо рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдЙрдкрд░реЛрдХреНрдд рд╡рд┐рдзрд┐ рдпрд╣рд╛рдВ рджреЛрд╖ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ:

 private static int skipWhiteSpace(int i, String s) { for (; i < s.length() && (s.charAt(i) == ' ' || s.charAt(i) == '\t'); i++) { // intentionally empty } return i; } 

рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛, рдлрд┐рд░ рдХреЙрдкреА рдХрд┐рдпрд╛ рдФрд░ рд╣рдорд╛рд░реА рдЧрд▓рдд рд╡рд┐рдзрд┐ рдХреЛ рдвреВрдВрдврд╛ рдЧрдпрд╛ NNNWWiteSpace, рдХреБрдЫ рд╕рдВрдкрд╛рджрди рдХрд┐рдПред рд╡реЗ рд╡рд┐рдзрд┐ рдХреЛ рдареАрдХ рдХрд░рддреЗ рд░рд╣реЗ рдФрд░ рдареАрдХ рдХрд░рддреЗ рд░рд╣реЗ рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдареАрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдпрд╣ рдЕрдзрд┐рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдХреЗ рдмрдЬрд╛рдп && рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП || ред

V6007 рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ 'рд╢реЗрд╖ == 0' рд╣рдореЗрд╢рд╛ рдЭреВрдареА рд╣реЛрддреА рд╣реИред рдкреЗрдореБрд▓реЗрдЯреНрд╕.рдЬрд╛рд╡рд╛ (439)

 private static byte[] generateOpenSslKey(char[] password, byte[] salt, int keyLength) { .... int copied = 0; int remaining; while (copied < keyLength) { remaining = keyLength - copied; .... copied += bytesToCopy; if (remaining == 0) { // <= break; } .... } .... } 

рдХреЙрдкреА рдХрд┐рдП рдЧрдП <keyLength рд▓реВрдк рдХреА рд╕реНрдерд┐рддрд┐ рд╕реЗ рд╣рдо рдзреНрдпрд╛рди рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреЙрдкреА рд╣рдореЗрд╢рд╛ KeyLength рд╕реЗ рдХрдо рд╣реЛрдЧреА ред рдЗрд╕рд▓рд┐рдП, рд╢реЗрд╖ рдЪрд░ рдХреА рддреБрд▓рдирд╛ 0 рдХреЗ рд╕рд╛рде рдХрд░рдирд╛ рд╡реНрдпрд░реНрде рд╣реИ, рдФрд░ рдпрд╣ рд╣рдореЗрд╢рд╛ рдЧрд▓рдд рд╣реЛрдЧрд╛, рдЬрд┐рд╕ рдмрд┐рдВрджреБ рдкрд░ рд▓реВрдк рдПрдХ рд╢рд░реНрдд рд╕реЗ рдмрд╛рд╣рд░ рдирд╣реАрдВ рдирд┐рдХрд▓реЗрдЧрд╛ред рдХреЛрдб рдирд┐рдХрд╛рд▓реЗрдВ рдпрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рддрд░реНрдХ рдкрд░ рдкреБрдирд░реНрд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╣реА рд╕рднреА рдбреЙрдЯреНрд╕ рдХреЛ i рдХреЗ рдКрдкрд░ рд░рдЦ рдкрд╛рдПрдВрдЧреЗред

V6007 рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ 'HealthCheckDn.indexOf (' = ')> 0' рд╣рдореЗрд╢рд╛ рдЧрд▓рдд рд╣реИред ActiveDirectorySessionFactory.java (73)

 ActiveDirectorySessionFactory(RealmConfig config, SSLService sslService, ThreadPool threadPool) throws LDAPException { super(...., () -> { if (....) { final String healthCheckDn = ....; if (healthCheckDn.isEmpty() && healthCheckDn.indexOf('=') > 0) { return healthCheckDn; } } return ....; }, ....); .... } 

рд╡реНрдпрд░реНрде рдХреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдлрд┐рд░ рд╕реЗред рд╕реНрдерд┐рддрд┐ рдХреЗ рдЕрдиреБрд╕рд╛рд░, HealthCheckDn рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рджреЛрдиреЛрдВ рдЦрд╛рд▓реА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдкрд╣рд▓реЗ рд╣реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ '=' тАЛтАЛрдЕрдХреНрд╖рд░ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рддрд╛рдХрд┐ рд▓реИрдореНрдмреНрдбрд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЪрд░ healthCheckDn рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рджреЗ ред рдХрд╛рд╣реЗ, рдпрд╣ рддреЛ рд╕рдм рд╣реИ! рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд╢рд╛рдпрдж рд╕рдордЭ рдЧрдП рд╣реИрдВ, рдпрд╣ рдЕрд╕рдВрднрд╡ рд╣реИред рд╣рдо рдХреЛрдб рдореЗрдВ рдЧрд╣рд░реЗ рдирд╣реАрдВ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕реЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд╡рд┐рд╡реЗрдХ рдкрд░ рдЫреЛрдбрд╝ рджреЗрдВред

рдореИрдВрдиреЗ рдХреЗрд╡рд▓ рдХреБрдЫ рдЧрд▓рдд рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рд╣рд╡рд╛рд▓рд╛ рджрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдкрд░реЗ V6007 рдиреИрджрд╛рдирд┐рдХ тАЛтАЛрдЯреНрд░рд┐рдЧрд░ рдмрд╣реБрдд рдерд╛, рдЬрд┐рд╕реЗ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдмрдирд╛рддреЗ рд╣реБрдП рдПрдХ-рдПрдХ рдХрд░рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЫреЛрдЯреА рд╡рд┐рдзрд┐ рдПрдХ рд▓рдВрдмрд╛ рд░рд╛рд╕реНрддрд╛ рддрдп рдХрд░ рд╕рдХрддреА рд╣реИ


 private static byte char64(char x) { if ((int)x < 0 || (int)x > index_64.length) return -1; return index_64[(int)x]; } 

рддреЛ рдпрд╣рд╛рдБ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрдИ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рдПрдХ рдирдиреНрд╣рд╛-рдирдиреНрд╣реА рд╡рд┐рдзрд┐ рд╣реИред рд▓реЗрдХрд┐рди рдХреАрдбрд╝реЗ рдШрдбрд╝реА рдкрд░ рд╣реИрдВ! рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рдгрд╛рдо рджрд┐рдП:

  1. V6007 рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ '(int) x <0' рд╣рдореЗрд╢рд╛ рдЧрд▓рдд рд╣реИред BCrypt.java (429)
  2. V6025 рд╕рдВрднрд╡рддрдГ рд╕реВрдЪрдХрд╛рдВрдХ '(int) x' рд╕реАрдорд╛ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИред BCrypt.java (431)

рдЕрдВрдХ N резред рдПрдХреНрд╕рдкреНрд░реЗрд╢рди (int) x <0 рд╣рдореЗрд╢рд╛ рдЧрд▓рдд рд╣реЛрддрд╛ рд╣реИ (рд╣рд╛рдБ, V6007 рдлрд┐рд░ рд╕реЗ)ред X рдЪрд░ рдирдХрд╛рд░рд╛рддреНрдордХ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЪрд╛рд░ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реИред рдЪрд╛рд░ рдкреНрд░рдХрд╛рд░ рдПрдХ рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреВрд░реНрдгрд╛рдВрдХ рд╣реИред рдЗрд╕реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА, рдЪреЗрдХ рдмреЗрдорд╛рдиреА рд╣реИ рдФрд░ рдЗрд╕реЗ рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЕрдВрдХ N2 рд╕реАрдорд╛рдУрдВ рд╕реЗ рдмрд╛рд╣рд░ рд╕рдВрднрд╡ рд╕рд░рдгреА рд╕реВрдЪрдХрд╛рдВрдХ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк ArrayIndexOutOfBoundsException рдЕрдкрд╡рд╛рдж рд╣реИ ред рдлрд┐рд░ рдпрд╣ рдкреНрд░рд╢реНрди рдХреЛ рдЬрдиреНрдо рджреЗрддрд╛ рд╣реИ, рдЬреЛ рд╕рддрд╣ рдкрд░ рд╣реИ: "рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ, рд╕реВрдЪрдХрд╛рдВрдХ рдЬрд╛рдВрдЪ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕реЗ?"

рдЗрд╕рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 128 рддрддреНрд╡реЛрдВ рдХрд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЖрдХрд╛рд░ рдХрд╛ рд╕рд░рдгреА рд╣реИ:

 private static final byte index_64[] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 1, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, -1, -1, -1, -1, -1, -1, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, -1, -1, -1, -1, -1 }; 

рдЬрдм рдЪрд░ 64 рд╡рд┐рдзрд┐ x рдЪрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреА рд╣реИ, рддреЛ рд╕реВрдЪрдХрд╛рдВрдХ рд╡реИрдзрддрд╛ рдХреА рдЬрд╛рдБрдЪ рд╣реЛ рдЬрд╛рддреА рд╣реИред рджреЛрд╖ рдХрд╣рд╛рдБ рд╣реИ? рдХреНрдпреЛрдВ рд╕рд░рдгреА рд╕реВрдЪрдХрд╛рдВрдХ рд╕реАрдорд╛ рд╕реЗ рдмрд╛рд╣рд░ рдЕрднреА рднреА рд╕рдВрднрд╡ рд╣реИ?

рдЪреЗрдХ (int) x> index_64.length рдХрд╛рдлреА рд╕рд╣реА рдирд╣реАрдВ рд╣реИред рдпрджрд┐ char64 рд╡рд┐рдзрд┐ рдорд╛рди рдорд╛рди рдХреЗ рд╕рд╛рде x рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЪреЗрдХ ArrayIndexOutOfBoundsException рдХреЗ рд╡рд┐рд░реБрджреНрдз рд╕реБрд░рдХреНрд╖рд╛ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рд╢рд╛рдпрдж рд╣рдХреАрдХрдд рдореЗрдВ рдРрд╕рд╛ рдХрднреА рдирд╣реАрдВ рд╣реЛрддрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЪреЗрдХ рдХреЛ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдХрд┐рд╕реА рдХреЛ "рдСрдкрд░реЗрдЯрд░" (>) рд╕реЗ "рдЕрдзрд┐рдХ" рдпрд╛ (> =) рдХреЗ рдмрд░рд╛рдмрд░ рдпрд╛ рдЙрд╕рд╕реЗ рдЕрдзрд┐рдХ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ред

рддреБрд▓рдирд╛, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЕрдкрдирд╛ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛


V6013 рдирдВрдмрд░ 'рдбрд┐рд╕реНрдкреНрд▓реЗрд╕рд╛рдЗрдЬрд╝' рдФрд░ 'that.displaySize' рдХреА рддреБрд▓рдирд╛ рд╕рдВрджрд░реНрдн рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИред рд╕рдВрднрд╡рддрдГ рдПрдХ рд╕рдорд╛рдирддрд╛ рддреБрд▓рдирд╛ рдХрд╛ рдЗрд░рд╛рджрд╛ рдерд╛ред ColumnInfo.java (122)

 .... private final String table; private final String name; private final String esType; private final Integer displaySize; .... @Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } ColumnInfo that = (ColumnInfo) o; return displaySize == that.displaySize && // <= Objects.equals(table, that.table) && Objects.equals(name, that.name) && Objects.equals(esType, that.esType); } 

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

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

V6058 'рдмрд░рд╛рдмрд░' рдлрд╝рдВрдХреНрд╢рди рдЕрд╕рдВрдЧрдд рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рддрд╛ рд╣реИ: рдЗрдВрдЯреЗрдЧрд░, рдЯрд╛рдЗрдорд╡реИрд▓реНрдпреВред рдбреЗрдЯрд╛рдлреАрдбрдЕрдкрдбреЗрдЯред рдЬрд╛рд╡рд╛ (375)

 .... private final TimeValue queryDelay; private final TimeValue frequency; .... private final Integer scrollSize; .... boolean isNoop(DatafeedConfig datafeed) { return (frequency == null || Objects.equals(frequency, datafeed.getFrequency())) && (queryDelay == null || Objects.equals(queryDelay, datafeed.getQueryDelay())) && (scrollSize == null || Objects.equals(scrollSize, datafeed.getQueryDelay())) // <= && ....) } 

рдЧрд▓рдд рд╡рд╕реНрддреБрдПрдВ рдлрд┐рд░ рд╕реЗ рддреБрд▓рдирд╛ рдХрд░рддреА рд╣реИрдВред рдЗрд╕ рдмрд╛рд░ рдЕрд╕рдВрдЧрдд рдкреНрд░рдХрд╛рд░реЛрдВ рд╡рд╛рд▓реА рд╡рд╕реНрддреБрдУрдВ рдХреА рддреБрд▓рдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ ( Integer and TimeValue )ред рдЗрд╕ рддреБрд▓рдирд╛ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╕реНрдкрд╖реНрдЯ рд╣реИ, рдФрд░ рдпрд╣ рд╣рдореЗрд╢рд╛ рдЧрд▓рдд рд╣реИред рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╡рд░реНрдЧ рдХреЗ рдЦреЗрддреЛрдВ рдХреА рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ, рдХреЗрд╡рд▓ рдЦреЗрддреЛрдВ рдХреЗ рдирд╛рдо рдмрджрд▓рдиреЗ рдкрдбрд╝рддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рдмрд┐рдВрджреБ рд╣реИ - рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдиреЗ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдФрд░ рд╕реМрджреЗрдмрд╛рдЬреА рдореЗрдВ рдПрдХ рдмрдЧ рдорд┐рд▓рд╛ред рдХреНрд▓рд╛рд╕ рд╕реНрдХреНрд░реЙрд▓рд╕реНрд▓рд╛рдЗрдЬрд╝ рдлрд╝реАрд▓реНрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдЧреЗрдЯрд░ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рддреНрд░реБрдЯрд┐ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдХреЛ рдбреЗрдЯрд╛рдлрд╝реАрдб рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП .getScrollSize ()ред

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

V6001 рдмрд╛рдпреАрдВ рдФрд░ '==' рдСрдкрд░реЗрдЯрд░ рдХреЗ рджрд╛рдИрдВ рдУрд░ рд╕рдорд╛рди рдЙрдк-рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ 'takeInMillis' рд╣реИрдВред рдЯрд░реНрдорд╡реЗрдХреНрдЯрд░реНрд╕рдкреНрд░рд┐рдВрд╕.рдЬрд╛рд╡рд╛ (152)

 @Override public boolean equals(Object obj) { .... return index.equals(other.index) && type.equals(other.type) && Objects.equals(id, other.id) && docVersion == other.docVersion && found == other.found && tookInMillis == tookInMillis // <= && Objects.equals(termVectorList, other.termVectorList); } 

V6009 рдлрд╝рдВрдХреНрд╢рди 'рдмрд░рд╛рдмрд░' рдПрдХ рд╡рд┐рд╖рдо рддрд░реНрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ 'shardId.getIndexName ()' рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА рдкрджреНрдзрддрд┐ рдХреЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕реНрдиреИрдкрд╢реЙрдЯрд╢реЗрдпрд░рдлреЗрд▓.рдЬрд╡рд╛ (208)

 @Override public boolean equals(Object o) { .... return shardId.id() == that.shardId.id() && shardId.getIndexName().equals(shardId.getIndexName()) && // <= Objects.equals(reason, that.reason) && Objects.equals(nodeId, that.nodeId) && status.getStatus() == that.status.getStatus(); } 

рд╡рд┐рд╡рд┐рдз


V6006 рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред 'рдереНрд░реЛ' рдХреАрд╡рд░реНрдб рдЧрд╛рдпрдм рд╣реЛ рд╕рдХрддрд╛ рд╣реИред JdbcConnection.java (88)

 @Override public void setAutoCommit(boolean autoCommit) throws SQLException { checkOpen(); if (!autoCommit) { new SQLFeatureNotSupportedException(....); } } 

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

V6003 'if (A) {....} рдХрд╛ рдЙрдкрдпреЛрдЧ if (A) {....}' рдкреИрдЯрд░реНрди рдХрд╛ рдкрддрд╛ рдЪрд▓рд╛ред рддрд╛рд░реНрдХрд┐рдХ рддреНрд░реБрдЯрд┐ рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред MockScriptEngine.java (94), MockScriptEngine.java (105)

 @Override public <T> T compile(....) { .... if (context.instanceClazz.equals(FieldScript.class)) { .... } else if (context.instanceClazz.equals(FieldScript.class)) { .... } else if(context.instanceClazz.equals(TermsSetQueryScript.class)) { .... } else if (context.instanceClazz.equals(NumberSortScript.class)) .... } 

рдПрдХрд╛рдзрд┐рдХ рдореЗрдВ рдпрджрд┐- рдФрд░ рдХрд┐рд╕реА рдПрдХ рд╕реНрдерд┐рддрд┐ рдХреЛ рджреЛ рдмрд╛рд░ рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рдХреНрд╖рдо рдХреЛрдб рд╕рдореАрдХреНрд╖рд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

V6039 рд╕рдорд╛рди рд╕рд╢рд░реНрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рджреЛ 'рдпрджрд┐' рдХрдерди рд╣реИрдВред рдкрд╣рд▓реЗ 'if' рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдореЗрдВ рдореЗрдердб рд░рд┐рдЯрд░реНрди рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рджреВрд╕рд░рд╛ 'рдЕрдЧрд░' рдХрдерди рд╕рдВрд╡реЗрджрдирд╣реАрди рд╣реИред SearchAfterBuilder.java (94), SearchAfterBuilder.java (93)

 public SearchAfterBuilder setSortValues(Object[] values) { .... for (int i = 0; i < values.length; i++) { if (values[i] == null) continue; if (values[i] instanceof String) continue; if (values[i] instanceof Text) continue; if (values[i] instanceof Long) continue; if (values[i] instanceof Integer) continue; if (values[i] instanceof Short) continue; if (values[i] instanceof Byte) continue; if (values[i] instanceof Double) continue; if (values[i] instanceof Float) continue; if (values[i] instanceof Boolean) continue; // <= if (values[i] instanceof Boolean) continue; // <= throw new IllegalArgumentException(....); } .... } 

рдПрдХ рд╣реА рд╕реНрдерд┐рддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрдВрдХреНрддрд┐ рдореЗрдВ рджреЛ рдмрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреНрдпрд╛ рдмреВрд▓рд┐рдпрди рдХреЗ рдмрдЬрд╛рдп рджреВрд╕рд░реА рд╕реНрдерд┐рддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реИ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?

V6009 рдлрд╝рдВрдХреНрд╢рди 'рд╕рдмрд╕реНрдЯреНрд░рд┐рдВрдЧ' рдПрдХ рд╡рд┐рд╖рдо рддрд░реНрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред 'QueryStringIndex + 1' рддрд░реНрдХ 'queryStringLength' рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЙрдЧрд┐рдВрдЧрдСрдбрд┐рдЯрдЯреНрд░рд┐рд▓.рдЬрд╛рд╡рд╛ (660)

 LogEntryBuilder withRestUriAndMethod(RestRequest request) { final int queryStringIndex = request.uri().indexOf('?'); int queryStringLength = request.uri().indexOf('#'); if (queryStringLength < 0) { queryStringLength = request.uri().length(); } if (queryStringIndex < 0) { logEntry.with(....); } else { logEntry.with(....); } if (queryStringIndex > -1) { logEntry.with(...., request.uri().substring(queryStringIndex + 1,// <= queryStringLength)); // <= } .... } 

рдЖрдЗрдП рдпрд╣рд╛рдВ рдкрд░ рдЧрд▓рдд рдкрд░рд┐рджреГрд╢реНрдп рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬрд┐рд╕рд╕реЗ рдЕрдкрд╡рд╛рдж StringIndexOutOfBoundsException рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЕрдкрд╡рд╛рдж рддрдм рд╣реЛрдЧрд╛ рдЬрдм request.uri () рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╡рд░реНрдг '#' рд╕реЗ рдкрд╣рд▓реЗ '?' рд╣реЛрддрд╛ рд╣реИред рд╡рд┐рдзрд┐ рдореЗрдВ рдХреЛрдИ рдЬрд╛рдВрдЪ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдкрд░реЗрд╢рд╛рдиреА рдмрдврд╝ рдЬрд╛рддреА рд╣реИред рд╢рд╛рдпрдж, рд╡рд┐рдзрд┐ рдХреЗ рдмрд╛рд╣рд░ рд╡рд╕реНрддреБ рдХреА рд╡рд┐рднрд┐рдиреНрди рдЬрд╛рдВрдЪреЛрдВ рдХреЗ рдХрд╛рд░рдг рдРрд╕рд╛ рдХрднреА рдирд╣реАрдВ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЗрд╕ рдкрд░ рдЖрд╢рд╛рдПрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╣реИред

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


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

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

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


All Articles