рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдУрдкрди рдиреЗрдЯрд╡рд░реНрдХ (TON) рдЙрд╕реА рдЯреАрдо рджреНрд╡рд╛рд░рд╛ рдПрдХ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╣реИ рдЬрд┐рд╕рдиреЗ рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдореИрд╕реЗрдВрдЬрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ред рдмреНрд▓реЙрдХрдЪреЗрди рдХреЗ рдЕрд▓рд╛рд╡рд╛, TON рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рд╕реЗрдЯ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХрд╛ рдХреЛрдб рдмрдирд╛рдпрд╛, рдЬреЛ C ++ рдореЗрдВ рд▓рд┐рдЦрд╛ рд╣реИ, рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИ рдФрд░ рдЗрд╕реЗ GitHub рдкрд░ рдЕрдкрд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣рдордиреЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд░рд┐рд▓реАрдЬ рд╕реЗ рдкрд╣рд▓реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред
рдкрд░рд┐рдЪрдп
рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдУрдкрди рдиреЗрдЯрд╡рд░реНрдХ рд╡рд┐рднрд┐рдиреНрди рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╣реИред рдЕрдиреНрдп рдмрд╛рддреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдЧреНрд░рд╛рдо рдХреНрд░рд┐рдкреНрдЯреЛрдХреНрдпреВрд░реЗрдВрд╕реА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА рдПрдХ рднреБрдЧрддрд╛рди рдкреНрд░рдгрд╛рд▓реА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдПрдХ рдЖрднрд╛рд╕реА рдорд╢реАрди рдЬрд┐рд╕реЗ рдЯреЙрди рд╡реАрдПрдо рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдПрдХ рд╕рдВрджреЗрд╢ рд╕реЗрд╡рд╛, TON рд╕рдВрджреЗрд╢ рднреА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╕рдВрдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдЗрдВрдЯрд░рдиреЗрдЯ рд╕реЗрдВрд╕рд░рд╢рд┐рдк рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рддрд┐рд╡рд╛рдж рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдкреНрд░реЛрдЬреЗрдХреНрдЯ CMake рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЗрд╕рдХреЗ рдирд┐рд░реНрдорд╛рдг рдФрд░ рдЬрд╛рдБрдЪ рдореЗрдВ рдХреЛрдИ рдХрдард┐рдирд╛рдИ рдирд╣реАрдВ рд╣реБрдИред рд╕реНрд░реЛрдд рдХреЛрдб C ++ 14 рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ 210 рд╣рдЬрд╛рд░ LOC рддрдХ рдЪрд▓рддрд╛ рд╣реИ:
рдЪреВрдВрдХрд┐ рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдПрдХ рдЫреЛрдЯреА рдФрд░ рдЙрдЪреНрдЪ рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓реА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдореЗрдВ рдХрдИ рдХреАрдбрд╝реЗ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдЗрдирд╕реЗ рдирд┐рдкрдЯрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рд░рд┐рдЯрд░реНрди рдХреЛрдб
static int process_workchain_shard_hashes(....) { .... if (f == 1) { if ((shard.shard & 1) || cs.size_ext() != 0x20000) { return false;
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХ рд╕рдВрджреЗрд╢:
V601 'рдЧрд▓рдд' рдорд╛рди рдХреЛ рдкреВрд░реНрдгрд╛рдВрдХ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдбрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред mc-config.cpp 884
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдЧрд▓рдд рдкреНрд░рдХрд╛рд░ рдХреА рддреНрд░реБрдЯрд┐ рд╕реНрдерд┐рддрд┐ рдпрд╣рд╛рдВ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рд╣реА / рдЧрд▓рдд рдХреЗ рдмрдЬрд╛рдп рд╡рд┐рдлрд▓рддрд╛ рдХреЗ рд▓рд┐рдП рдирдХрд╛рд░рд╛рддреНрдордХ рдорд╛рди рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдХрдо рд╕реЗ рдХрдо рдХреЛрдб рдореЗрдВ рдЖрдЧреЗ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдпрд╣ -1 рджреЗрддрд╛ рд╣реИред
рдПрдХ рдЪрд░ рдХреА рддреБрд▓рдирд╛ рдЕрдкрдиреЗ рдЖрдк рд╕реЗ рдХрд░рдирд╛
class LastBlock : public td::actor::Actor { .... ton::ZeroStateIdExt zero_state_id_; .... }; void LastBlock::update_zero_state(ton::ZeroStateIdExt zero_state_id) { .... if (zero_state_id_ == zero_state_id_) { return; } LOG(FATAL) << ....; }
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХ рд╕рдВрджреЗрд╢:
V501 рдмрд╛рдИрдВ рдФрд░ '==' рдСрдкрд░реЗрдЯрд░ рдХреЗ рджрд╛рдИрдВ рдУрд░ рд╕рдорд╛рди рдЙрдк-рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ рд╣реИрдВ: zero_state_id_ == zero_state_id_ LastBlock.cpp 66
TON рдПрдХ рдХреЛрдбрд┐рдВрдЧ рдорд╛рдирдХ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдпрд╣ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдХрдХреНрд╖рд╛ рд╕рджрд╕реНрдпреЛрдВ рдХреЗ рдирд╛рдо рдПрдХ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕ рддрд░рд╣ рдХреЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдпрд╣ рдЕрдВрдХрди рдмрдЧ рдХреЛ рдЬрдиреНрдо рджреЗ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдХрд╛ рдЬреЛрдЦрд┐рдо рдЙрдард╛рддреЗ рд╣реИрдВред рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рджрд┐рдП рдЧрдП рддрд░реНрдХ рдХрд╛ рдирд╛рдо рдХрдХреНрд╖рд╛ рдХреЗ рд╕рджрд╕реНрдп рдХреЗ рд╕рдорд╛рди рд╣реИ, рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдорд┐рд╢реНрд░рдг рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред рдпрд╣ рддрд░реНрдХ рд╣реИ рдХрд┐ рддреБрд▓рдирд╛ рдореЗрдВ рднрд╛рдЧ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рдереАред
рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдореИрдХреНрд░реЛ
namespace td { namespace detail { [[noreturn]] void process_check_error(const char *message, const char *file, int line); }
PVS- рд╕реНрдЯреВрдбрд┐рдпреЛ рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХ рд╕рдВрджреЗрд╢:
V581 рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рд╕реНрдерд┐рдд 'if' рд╕реНрдЯреЗрдЯрдореЗрдВрдЯреНрд╕ рдХреА рд╕рд╢рд░реНрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ рд╕рдорд╛рди рд╣реИрдВред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 80, 84. blockdb.cpp 84
CHECK рдореИрдХреНрд░реЛ рдХреЗ рдЕрдВрджрд░ рдХреА рд╕реНрдерд┐рддрд┐ рдХрднреА рднреА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рд╣реЛрдЧреА рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреВрд░реНрд╡ рдореЗрдВ рдмрдпрд╛рди рджреНрд╡рд╛рд░рд╛ рдЬрд╛рдБрдЪ рдХреА рдЬрд╛ рдЪреБрдХреА рд╣реИред
рдпрд╣рд╛рдВ рдПрдХ рдФрд░ рддреНрд░реБрдЯрд┐ рднреА рдореМрдЬреВрдж рд╣реИ:
CHECK рдореИрдХреНрд░реЛ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рдЕрдВрджрд░ рдХреА рд╕реНрдерд┐рддрд┐ рдПрдХ
{{} рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рд▓рд┐рдкрдЯреА рдирд╣реАрдВ рд╣реИ
(0) ред рдЕрдиреНрдп рд╢рд╛рдЦрд╛ рдореЗрдВ рдЕрдиреНрдп рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЯрдХрд░рд╛рд╡ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХреЗ рд░реИрдкрд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛:
if (X) CHECK(condition) else foo();
рдПрдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдЪрд░ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛
class Slice { .... char operator[](size_t i) const; .... }; td::Result<int> CellSerializationInfo::get_bits(td::Slice cell) const { .... int last = cell[data_offset + data_len - 1]; if (!last || last == 0x80) {
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХ рд╕рдВрджреЗрд╢:
V560 рд╕рд╢рд░реНрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣рдореЗрд╢рд╛ рдЧрд▓рдд рд╣реЛрддрд╛ рд╣реИ: рдЕрдВрддрд┐рдо == 0x80ред boc.cpp 78
рд╕реНрдерд┐рддрд┐ рдХрд╛ рджреВрд╕рд░рд╛ рднрд╛рдЧ рдХрднреА рднреА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЯрд╛рдЗрдк
рдЪрд╛рд░ рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд┐рдП рдЧрдП рд╣реИрдВред рд╡реИрд▓реНрдпреВ рдСрдл рдЯрд╛рдЗрдк
рдЗрдВрдЯ рдХреЗ рдПрдХ рд╡реИрд░рд┐рдПрдмрд▓ рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░рддреЗ рд╕рдордп, рд╕рд╛рдЗрди рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХреЗ рдорд╛рди рдЕрднреА рднреА рд╕реАрдорд╛ [-128, 127] рдХреЗ рднреАрддрд░ рд╣реЛрдВрдЧреЗ, рди рдХрд┐ [0, 256]ред
рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐
рдЪрд╛рд░ рд╣рдореЗрд╢рд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ: рдЗрд╕рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╣реИ- рдФрд░ рд╕рдВрдХрд▓рдХ-рдирд┐рд░реНрднрд░ред рдЗрд╕рд▓рд┐рдП рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдПрдХ рдЕрд▓рдЧ рдордВрдЪ рдкрд░ рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди рдкреНрд░рд╢реНрди рдХреА рд╕реНрдерд┐рддрд┐ рдЕрднреА рднреА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛ рд╕рдХрддреА рд╣реИред
рдПрдХ рдирдХрд╛рд░рд╛рддреНрдордХ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╢рд┐рдлреНрдЯ рдХрд░рдирд╛
template <class Tr> bool AnyIntView<Tr>::export_bits_any(....) const { .... int mask = (-0x100 >> offs) & 0xff; .... }
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХ рд╕рдВрджреЗрд╢: рд╡реА
610 рдЕрдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ред рд╢рд┐рдлреНрдЯ рдСрдкрд░реЗрдЯрд░ '>>' рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред рдмрд╛рдПрдВ рдСрдкрд░реЗрдВрдб '-0x100' рдирдХрд╛рд░рд╛рддреНрдордХ рд╣реИред bigint.hpp 1925
рдПрдХ рдЛрдгрд╛рддреНрдордХ рд╕рдВрдЦреНрдпрд╛ рдкрд░ рдПрдХ рдмрд┐рдЯрд╡рд╛рдЗрдЬрд╝ рд░рд╛рдЗрдЯ рд╢рд┐рдлреНрдЯ рдСрдкрд░реЗрд╢рди рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдЕрдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ: рдпрджрд┐ рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рд╕рдВрдХреЗрдд рдХреЛ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдпрд╛ рд╢реВрдиреНрдп рдХреЗ рд╕рд╛рде рдЧрджреНрджреЗрджрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рддреЛ рдпрд╣ рдЬрд╛рдирдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред
рдирдП рдХреЗ рдмрд╛рдж рдирд▓ рдХреА рдЬрд╛рдВрдЪ
CellBuilder* CellBuilder::make_copy() const { CellBuilder* c = new CellBuilder(); if (!c) {
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХ рд╕рдВрджреЗрд╢:
V668 'рд╕реА' рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдЕрд╢рдХреНрдд рдХрд░рдиреЗ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕реНрдореГрддрд┐ рдХреЛ 'рдирдП' рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди рддреНрд░реБрдЯрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрдкрд╡рд╛рдж рдЙрддреНрдкрдиреНрди рд╣реЛрдЧрд╛ред CellBuilder.cpp 531
рд╕рдВрджреЗрд╢ рдпрд╣ рд╕рдм рдХрд╣рддрд╛ рд╣реИ: рдпрджрд┐ рд╕реНрдореГрддрд┐ рдЖрд╡рдВрдЯрди рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ, рддреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдПрдХ рдЕрд╢рдХреНрдд рд╕реВрдЪрдХ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рджреЗрдЧрд╛ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЬрд╛рдБрдЪ рд╡реНрдпрд░реНрде рд╣реИред
рдирд┐рд░рд░реНрдердХ рдЬрд╛рдБрдЪ
int main(int argc, char* const argv[]) { .... if (!no_env) { const char* path = std::getenv("FIFTPATH"); if (path) { parse_include_path_set(path ? path : "/usr/lib/fift", source_include_path); } } .... }
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХ рд╕рдВрджреЗрд╢:
V547 рдПрдХреНрд╕рдкреНрд░реЗрд╢рди 'рдкрд╛рде' рд╣рдореЗрд╢рд╛ рд╕рд╣реА рд╣реЛрддрд╛ рд╣реИред fift-main.cpp 136
рдпрд╣ рд╕реНрдирд┐рдкреЗрдЯ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЖрдВрддрд░рд┐рдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЯрд░реНрдирд░реА рдСрдкрд░реЗрдЯрд░ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдирд┐рд░рд░реНрдердХ рд╣реИ: рдЬрд┐рд╕ рд╕реНрдерд┐рддрд┐ рдХреА рд╡рд╣ рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ рд╡рд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреВрд░реНрд╡ рдореЗрдВ рджрд┐рдП рдЧрдП рд╡рд┐рд╡рд░рдг рджреНрд╡рд╛рд░рд╛ рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЗрд╕ рдЯрд░реНрдирд░реА рдСрдкрд░реЗрдЯрд░ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рднреВрд▓ рдЧрдП рдЬрдм рдЙрдиреНрд╣реЛрдВрдиреЗ рдорд╛рдирдХ рдкрдереЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ (рд╕рд╣рд╛рдпрддрд╛ рд╕рдВрджреЗрд╢ рдореЗрдВ рдЙрди рд▓реЛрдЧреЛрдВ рдХрд╛ рдХрдо рд╕реЗ рдХрдо рдХреЛрдИ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рд╣реИ)ред
рдЕрдкреНрд░рдпреБрдХреНрдд рдЪрд░
bool Op::set_var_info_except(const VarDescrList& new_var_info, const std::vector<var_idx_t>& var_list) { if (!var_list.size()) { return set_var_info(new_var_info); } VarDescrList tmp_info{new_var_info}; tmp_info -= var_list; return set_var_info(new_var_info);
PVS- рд╕реНрдЯреВрдбрд┐рдпреЛ рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХ рд╕рдВрджреЗрд╢:
V1001 'tmp_info' рд╡реЗрд░рд┐рдПрдмрд▓ рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрдд рддрдХ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╡рд┐рд╢реНрд▓реЗрд╖рдХ
рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреА рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐ рдореЗрдВ
tmp_info рдирд╛рдордХ рдПрдХ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рдереЗред рдпрд╣рд╛рдБ рдЙрд╕реА рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдХреЛрдб рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдиреНрдп рдкреИрд░рд╛рдореАрдЯрд░ рд╡рд┐рдирд┐рд░реНрджреЗрд╢рдХ рдХреЗ рд╕рд╛рде:
bool Op::set_var_info_except(VarDescrList&& new_var_info, const std::vector<var_idx_t>& var_list) { if (var_list.size()) { new_var_info -= var_list;
рдЧреНрд░реЗрдЯрд░ рдпрд╛ рдЗрд╕рд╕реЗ рдХрдо?
int compute_compare(const VarDescr& x, const VarDescr& y, int mode) { switch (mode) { case 1:
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХ рд╕рдВрджреЗрд╢:
V1037 рджреЛ рдпрд╛ рджреЛ рд╕реЗ рдЕрдзрд┐рдХ рдХреЗрд╕-рд╢рд╛рдЦрд╛рдПрдБ рдПрдХ рд╣реА рдХреНрд░рд┐рдпрд╛ рдХрд░рддреЗ рд╣реИрдВред рд▓рд╛рдЗрдиреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ: 639, 645 рдмрд┐рд▓реНрдЯред 639
рдпрджрд┐ рдЖрдк рдзреНрдпрд╛рди рд╕реЗ рдкрдврд╝рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдЗрд╕ рдХреЛрдб рдореЗрдВ <= рдСрдкрд░реЗрд╢рди рдХрд╛ рдЕрднрд╛рд╡ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдЗрд╕ рдСрдкрд░реЗрд╢рди рд╣реИ рдХрд┐ 6 рдХреЗ рдорд╛рдорд▓реЗ рд╕реЗ рдирд┐рдкрдЯрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдо рджреЛ рдзрдмреНрдмреЛрдВ рдХреЛ рджреЗрдЦрдХрд░ рдЗрд╕реЗ рдШрдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдкрд╣рд▓рд╛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЛрдб рд╣реИ:
AsmOp compile_cmp_int(std::vector<VarDescr>& res, std::vector<VarDescr>& args, int mode) { .... if (x.is_int_const() && y.is_int_const()) { r.set_const(compute_compare(x.int_const, y.int_const, mode)); x.unused(); y.unused(); return push_const(r.int_const); } int v = compute_compare(x, y, mode); .... } void define_builtins() { .... define_builtin_func("_==_", arith_bin_op, std::bind(compile_cmp_int, _1, _2, 2)); define_builtin_func("_!=_", arith_bin_op, std::bind(compile_cmp_int, _1, _2, 5)); define_builtin_func("_<_", arith_bin_op, std::bind(compile_cmp_int, _1, _2, 4)); define_builtin_func("_>_", arith_bin_op, std::bind(compile_cmp_int, _1, _2, 1)); define_builtin_func("_<=_", arith_bin_op, std::bind(compile_cmp_int, _1, _2, 6)); define_builtin_func("_>=_", arith_bin_op, std::bind(compile_cmp_int, _1, _2, 3)); define_builtin_func("_<=>_", arith_bin_op, std::bind(compile_cmp_int, _1, _2, 7)); .... }
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ,
define_builtins рдлрд╝рдВрдХреНрд╢рди, рдореЗрдВ 6
= рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдореЛрдб рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде
<= рдСрдкрд░реЗрдЯрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрд▓
compile_cmp_int рд╢рд╛рдорд┐рд▓ рд╣реИред
рджреВрд╕рд░рд╛ рд╕реНрдерд╛рди
рдХрдВрдкрд╛рдЗрд▓_рдХрдореНрдк_рдЗрдВрдЯ рдлрдВрдХреНрд╢рди рд╣реА рд╣реИ, рдЬреЛ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдирд╛рдореЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддрд╛ рд╣реИ:
AsmOp compile_cmp_int(std::vector<VarDescr>& res, std::vector<VarDescr>& args, int mode) { .... static const char* cmp_names[] = {"", "GREATER", "EQUAL", "GEQ", "LESS", "NEQ", "LEQ", "CMP"}; .... return exec_op(cmp_names[mode], 2); }
рдЗрдВрдбреЗрдХреНрд╕ 6
LEQ рд╢рдмреНрдж рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ "рдХрдо рдпрд╛ рд╕рдорд╛рдиред"
рдпрд╣
рддреБрд▓рдирд╛рддреНрдордХ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдкрд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдмрдЧреЛрдВ рдХреЗ
рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдФрд░ рдЕрдЪреНрдЫрд╛ рдмрдЧ рд╣реИред
рд╡рд┐рд╡рд┐рдз
#define VM_LOG_IMPL(st, mask) \ LOG_IMPL_FULL(get_log_interface(st), ...., VERBOSITY_NAME(DEBUG), \ (get_log_mask(st) & mask) != 0, "")
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХ рд╕рдВрджреЗрд╢:
V1003 рдореИрдХреНрд░реЛ 'VM_LOG_IMPL' рдПрдХ рдЦрддрд░рдирд╛рдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИред рдкреИрд░рд╛рдореАрдЯрд░ 'рдорд╛рд╕реНрдХ' рдХреЛ рдХреЛрд╖реНрдардХреЛрдВ рд╕реЗ рдШрд┐рд░рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред log.h 23
VM_LOG_IMPL рдореИрдХреНрд░реЛ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИред рдЗрд╕рдХрд╛ рджреВрд╕рд░рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛрд╖реНрдардХреЛрдВ рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдирд╣реАрдВ рд╣реИ, рдЬреЛ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдЕрд╡рд╛рдВрдЫрдиреАрдп рджреБрд╖реНрдкреНрд░рднрд╛рд╡ рдкреИрджрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдПрдХ рдЬрдЯрд┐рд▓ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░
рдореБрдЦреМрдЯрд╛ рд╕рд┐рд░реНрдл рдПрдХ рд╕реНрдерд┐рд░ рд╣реИ, рддреЛ рдпрд╣ рдХреЛрдб рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рдЪрд▓реЗрдЧрд╛ред рдЙрд╕ рдиреЗ рдХрд╣рд╛, рдХреБрдЫ рднреА рдирд╣реАрдВ рдЖрдк рдФрд░ рдХреБрдЫ рднреА рдореИрдХреНрд░реЛ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖
TON рдмрд╣реБрдд рдЫреЛрдЯрд╛ рдирд┐рдХрд▓рд╛, рдЗрд╕рд▓рд┐рдП рд╡рд╣рд╛рдБ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХреАрдбрд╝реЗ рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдбреЗрд╡рд▓рдкрд░ рдЯреАрдо рдХреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╢реНрд░реЗрдп рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рд╣рд░ рдХреЛрдИ рд╣рд░ рдмрд╛рд░ рдЧрд▓рддреА рдХрд░рддрд╛ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдпреЗ рд▓реЛрдЧ рднреАред рдХреЛрдб рдПрдирд╛рд▓рд╛рдЗрдЬрд░ рд╕рдмрд╕реЗ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдХреЛрдб рдмреЗрд╕ рдореЗрдВ рднреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╡рд┐рдХрд╛рд╕ рдЪрд░рдгреЛрдВ рдореЗрдВ рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рдЦрддрд░рдирд╛рдХ рд╕реНрдкреЙрдЯ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЙрдкрдХрд░рдг рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдЙрдкреЗрдХреНрд╖рд┐рдд рди рдХрд░реЗрдВред рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд╛ рдорддрд▓рдм рд╕рдордп-рд╕рдордп рдкрд░ рдЪрд▓рдирд╛ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП: "рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ
рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрдВ, рдЗрд╕рдХреЗ рд╕рд╛рде рдХреАрдбрд╝реЗ рдХреА рдЦреЛрдЬ рди рдХрд░реЗрдВ "ред