рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рд╕рд╛рддрд╡реЗрдВ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рд╣рдордиреЗ рдЬрд╛рд╡рд╛ рднрд╛рд╖рд╛ рдХрд╛ рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рд╛ред рдпрд╣ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдХрд╣рд╛рдиреА рдХреЗ рд▓рд┐рдП рд╕рдордп рд╣реИ рдХрд┐ рд╣рдордиреЗ рдЬрд╛рд╡рд╛ рднрд╛рд╖рд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХреИрд╕реЗ рд╢реБрд░реВ рдХрд┐рдпрд╛ рд╣реИ, рд╣рдо рдХрд┐рддрдиреА рджреВрд░ рдЖрдП рд╣реИрдВ рдФрд░ рд╣рдорд╛рд░реА рдЖрдЧреЗ рдХреА рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдХреНрдпрд╛ рд╣реИред рдмреЗрд╢рдХ, рдпрд╣ рд▓реЗрдЦ рдЦреБрд▓реЗ рд╕реНрд░реЛрдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдкрд░ рдкрд╣рд▓реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рд╕реВрдЪреА рджреЗрдЧрд╛ред
рдкреА рд╡реА рдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ
рдпрд╣рд╛рдВ рдЬрд╛рд╡рд╛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдкрд╣рд▓реЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реБрдирд╛ рд╣реИред
рдпрд╣ рдЙрдкрдХрд░рдг C, C ++, C #, рдФрд░ Java рдореЗрдВ рд▓рд┐рдЦреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд╕реЛрд░реНрд╕ рдХреЛрдб рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рд╡рд┐рдВрдбреЛрдЬ, рд▓рд┐рдирдХреНрд╕ рдФрд░ рдореИрдХрдУрдПрд╕ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
PVS-Studio рд╕реНрдереИрддрд┐рдХ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рдмрдирд╛рддрд╛ рд╣реИ рдЬреЛ рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рджреЛрд╖ рдЦреЛрдЬрдиреЗ рдФрд░ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдареАрдХ-рдареАрдХ рдЦреЛрдЬ рдХрд░рддреЗ рд╣реИрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ "
рдмрдЧреНрд╕ рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рддрдХрдиреАрдХ " рд▓реЗрдЦ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рд╣реИред
рд╢реБрд░реВ
рдореИрдВ рдПрдХ рдЪрддреБрд░ рдХрд╣рд╛рдиреА рдХреЗ рд╕рд╛рде рдЖ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдЕрдЧрд▓реА рднрд╛рд╖рд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕реЗ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд░рд╣реЗ рд╣реИрдВред рдЬрд╛рд╡рд╛ рдХреА рд╕рдордЭрджрд╛рд░ рдкрд╕рдВрдж рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдЬреЛ рдЗрд╕ рднрд╛рд╖рд╛ рдХреА рдЙрдЪреНрдЪ рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдФрд░ рдЗрд╕реА рддрд░рд╣ред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдЬреАрд╡рди рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ, рдЪреБрдирд╛рд╡ рдЧрд╣рди рд╡рд┐рд╢реНрд▓реЗрд╖рдг рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдПрдХ рдкреНрд░рдпреЛрдЧ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ :)ред рд╣рд╛рдВ, рд╣рдордиреЗ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреА рджрд┐рд╢рд╛ рдХреЛ рдФрд░ рдЖрдЧреЗ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рд╣реИред рд╣рдордиреЗ рдРрд╕реА рднрд╛рд╖рд╛рдУрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛, рдЬреИрд╕реЗ: рдЬрд╛рд╡рд╛, рдкреАрдПрдЪрдкреА, рдкрд╛рдпрдерди, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рдЖрдИрдмреАрдПрдо рдЖрд░рдкреАрдЬреАред рд╣рдо рдЬрд╛рд╡рд╛ рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рднреА рдЗрдЪреНрдЫреБрдХ рдереЗ рд▓реЗрдХрд┐рди рдЕрдВрддрд┐рдо рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд┐рдирдХреА рдирдЬрд╝рд░ рдЕрдкрд░рд┐рдЪрд┐рдд рдЖрдИрдмреАрдПрдо рдЖрд░рдкреАрдЬреА рдкрд░ рдЯрд┐рдХреА рд╣реБрдИ рд╣реИ, рдореИрдВ рдЖрдкрдХреЛ рдЗрд╕
рдиреЛрдЯ рдкрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЬрд╣рд╛рдВ рд╕реЗ рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
2017 рдХреЗ рдЕрдВрдд рдореЗрдВ, рдореЗрд░реЗ рд╕рд╣рдпреЛрдЧреА рдИрдЧреЛрд░ рдмреНрд░реЗрдбрд┐рдХрд┐рди рдиреЗ рдирдП рд╡рд┐рдХрд╛рд╕ рджрд┐рд╢рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЛрдб (рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ - рдкрд╛рд░реНрд╕рд░) рдХреА рдСрдл-рдж-рд╢реЗрд▓реНрдл рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХреА, рдЬреЛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред рдЖрдЦрд┐рд░рдХрд╛рд░, рдЙрдиреНрд╣реЗрдВ рдЬрд╛рд╡рд╛ рдХреЛрдб рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдЖрдПред рд╡рд╣ рдЬрд▓реНрджреА рд╕реЗ
рдЪрдореНрдордЪ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдирд┐рджрд╛рди рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдмрдирд╛рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЬрд╛рд╡рд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдореЗрдВ
SW ++ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ C ++ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рдХреБрдЫ рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗред рд╣рдордиреЗ рджреЗрдЦрд╛ рдХрд┐ рд╣рдореЗрдВ рдХреНрдпрд╛ рдорд┐рд▓рд╛ рдФрд░ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдХрд┐ рд╣рдорд╛рд░рд╛ рдЕрдЧрд▓рд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЬрд╛рд╡рд╛ рдХреЗ рд▓рд┐рдП рд╣реЛрдЧрд╛ред
рд╣рдо рдИрдЧреЛрд░ рдХреЛ рдЙрд╕рдХреЗ рдЙрдкрдХреНрд░рдо рдФрд░ рдХрдбрд╝реА рдореЗрд╣рдирдд рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рджреЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ рдЙрд╕рдиреЗ рдЬрд╛рд╡рд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдкрд░ рдХрд┐рдпрд╛ рд╣реИред рд╡рд┐рдХрд╛рд╕ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЙрдирдХреЗ рджреНрд╡рд╛рд░рд╛ "
рдПрдХ рдирдП рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХрд╛ рд╡рд┐рдХрд╛рд╕: рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЬрд╛рд╡рд╛ " рд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдкреНрд░рддрд┐рдпреЛрдЧрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?
рджреБрдирд┐рдпрд╛ рднрд░ рдореЗрдВ рдЬрд╛рд╡рд╛ рдХреЗ рд▓рд┐рдП рдХрдИ рд╕реНрд╡рддрдВрддреНрд░ рдФрд░ рд╡рд╛рдгрд┐рдЬреНрдпрд┐рдХ рд╕реНрдерд┐рд░ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╣реИрдВред рдЙрди рд╕рднреА рдХреЛ рд▓реЗрдЦ рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред рдореИрдВ "
рд╕реНрдерд┐рд░ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдгреЛрдВ рдХреА рд╕реВрдЪреА " (рдЬрд╛рд╡рд╛ рдФрд░ рдмрд╣реБ-рднрд╛рд╖рд╛ рдЕрдиреБрднрд╛рдЧ рджреЗрдЦреЗрдВ) рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рдЫреЛрдбрд╝ рджреВрдБрдЧрд╛ред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдФрд░ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рд╣рдореЗрдВ IntelliJ IDEA, FindBugs рдФрд░ SonarQube (рд╕реЛрдирд╛рд░рдЬрд╡рд╛) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреВрдЫрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЗрдВрдЯреЗрд▓реАрдЬ рдЖрдИрдбрд┐рдпрд╛рдПрдХ рдмрд╣реБрдд рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╕реНрдереИрддрд┐рдХ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдХ IntelliJ IDEA рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХреНрдпрд╛ рдЕрдзрд┐рдХ рд╣реИ, рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓реЗрдЦрдХ рд╣рдорд╛рд░реА рдЧрддрд┐рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдмрд╛рд░реАрдХреА рд╕реЗ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, IntelliJ IDEA рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдПрдХ рдХрдард┐рди рдХреБрдХреА рд╣реИред рд╣рдо рдХрдо рд╕реЗ рдХрдо рдЕрднреА рдХреЗ рд▓рд┐рдП, рдиреИрджрд╛рдирд┐рдХ тАЛтАЛрдХреНрд╖рдорддрд╛рдУрдВ рдореЗрдВ IntelliJ IDEA рдХреЛ рдкрд╛рд░ рдирд╣реАрдВ рдХрд░ рдкрд╛рдПрдВрдЧреЗред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЕрдкрдиреЗ рдЕрдиреНрдп рд▓рд╛рднреЛрдВ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдВрдЧреЗред
рдЗрдВрдЯреЗрд▓реАрдЬ рдЖрдИрдбреАрдИрдП рдореЗрдВ рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ, рдЬреЛ рдЗрд╕ рдкрд░ рдХреБрдЫ рд╕реАрдорд╛рдПрдВ рд▓рдЧрд╛рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣рдорд╛рд░реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рд╕рд╛рде рд╣рдо рдХреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рдореЗрдВ рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдЗрд╕реЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЧреНрд░рд╛рд╣рдХ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЬрд▓реНрджреА рд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рддреЗрдЬреА рд╕реЗ рдФрд░ рдЧрд╣рд░рд╛ рд╕рдорд░реНрдерди рд╣рдорд╛рд░реЗ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рд▓рд╛рдн рд╣реИред рд╣рдорд╛рд░реЗ рдЧреНрд░рд╛рд╣рдХ рд╕реАрдзреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░рддреЗ рд╣реИрдВ, рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рдПрдХ рдпрд╛ рджреВрд╕рд░реЗ рд╣рд┐рд╕реНрд╕реЗ рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ, рдмрдбрд╝реА рдкреБрд░рд╛рдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдПрдХ рдЪрдХреНрд░ рдореЗрдВ рдЗрд╕реЗ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рдХрдИ рдЕрд╡рд╕рд░ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣
рд╕реЛрдирд╛рд░рдХреНрдпреВрдм рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░рд╛
рдПрдХреАрдХрд░рдг рд╣реИ ред рдЗрд╕рдореЗрдВ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХрд╛
рд╕рд╛рдореВрд╣рд┐рдХ рджрдорди рднреА рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдирдП рдпрд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХреЛрдб рдореЗрдВ рдмрдЧ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдПрдХ рд╕рддрдд рдПрдХреАрдХрд░рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ
рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпреЗ рдФрд░ рдЕрдиреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣рдорд╛рд░реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЛ рдЬрд╛рд╡рд╛ рджреБрдирд┐рдпрд╛ рдореЗрдВ рд╕реВрд░реНрдп рдХреЗ рдиреАрдЪреЗ рдПрдХ рдЬрдЧрд╣ рдЦреЛрдЬрдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдВрдЧреАред
FindBugsFindBugs рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдлрд┐рд░ рднреА, рд╣рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╕реЗ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐, рд╢рд╛рдпрдж, рдпрд╣ рдЬрд╛рд╡рд╛ рдХреЛрдб рдХрд╛ рд╕рдмрд╕реЗ рдкреНрд░рд╕рд┐рджреНрдз рдореБрдХреНрдд рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╣реИред
рд╕реНрдкреЙрдЯрдмрдЧреНрд╕ рдХреЛ
рдлрд╛рдЗрдВрдбрдмрдЧреНрд╕ рдХрд╛ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░реА рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдХрдо рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИ, рдФрд░ рдпрд╣ рдЕрднреА рддрдХ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рд╣реЛрдЧрд╛ред
рдЖрдо рддреМрд░ рдкрд░, рд╣рдо рд╕реЛрдЪрддреЗ рд╣реИрдВ рдХрд┐ рднрд▓реЗ рд╣реА рдлрд╛рдЗрдВрдбрдмрдЧреНрд╕ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЕрднреА рднреА рдмреЗрд╣рдж рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдПрдХ рдореБрдлреНрдд рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдореЗрдВ рдЙрд╕ рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрд╕ рдЪреБрдкрдЪрд╛рдк рдПрдХ рдЗрддрд┐рд╣рд╛рд╕ рдмрди рдЬрд╛рдПрдЧреАред
PS рд╡реИрд╕реЗ, рдЕрдм рдЦреБрд▓реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо
рдХрд░рдиреЗ рдкрд░ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЛ
рдореБрдлреНрдд рдореЗрдВ рднреА
рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ ред
рд╕реЛрдирд╛рд░рдХреНрдпреВрдм (рд╕реЛрдирд░рд╛рдЬрд╡рд╛)рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рд╕реЛрдирд╛рд░рдХреНрдпреВрдм рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдкреВрд░рдХ рд╣реИрдВред рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реЛрдирд╛рд░рдХреНрдпреВрдм рдореЗрдВ рдПрдХреАрдХреГрдд рд╣реИ, рдЬреЛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЕрдзрд┐рдХ рдмрдЧ рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рд╕реБрд░рдХреНрд╖рд╛ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╣рдо рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдорд╛рд╕реНрдЯрд░ рд╡рд░реНрдЧреЛрдВ рдкрд░ рд╕реЛрдирд╛рд░рдХреНрдпреВрдм рдореЗрдВ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЯреВрд▓ рдФрд░ рдЕрдиреНрдп рд╡рд┐рд╢реНрд▓реЗрд╖рдгрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдмрддрд╛рддреЗ рд╣реИрдВ рдЬреЛ рд╣рдо рд╡рд┐рднрд┐рдиреНрди рд╕рдореНрдореЗрд▓рдиреЛрдВ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВред
рдЬрд╛рд╡рд╛ рдХреЗ рд▓рд┐рдП рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреИрд╕реЗ рдЪрд▓рд╛рдПрдВ
рд╣рдордиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдПрдХреАрдХрд░рдг рдХреЗ рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рддрд░реАрдХреЗ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдП:
- рдорд╛рд╡реЗрди рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧрдЗрди;
- рдЧреНрд░реИрдбрд▓ рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧрд┐рди;
- IntelliJ рдЖрдИрдбрд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧрдЗрди
рдкрд░реАрдХреНрд╖рдг рдХреЗ рдЪрд░рдг рдХреЗ рджреМрд░рд╛рди, рд╣рдо рдРрд╕реЗ рдХрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рд╕реЗ рдорд┐рд▓реЗ, рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рд╕реНрд╡-рд▓рд┐рдЦрд┐рдд рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рд╣реИрдВ, рдЦрд╛рд╕рдХрд░ рдореЛрдмрд╛рдЗрд▓ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВред рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕реВрддреНрд░реЛрдВ рдФрд░ рдХреНрд▓рд╛рд╕рдкреИрде рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддреЗ рд╣реБрдП, рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЛ рд╕реАрдзреЗ рдЪрд▓рд╛рдиреЗ рдХрд╛ рдореМрдХрд╛ рджрд┐рдпрд╛ред
рдЖрдк рдкреНрд░рд▓реЗрдЦрди рдкреГрд╖реНрда "
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЬрд╛рд╡рд╛ рдХреИрд╕реЗ рдЪрд▓рд╛рдПрдВ " рдкрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд╕рднреА рддрд░реАрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╕реНрддреГрдд рдЬрд╛рдирдХрд╛рд░реА рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рд╣рдо рдХреЛрдб рдЧреБрдгрд╡рддреНрддрд╛ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ
рд╕реЛрдирд╛рд░рдХреНрдпреВрдм рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╕реЗ рджреВрд░ рдирд╣реАрдВ рднрд╛рдЧ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЬрд╛рд╡рд╛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдмреАрдЪ рдмрд╣реБрдд рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ
рд╕реЛрдирд╛рд░рдХреНрдпреВрдм рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ
рдкреНрд▓рдЧрдЗрди рдореЗрдВ рдЬрд╛рд╡рд╛ рднрд╛рд╖рд╛ рдХрд╛ рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рд╛ред
рдЖрдЧреЗ рдХреА рдпреЛрдЬрдирд╛
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╡рд┐рдЪрд╛рд░ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдЧреЗ рдХреА рдЬрд╛рдВрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ рд╡рд┐рд╢реЗрд╖ рдпреЛрдЬрдирд╛рдПрдВ, рдЬреЛ рд╣рдорд╛рд░реЗ рдХрд┐рд╕реА рднреА рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рд▓рд┐рдП рдирд┐рд╣рд┐рдд рд╣реИрдВ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ:
- рдирдП рдирд┐рджрд╛рди рдФрд░ рдореМрдЬреВрджрд╛ рд▓реЛрдЧреЛрдВ рдХреЗ рд╕реБрдзрд╛рд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг;
- рдбреЗрдЯрд╛рдлреНрд▓реЛ-рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд╛ рд╕реБрдзрд╛рд░;
- рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдФрд░ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреА рд╡реГрджреНрдзрд┐ред
рд╢рд╛рдпрдж, рд╣рдореЗрдВ CLION рдХреЗ рд▓рд┐рдП IntelliJ IDEA рдкреНрд▓рдЧрдЗрди рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдорд┐рд▓ рдЬрд╛рдПрдЧрд╛ред рдЬрд╛рд╡рд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝рдиреЗ рд╡рд╛рд▓реЗ C ++ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП :-) :-)
рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдореЗрдВ рдорд┐рд▓реА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдг
рдпрджрд┐ рдореИрдВ рд▓реЗрдЦ рдореЗрдВ рдирд╣реАрдВ рджрд┐рдЦрд╛ рд░рд╣рд╛ рд╣реВрдВ рддреЛ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдирдП рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рд╕рд╛рде рдкрд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдореЗрд░реЗ рд╕рдордп рдХреЛ рдХрдВрдкрдХрдВрдкреА рджреЗрдВ! рдЦреИрд░, рд╣рдо рдПрдХ рдмрдбрд╝рд╛ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдЬрд╛рд╡рд╛-рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд▓реЗ рд╕рдХрддреЗ рдереЗ рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рдХреНрд▓рд╛рд╕рд┐рдХ рд▓реЗрдЦ рд▓рд┐рдЦ рд╕рдХрддреЗ рдереЗ, рдЬреИрд╕рд╛ рдХрд┐
рд╣рдо рдЖрдорддреМрд░ рдкрд░ рдХрд░рддреЗ рд╣реИрдВ ред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореИрдВ рддреБрд░рдВрдд рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдо рдЗрдВрдЯреЗрд▓реАрдЬреЗ рдЖрдИрдбреАрдИрдП, рдлрд╛рдЗрдВрдбрдмрдЧреНрд╕ рдФрд░ рдЗрддрдиреЗ рдкрд░ рдЬреИрд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдХреНрдпрд╛ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП рдореЗрд░реЗ рдкрд╛рд╕ рдЕрднреА рдХреЛрдИ рд░рд╛рд╕реНрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрдд рдХреЗ рдЕрд▓рд╛рд╡рд╛ред рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рд╕реЗ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдХрдИ рджрд┐рд▓рдЪрд╕реНрдк рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рджреЗрдЦрдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛:
- рдЗрдВрдЯреЗрд▓реАрдЬ рдЖрдИрдбрд┐рдпрд╛ рдХрдореНрдпреБрдирд┐рдЯреА рдПрдбрд┐рд╢рди ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдордЭрд╛рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдХреНрдпреЛрдВ рдЪреБрдирд╛ рдЧрдпрд╛ :)ред
- SpotBugs ред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд▓рд┐рдЦрд╛ рдерд╛, рдлрд╛рдЗрдВрдбрдмрдЧреНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреНрд░рдЧрддрд┐ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред рддреЛ рдЖрдЗрдП рд╕реНрдкреЙрдЯрдмрдЧреНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдЕрдВрджрд░ рджреЗрдЦреЗрдВ, рдЬреЛ рдлрд╛рдЗрдВрдбрдмрдЧреНрд╕ рдХрд╛ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░реА рд╣реИред рд╕реНрдкреЙрдЯрдмрдЧреНрд╕ рдЬрд╛рд╡рд╛ рдХреЛрдб рдХрд╛ рдПрдХ рдХреНрд▓рд╛рд╕рд┐рдХ рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╣реИред
- рд╕реЛрдирд╛рд░рд╕реЛрд░реНрд╕ рдХрдВрдкрдиреА рдХреА рдХреБрдЫ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ, рдЬреЛ рдХреЛрдб рдЧреБрдгрд╡рддреНрддрд╛ рдХреА рдирд┐рд░рдВрддрд░ рдирд┐рдЧрд░рд╛рдиреА рдХреЗ рд▓рд┐рдП рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреА рд╣реИрдВред рдЕрдм рд╕реЛрдирд╛рд░рдХреНрдпреВрдм рдФрд░ рд╕реЛрдирд╛рд░рдЬрд╡рд╛ рдХреЗ рдЕрдВрджрд░ рджреЗрдЦреЗрдВ ред
рдЗрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдХреАрдбрд╝реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрдирд╛ рдПрдХ рдЪреБрдиреМрддреА рд╣реИред рдЗрд╕ рддрдереНрдп рдХрд╛ рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдпреЗ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рдмрд╣реБрдд рдЙрдЪреНрдЪ рдЧреБрдгрд╡рддреНрддрд╛ рдХреА рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдЖрд╢реНрдЪрд░реНрдп рдХреА рдмрд╛рдд рдирд╣реАрдВ рд╣реИред рд╣рдорд╛рд░реА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд╕реНрдерд┐рд░ рдХреЛрдб рдПрдирд╛рд▓рд╛рдЗрдЬрд╝рд░ рд╣рдореЗрд╢рд╛ рдЕрдиреНрдп рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдФрд░ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрди рд╕рдмрдХреЗ рдмрд╛рд╡рдЬреВрдж, рдореБрдЭреЗ рдЗрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрдд рдХрд░рдиреА рд╣реЛрдЧреАред рдореЗрд░реЗ рдкрд╛рд╕ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдХрд╛ рджреВрд╕рд░рд╛ рдореМрдХрд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЬрд╛рд╡рд╛ рдХреЗ рд▓рд┐рдП рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЬрд╛рд░реА рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╕реВрдЪреАрдмрджреНрдз рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЛ рдмреЛрд░реНрдб рдкрд░ рд▓реЗ рдЬрд╛рдПрдВрдЧреЗ рдФрд░ рдирд┐рдпрдорд┐рдд рдпрд╛ рдХрдо рд╕реЗ рдХрдо, рдЙрдирдХреЗ рдХреЛрдб рдХреА рдХрднреА-рдХрднрд╛рд░ рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдВрдЧреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐
рдЯреИрдЧрдмреА рд╡рд▓реЗрд╡ (
lany ), JetBrains рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдореЗрдВ рд╕реЗ рдПрдХ,
рдЗрдВрдЯреЗрд▓реАрдЬ рдЖрдИрдбреАрдИрдП рд╕реНрдЯреЗрдЯрд┐рдХ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЗрд╕ рд╕рдордп, рдЬрдм рдореИрдВ рд▓реЗрдЦ рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдВ рддреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рдмреАрдЯрд╛ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдЦреЗрд▓ рд░рд╣рд╛ рд╣реИ ред рдЙрдиреНрд╣реЛрдВрдиреЗ рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ рдФрд░ рд╕рд┐рдлрд╛рд░рд┐рд╢реЛрдВ рдХреЗ рд╕рд╛рде рд╣рдореЗрдВ рд▓рдЧрднрдЧ 15 рдИ-рдореЗрд▓ рд▓рд┐рдЦреЗред рдзрдиреНрдпрд╡рд╛рдж, рдЯреИрдЧрд┐рд░!
рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдореБрдЭреЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХрдИ рдмрдЧ рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдлрд┐рд▓рд╣рд╛рд▓ рдореЗрд░рд╛ рдХрд╛рдо рдпрд╣ рджрд┐рдЦрд╛рдирд╛ рд╣реИ рдХрд┐ рдЬрд╛рд╡рд╛ рдХреЗ рд▓рд┐рдП рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╡реНрдпрд░реНрде рдирд╣реАрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдП, рдФрд░ рдХреЛрдб рдЧреБрдгрд╡рддреНрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рдЕрдиреНрдп рдЙрдкрдХрд░рдгреЛрдВ рдХреА рдПрдХ рдкрдВрдХреНрддрд┐ рдХреЛ рднрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗред рдореИрдВрдиреЗ рдЕрднреА-рдЕрднреА рдПрдирд╛рд▓рд╛рдЗрдЬрд╝рд░ рд░рд┐рдкреЛрд░реНрдЯреНрд╕ рдХреЛ рджреЗрдЦрд╛ рдФрд░ рдХреБрдЫ рдЧрд▓рддрд┐рдпрд╛рдБ рд╕реВрдЪреАрдмрджреНрдз рдХреАрдВ рдЬреЛ рджрд┐рд▓рдЪрд╕реНрдк рд▓рдЧреАрдВред рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ, рддреЛ рдореИрдВрдиреЗ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рд╣рд╡рд╛рд▓рд╛ рджреЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдирд┐рдХрд▓рд╛ред
рдЗрдВрдЯреЗрд▓реАрдЬ рдЖрдИрдбрд┐рдпрд╛, рдЗрдВрдЯреЗрдЧрд░ рдбрд┐рд╡реАрдЬрди
private static boolean checkSentenceCapitalization(@NotNull String value) { List<String> words = StringUtil.split(value, " "); .... int capitalized = 1; .... return capitalized / words.size() < 0.2;
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V6011 [CWE-682] 'рдбрдмрд▓' рдкреНрд░рдХрд╛рд░ рдХреЗ '0.2' рд╢рд╛рдмреНрджрд┐рдХ рдХреА рддреБрд▓рдирд╛ 'int' рдкреНрд░рдХрд╛рд░ рдХреЗ рдорд╛рди рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИред рдЯрд╛рдЗрдЯрд▓рдХреИрдкрд┐рдЯрд▓рд╛рдЗрдЬрд╝реЗрд╢рдирдЗрдиреНрд╕реНрдкреЗрдХреНрд╢рди.рдЬрд╛рд╡рд╛ 169
рдореБрджреНрджрд╛ рдпрд╣ рдерд╛ рдХрд┐ рдпрджрд┐ 20% рд╕реЗ рдХрдо рд╢рдмреНрдж рдХреИрдкрд┐рдЯрд▓ рд▓реЗрдЯрд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВ рддреЛ рдлрдВрдХреНрд╢рди рд╕рд╣реА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рджрд░рдЕрд╕рд▓, рдЪреЗрдХ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреВрд░реНрдгрд╛рдВрдХ рд╡рд┐рднрд╛рдЬрди рд╣реЛрддрд╛ рд╣реИред рд╡рд┐рднрд╛рдЬрди рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╣рдо рдХреЗрд╡рд▓ рджреЛ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: 0 рдпрд╛ 1ред
рдлрд╝рдВрдХреНрд╢рди рдЧрд▓рдд рд╣реЛрдЧрд╛, рдХреЗрд╡рд▓ рддрднреА рдЬрдм рд╕рднреА рд╢рдмреНрдж рдмрдбрд╝реЗ рдЕрдХреНрд╖рд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдВред рдЕрдиреНрдп рд╕рднреА рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдбрд┐рд╡реАрдЬрди рдСрдкрд░реЗрд╢рди рдХрд╛ рдкрд░рд┐рдгрд╛рдо 0 рд╣реЛрдЧрд╛ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рд╕рд╣реА рд▓реМрдЯреЗрдЧрд╛ред
рдЗрдВрдЯреЗрд▓реАрдЬ рдЖрдИрдбреАрдИрдП, рд╕рдВрджрд┐рдЧреНрдз рд▓реВрдк
public int findPreviousIndex(int current) { int count = myPainter.getErrorStripeCount(); int foundIndex = -1; int foundLayer = 0; if (0 <= current && current < count) { current--; for (int index = count - 1; index >= 0; index++) {
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪреЗрддрд╛рд╡рдиреА: V6007 [CWE-571] рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ 'рд╕реВрдЪрдХрд╛рдВрдХ> = 0' рд╣рдореЗрд╢рд╛ рд╕рдЪ рд╣реЛрддрд╛ рд╣реИред рдЕрдкрдбреЗрдЯрд░.рдЬрд╛рд╡рд╛ 184
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╕реНрдерд┐рддрд┐ рдХреЛ рджреЗрдЦреЗрдВ
(0 <= current && current <count) ред рдЗрд╕реЗ рдХреЗрд╡рд▓ рддрднреА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм
рдЧрдгрдирд╛ рдЪрд░ рдорд╛рди 0 рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛред
рдЕрдм рд▓реВрдк рдХреЛ рджреЗрдЦреЗрдВ:
for (int index = count - 1; index >= 0; index++)
рд╡реИрд░рд┐рдПрдмрд▓
рдЗрдВрдбреЗрдХреНрд╕ рдХреА рд╢реБрд░реБрдЖрдд рдПрдХ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди
рдХрд╛рдЙрдВрдЯ - 1 рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИ ред рдЬреИрд╕рд╛ рдХрд┐
рдЧрдгрдирд╛ рдЪрд░ 0 рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ,
рд╕реВрдЪрдХрд╛рдВрдХ рдЪрд░ рдХрд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдореВрд▓реНрдп рд╣рдореЗрд╢рд╛ 0. рд╕реЗ рдЕрдзрд┐рдХ рдпрд╛ рдмрд░рд╛рдмрд░ рд╣реЛрдЧрд╛ред рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐
рд╕реВрдЪрдХрд╛рдВрдХ рдЪрд░ рдХреЗ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рд╣реЛрдиреЗ рддрдХ рд▓реВрдк рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдЯрд╛рдЗрдкреЛ рд╣реИ, рдФрд░ рдПрдХ рдХреНрд╖рд░рдг, рдПрдХ рдЪрд░ рдХреА рд╡реГрджреНрдзрд┐ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИ:
for (int index = count - 1; index >= 0; index--)
рдЗрдВрдЯреЗрд▓реАрдЬ рдЖрдИрдбрд┐рдпрд╛, рдХреЙрдкреА-рдкреЗрд╕реНрдЯ
@NonNls public static final String BEFORE_STR_OLD = "before:"; @NonNls public static final String AFTER_STR_OLD = "after:"; private static boolean isBeforeOrAfterKeyword(String str, boolean trimKeyword) { return (trimKeyword ? LoadingOrder.BEFORE_STR.trim() : LoadingOrder.BEFORE_STR).equalsIgnoreCase(str) || (trimKeyword ? LoadingOrder.AFTER_STR.trim() : LoadingOrder.AFTER_STR).equalsIgnoreCase(str) || LoadingOrder.BEFORE_STR_OLD.equalsIgnoreCase(str) ||
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪреЗрддрд╛рд╡рдиреА: V6001 [CWE-570] рд╕рдорд╛рди рдЙрдк-рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ рд╣реИрдВ 'рд▓реЛрдб рд╣реЛ рд░рд╣реЗ рд╣реИрдВ' рдСрдкрд░реЗрдЯрд░ред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 127, 128. рдПрдХреНрд╕рдЯреЗрдВрд╢рдирдСрдбрд░рдХреНрд░реЛрдирд░реЗрдЯрд░.рдЬрд╛рд╡рд╛ 127
рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐ рдХрд╛ рдЕрдЪреНрдЫрд╛ рдкреБрд░рд╛рдирд╛
рдкреНрд░рднрд╛рд╡ ред рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдиреЗ рдмрдВрджреВрдХ рдХреЛ рдЙрдЫрд╛рд▓рд╛ рдФрд░ рдХреЛрдб рдХреА рд░реЗрдЦрд╛ рдХреЛ рдЧреБрдгрд╛ рдХрд┐рдпрд╛, рдЗрд╕реЗ рдареАрдХ рдХрд░рдирд╛ рднреВрд▓ рдЧрдпрд╛ред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рджреЛ рдмрд╛рд░
BEFORE_STR_OLD рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рддреБрд▓рдирд╛ рдХреА
рдЬрд╛рддреА рд╣реИ ред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рддреБрд▓рдирд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ
AFTER_STR_OLD рдХреЗ рд╕рд╛рде рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЗрдВрдЯреЗрд▓реАрдЬ рдЖрдИрдбрд┐рдпрд╛, рдЯрд╛рдЗрдкреЛ
public synchronized boolean isIdentifier(@NotNull String name, final Project project) { if (!StringUtil.startsWithChar(name,'\'') && !StringUtil.startsWithChar(name,'\"')) { name = "\"" + name; } if (!StringUtil.endsWithChar(name,'"') && !StringUtil.endsWithChar(name,'\"')) { name += "\""; } .... }
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V6001 [CWE-571] рд╕рдорд╛рди рдЙрдк-рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ рд╣реИрдВ '! StringUtil.endsWithChar (рдирд╛рдо,' '' ') рдмрд╛рдИрдВ рдУрд░ рдФрд░' && 'рдСрдкрд░реЗрдЯрд░ рдХреЗ рджрд╛рдИрдВ рдУрд░ред JsonNamesValidator.java 27
рдпрд╣ рдХреЛрдб рдЯреБрдХрдбрд╝рд╛ рдЬрд╛рдБрдЪрддрд╛ рд╣реИ рдХрд┐ рдирд╛рдо рдПрдХрд▓ рдпрд╛ рджреЛрд╣рд░реЗ рдЙрджреНрдзрд░рдг рдЪрд┐рд╣реНрдиреЛрдВ рдореЗрдВ рд╕рдВрд▓рдЧреНрди рд╣реИред рдпрджрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рджреЛрд╣рд░реЗ рдЙрджреНрдзрд░рдг рдЪрд┐рд╣реНрди рдЕрдкрдиреЗ рдЖрдк рдЬреБрдбрд╝ рдЬрд╛рддреЗ рд╣реИрдВред
рдПрдХ рдЯрд╛рдЗрдкреЛ рдХреЗ рдХрд╛рд░рдг, рдирд╛рдо рдХреЗ рдЕрдВрдд рдХреА рдЬрд╛рдБрдЪ рдХреЗрд╡рд▓ рджреЛрд╣рд░реЗ рдЙрджреНрдзрд░рдг рдЪрд┐рд╣реНрдиреЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдХреА рдЬрд╛рддреА рд╣реИред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдПрдХрд▓ рдЙрджреНрдзрд░рдг рдЪрд┐рд╣реНрдиреЛрдВ рдореЗрдВ рдирд╛рдо рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдирд╛рдо
'Abcd'
рдЕрддрд┐рд░рд┐рдХреНрдд рджреЛрд╣рд░реЗ рдЙрджреНрдзрд░рдг рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдХрд╛рд░рдг рдЗрд╕рдореЗрдВ рдмрджрд▓ рдЬрд╛рдПрдЧрд╛:
'Abcd'"
рдЗрдВрдЯреЗрд▓реАрдЬ рдЖрдИрдбрд┐рдпрд╛, рдПрд░реЗ рдУрд╡рд░рд░рди рд╕реЗ рдЧрд▓рдд рд╕рдВрд░рдХреНрд╖рдг
static Context parse(....) { .... for (int i = offset; i < endOffset; i++) { char c = text.charAt(i); if (c == '<' && i < endOffset && text.charAt(i + 1) == '/' && startTag != null && CharArrayUtil.regionMatches(text, i + 2, endOffset, startTag)) { endTagStartOffset = i; break; } } .... }
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪреЗрддрд╛рд╡рдиреА: V6007 [CWE-571] рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ 'i <endOffset' рд╣рдореЗрд╢рд╛ рд╕рдЪ рд╣реЛрддреА рд╣реИред EnterAfterJavadocTagHandler.java 183
рдпрджрд┐ рдСрдкрд░реЗрдЯрд░ рдХреЛ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИ
рддреЛ рдЙрдкрдкреНрд░рдХрд╛рд░рдХ i <рдПрдВрдбрдСрдлрд╕реЗрдЯ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВред
I рд╡реИрд░рд┐рдПрдмрд▓ рд╣рдореЗрд╢рд╛ рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ
рдПрдВрдбрдСрдлрд╕реЗрдЯ рд╕реЗ рдХрдо рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рд▓реВрдк рдирд┐рд╖реНрдкрд╛рджрди рдХреА рд╕реНрдерд┐рддрд┐ рд╕реЗ рд╣реЛрддрд╛ рд╣реИред
рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдУрд╡рд░рд░рди рд╕реЗ рд░рдХреНрд╖рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛:
- text.charAt (i + 1)
- CharArrayUtil.regionMatches (рдЯреЗрдХреНрд╕реНрдЯ, i + 2, рдПрдВрдбрдСрдлрд╝рд╕реЗрдЯ, рд╕реНрдЯрд╛рд░реНрдЯрдЯреИрдЧ)
рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╕реВрдЪрдХрд╛рдВрдХ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
рд╕рдм-рдбреЗрдкреНрд░реЗрд╢рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:
(i) <рдПрдВрдбрдСрдлрд╕реЗрдЯ -2 ред
IntelliJ рдЖрдИрдбрд┐рдпрд╛, рдмрд╛рд░-рдмрд╛рд░ рдЬрд╛рдБрдЪ
public static String generateWarningMessage(....) { .... if (buffer.length() > 0) { if (buffer.length() > 0) { buffer.append(" ").append( IdeBundle.message("prompt.delete.and")).append(" "); } } .... }
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V6007 [CWE-571] рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ 'рдмрдлрд░ .length ()> 0' рд╣рдореЗрд╢рд╛ рд╕рдЪ рд╣реИред DeleteUtil.java 62
рдпрд╣ рдПрдХ рд╕рд╣рдЬ рдирд┐рд░рд░реНрдердХ рдХреЛрдб рдпрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рддреНрд░реБрдЯрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИред
рдпрджрд┐ рдХреЛрдИ рдирдХрд▓реА рдЬрд╛рдБрдЪ рдЧрд▓рддреА рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди, рд╡рд╣рд╛рдБ рдХреБрдЫ рднреА рдЧрд▓рдд рдирд╣реАрдВ рд╣реИред рдЖрдк рдмрд╕ рджреВрд╕рд░рд╛ рдЪреЗрдХ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдПрдХ рдЕрдиреНрдп рдкрд░рд┐рджреГрд╢реНрдп рднреА рд╕рдВрднрд╡ рд╣реИред рджреВрд╕рд░рд╛ рдЪреЗрдХ рдХрд╛рдлреА рдЕрд▓рдЧ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдХреЛрдб рдЬреИрд╕рд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ рд╡реИрд╕рд╛ рди рд╣реЛред рдлрд┐рд░ рдпрд╣ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рддреНрд░реБрдЯрд┐ рд╣реИред
рдиреЛрдЯред рд╡реИрд╕реЗ, рдмрд╣реБрдд рд╕рд╛рд░реЗ рдмреЗрдорд╛рдиреА рдЪреЗрдХ рд╣реИрдВред рдЦреИрд░, рдЕрдХреНрд╕рд░ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╣рдо рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рдЭреВрдареА рд╕рдХрд╛рд░рд╛рддреНрдордХрддрд╛ рдирд╣реАрдВ рдорд╛рди рд╕рдХрддреЗред рдПрдХ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВ рдРрд╕реЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рд╣рд╡рд╛рд▓рд╛ рджреЗрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рдЬрд┐рд╕реЗ IntelliJ IDEA рд╕реЗ рднреА рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
private static boolean isMultiline(PsiElement element) { String text = element.getText(); return text.contains("\n") || text.contains("\r") || text.contains("\r\n"); }
рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди
text.contains ("\ r \ n") рд╣рдореЗрд╢рд╛ рдЧрд▓рдд рд╣реЛрддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрджрд┐ рд╡рд░реНрдг "\ n" рдФрд░ "\ r" рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИ, рддреЛ "\ r \ n" рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред рдпрд╣ рдмрдЧ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдХреЛрдб рдХреЗрд╡рд▓ рдЦрд░рд╛рдм рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдереЛрдбрд╝рд╛ рдзреАрдорд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд▓рд┐рдП рдЕрд░реНрдерд╣реАрди рдЦреЛрдЬ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░рддрд╛ рд╣реИред
рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЛрдб рд╕реЗ рдХреИрд╕реЗ рдирд┐рдкрдЯреЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдорд╛рдорд▓реЗ рдореЗрдВ, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╡рд╛рд▓ рд╣реИред рд▓реЗрдЦ рд▓рд┐рдЦрддреЗ рд╕рдордп, рдореИрдВ рдЖрдорддреМрд░ рдкрд░ рдРрд╕реЗ рдХреЛрдб рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреЗрддрд╛ред
рдЗрдВрдЯреЗрд▓реАрдЬ рдЖрдИрдбрд┐рдпрд╛, рдХреБрдЫ рдЧрд▓рдд рд╣реИ
public boolean satisfiedBy(@NotNull PsiElement element) { .... @NonNls final String text = expression.getText().replaceAll("_", ""); if (text == null || text.length() < 2) { return false; } if ("0".equals(text) || "0L".equals(text) || "0l".equals(text)) { return false; } return text.charAt(0) == '0'; }
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪреЗрддрд╛рд╡рдиреА: V6007 [CWE-570] рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ '"0"ред рдЕрд╕рдорд╛рди (рдкрд╛рда)' рд╣рдореЗрд╢рд╛ рдЧрд▓рдд рд╣реЛрддрд╛ рд╣реИред ConvertIntegerToDecimalPredicate.java 46
рдХреЛрдб рдореЗрдВ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрд╛рд░реНрдХрд┐рдХ рддреНрд░реБрдЯрд┐ рд╣реИред рдореБрдЭреЗ рдпрд╣ рдХрд╣рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреНрдпрд╛ рдЬрд╛рдБрдЪрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдФрд░ рджреЛрд╖ рдХреЛ рдХреИрд╕реЗ рдареАрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рддреЛ рдпрд╣рд╛рдБ, рдореИрдВ рд╕рд┐рд░реНрдл рдПрдХ рдирд┐рд░рд░реНрдердХ рдЬрд╛рдБрдЪ рдкрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддрд╛ рд╣реВрдБред
рд╢реБрд░реБрдЖрдд рдореЗрдВ рдпрд╣ рдЬрд╛рдВрдЪрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рджреЛ рдкреНрд░рддреАрдХ рд╣реИрдВред рдпрджрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдлрд╝рдВрдХреНрд╢рди
рдЧрд▓рдд рд╣реИ ред
рдЗрд╕рдХреЗ рдмрд╛рдж рдЪреЗрдХ
"0" рдЖрддрд╛ рд╣реИред
рдЕрд╕рдорд╛рди (рдкрд╛рда) ред рдпрд╣ рдЕрд░реНрдерд╣реАрди рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХрд┐рд╕реА рднреА рддрд╛рд░ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╡рд░реНрдг рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕рд▓рд┐рдП, рдпрд╣рд╛рдВ рдХреБрдЫ рдЧрд▓рдд рд╣реИ, рдФрд░ рдХреЛрдб рддрдп рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╕реНрдкреЙрдЯрдмрдЧреНрд╕ (рдлрд╛рдЗрдВрдбрдмрдЧреНрд╕ рдХрд╛ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░реА), рдкрд░рд┐рд╡рд░реНрддрди рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рд╕реАрдорд╛ рдХреА рддреНрд░реБрдЯрд┐
public static String getXMLType(@WillNotClose InputStream in) throws IOException { .... String s; int count = 0; while (count < 4) { s = r.readLine(); if (s == null) { break; } Matcher m = tag.matcher(s); if (m.find()) { return m.group(1); } } throw new IOException("Didn't find xml tag"); .... }
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪреЗрддрд╛рд╡рдиреА: V6007 [CWE-571] рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ 'рдЧрд┐рдирддреА <4' рд╣рдореЗрд╢рд╛ рд╕рдЪ рд╣реЛрддреА рд╣реИред рдЙрддреНрдкрд▓.рдЬрд╛рд╡рд╛ 394
рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, xml рдЯреИрдЧ рдХреА рдЦреЛрдЬ рдХреЗрд╡рд▓ рдлрд╝рд╛рдЗрд▓ рдХреА рдкрд╣рд▓реА рдЪрд╛рд░ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдХреЛрдИ
рдЧрд┐рдирддреА рдЪрд░ рдХреЛ рдмрдврд╝рд╛рдирд╛ рднреВрд▓ рдЧрдпрд╛, рдкреВрд░реА рдлрд╝рд╛рдЗрд▓ рдкрдврд╝реА рдЬрд╛рдПрдЧреАред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рдзреАрдореА рдЧрддрд┐ рд╕реЗ рдСрдкрд░реЗрд╢рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд, рдХрд╣реАрдВ рди рдХрд╣реАрдВ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдмреАрдЪ рдореЗрдВ, рдХреБрдЫ рдРрд╕рд╛ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ xml рдЯреИрдЧ рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛, рдпрд╣ рдирд╣реАрдВред
рд╕реНрдкреЙрдЯрдмрдЧреНрд╕ (рдлрд╛рдЗрдВрдбрдмрдЧреНрд╕ рдХрд╛ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░реА), рдПрдХ рдореВрд▓реНрдп рдХрд╛ рд╕рдорд╛рд╢реЛрдзрди
private void reportBug() { int priority = LOW_PRIORITY; String pattern = "NS_NON_SHORT_CIRCUIT"; if (sawDangerOld) { if (sawNullTestVeryOld) { priority = HIGH_PRIORITY;
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪреЗрддрд╛рд╡рдиреА: V6021 [CWE-563] рдорд╛рди рдХреЛ 'рдкреНрд░рд╛рдердорд┐рдХрддрд╛' рдЪрд░ рдХреЛ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред FindNonShortCircuit.java 197
рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдЪрд░ рдХрд╛ рдорд╛рди рдЪрд░
sawNullTestVeryOld рдХреЗ рдореВрд▓реНрдп рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛
рдЬрд╛рддрд╛ рд╣реИ ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддрд╛ред рдЙрд╕рдХреЗ рдмрд╛рдж,
рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдЪрд░ рдХреЛ рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рдФрд░ рдореВрд▓реНрдп рд╕реМрдВрдкрд╛ рдЬрд╛рдПрдЧрд╛ред рдлрд╝рдВрдХреНрд╢рди рдХреЗ рддрд░реНрдХ рдореЗрдВ рдПрдХ рд╕реНрдкрд╖реНрдЯ рддреНрд░реБрдЯрд┐ред
рд╕реЛрдирд╛рд░рдХреНрдпреВрдм, рдХреЙрдкреА-рдкреЗрд╕реНрдЯ
public class RuleDto { .... private final RuleDefinitionDto definition; private final RuleMetadataDto metadata; .... private void setUpdatedAtFromDefinition(@Nullable Long updatedAt) { if (updatedAt != null && updatedAt > definition.getUpdatedAt()) { setUpdatedAt(updatedAt); } } private void setUpdatedAtFromMetadata(@Nullable Long updatedAt) { if (updatedAt != null && updatedAt > definition.getUpdatedAt()) { setUpdatedAt(updatedAt); } } .... }
PVS-Studio: V6032 рдпрд╣ рд╡рд┐рдЪрд┐рддреНрд░ рд╣реИ рдХрд┐ рд╡рд┐рдзрд┐ 'setUpdatedAtFromDefinition' рдХрд╛ рд╢рд░реАрд░ рдХрд┐рд╕реА рдЕрдиреНрдп рд╡рд┐рдзрд┐ 'setUpdatedAtFromMetadata' рдХреЗ рд╢рд░реАрд░ рдХреЗ рд╕рдорддреБрд▓реНрдп рд╣реИред рдЪреЗрдХ рд▓рд╛рдЗрдиреНрд╕: 396, 405. RuleDto.java 396
рдПрдХ
рдкрд░рд┐рднрд╛рд╖рд╛ рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рдзрд┐
setUpdatedAtFromMetadata рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ,
рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдлрд╝реАрд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдПрдХ рдЕрд╕рдлрд▓ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдХреЗ рдкреНрд░рднрд╛рд╡реЛрдВ рдХреЗ рд╕рдорд╛рди рд╣реИред
рд╕реЛрдирд╛рд░рдЬрд╡рд╛, рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдорд╛рдирдЪрд┐рддреНрд░ рдХреЛ рджреЛрд╣рд░рд╛рддрд╛ рд╣реИ
private final Map<JavaPunctuator, Tree.Kind> assignmentOperators = Maps.newEnumMap(JavaPunctuator.class); public KindMaps() { .... assignmentOperators.put(JavaPunctuator.PLUSEQU, Tree.Kind.PLUS_ASSIGNMENT); .... assignmentOperators.put(JavaPunctuator.PLUSEQU, Tree.Kind.PLUS_ASSIGNMENT); .... }
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪреЗрддрд╛рд╡рдиреА: V6033 [CWE-462] рд╕рдорд╛рди рдХреБрдВрдЬреА 'JavaPunctuator.PLUSEQU' рдХреЗ рд╕рд╛рде рдПрдХ рдЖрдЗрдЯрдо рдкрд╣рд▓реЗ рд╣реА рдЬреЛрдбрд╝рд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 104, 100. KindMaps.java 104
рдПрдХ рд╣реА рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдЬреЛрдбрд╝реА рджреЛ рдмрд╛рд░ рдорд╛рдирдЪрд┐рддреНрд░ рдореЗрдВ рд╕реЗрдЯ рдХреА рдЧрдИ рд╣реИред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдпрд╣ рдЕрдирдЬрд╛рдиреЗ рдореЗрдВ рд╣реБрдЖ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рдХреЛрдб рдХреЛ рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ рдЬрд╛рдВрдЪрдирд╛ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐, рд╢рд╛рдпрдж, рдХреЛрдИ рднреА рдЕрдиреНрдп рдЬреЛрдбрд╝реА рдЬреЛрдбрд╝рдирд╛ рднреВрд▓ рдЧрдпрд╛ред
рдирд┐рд╖реНрдХрд░реНрд╖
рдЬрдм рдпрд╣ рдЗрддрдирд╛ рд╕реНрдкрд╖реНрдЯ рд╣реИ рддреЛ рдирд┐рд╖реНрдХрд░реНрд╖ рдХреНрдпреЛрдВ рд▓рд┐рдЦреЗрдВ? рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рд╕рднреА рдЕрднреА рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдЬрд╛рд╡рд╛ рднрд╛рд╖рд╛ рдкрд░ рдЕрдкрдиреА рдХрд╛рд░реНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ!
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ ред
рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рд╕рднреА рдХрд╛ рдзрдиреНрдпрд╡рд╛рджред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЬрд▓реНрдж рд╣реА рд╣рдо рдЕрдкрдиреЗ рдкрд╛рдардХреЛрдВ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рдЦреБрд▓реЗ рд╕реНрд░реЛрдд рдЬрд╛рд╡рд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдкрд░ рд▓реЗрдЦреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд╕рд╛рде рдЦреБрд╢ рдХрд░реЗрдВрдЧреЗред