рдпреВрдирд┐рдХреЙрд░реНрди рдХреЛ рдорд╛рдЗрдХреНрд░реЛрд╡реЗрд╡ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реЛ рдЧрдИ

PVS-Studio рдФрд░ ╬╝Manager (рдорд╛рдЗрдХреНрд░реЛ-рдореИрдиреЗрдЬрд░)
рдЗрд╕ рдмрд╛рд░, рд╕реВрдХреНрд╖реНрдо рдЬрдЧрдд рдиреЗ рд╣рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рджрд┐рд▓рдЪрд╕реНрдк рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ред рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдордиреЗ рдУрдкрди ager рдореИрдирдЬрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ред рдпрд╣ рдПрдХ рдорд╛рдЗрдХреНрд░реЛрд╕реНрдХреЛрдк рдХреЗ рд╕рд╛рде рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЗрдореЗрдЬрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдкреИрдХреЗрдЬ рд╣реИред

╬╝Manager


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

рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕рд╛рдЗрдЯ: рдорд╛рдЗрдХреНрд░реЛ-рдореИрдиреЗрдЬрд░ ред

рд╡рд┐рд╢реНрд▓реЗрд╖рдг, рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╡реИрд╕реЗ, рдпрджрд┐ рдЖрдк рдЪреВрдХ рдЧрдП рд╣реИрдВ, рддреЛ рдпрд╣рд╛рдВ рдпрд╣ рддреБрд▓рдирд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рд╕рдВрднрд╛рд╡рд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ: " рдХреЛрдб рдПрдирд╛рд▓рд┐рд╕рд░реНрд╕ рдХреА рддреБрд▓рдирд╛: CppCat, Cppcheck, PVS-Studio, Visual Studio "ред

рдпрд╣ рдЧреЗрдп рд╡рд┐рд╖рдпрд╛рдВрддрд░ рдХрд╛ рдЕрдВрдд рд╣реИред рдЪрд▓реЛ рджрд┐рд▓рдЪрд╕реНрдк рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯреНрд╕ рджреЗрдЦрдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред

рд▓рдВрдмреА! = int


рд▓рдВрдмреА! = int


╬ЬManager рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╣реЛрдиреЗ рдХрд╛ рджрд╛рд╡рд╛ рдХрд░рддреА рд╣реИред рдЗрд╕рд▓рд┐рдП, 'рд▓рдВрдмреЗ' рдХреЗ рдкреНрд░рдХрд╛рд░ рд╕реЗ рд╕рд╛рд╡рдзрд╛рди рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдПред 32-рдмрд┐рдЯ рд╕рд┐рд╕реНрдЯрдо рдкрд░, 'рд▓рдВрдмреЗ' рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЖрдХрд╛рд░ 'рдЗрдВрдЯ' рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рд╕рдорд╛рди рд╣реЛрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди 64-рдмрд┐рдЯ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдпрд╣ рдЕрд▓рдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред Win64 рдореЗрдВ, 'рд▓рдВрдмреЗ' рдкреНрд░рдХрд╛рд░ 32-рдмрд┐рдЯ рдмрдирд╛ рд░рд╣рд╛ред рд▓рд┐рдирдХреНрд╕ рдХреА 64-рдмрд┐рдЯ рджреБрдирд┐рдпрд╛ рдореЗрдВ, рдПрдХ рдФрд░ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдЕрдкрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ 'рд▓рдВрдмреА' 64-рдмрд┐рдЯ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рддрд░реНрдХрддрд╛ рдмрд░рддреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред

╬ЬManager рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдлрд▓ рдХреЛрдб рд╣реИрдВ:
typedef struct _DCMOTSTATUS { unsigned short wChannel; // Channel ident. unsigned int lPosition; // Position in encoder counts. unsigned short wVelocity; // Velocity in encoder counts/sec. unsigned short wReserved; // Controller specific use unsigned int dwStatusBits; // Status bits (see #defines below). } DCMOTSTATUS; int MotorStage::ParseStatus(...., DCMOTSTATUS& stat) { .... memcpy(&stat.lPosition, buf + bufPtr, sizeof(long)); //<<<(1) bufPtr += sizeof(long); memcpy(&stat.wVelocity, buf + bufPtr, sizeof(unsigned short)); bufPtr += sizeof(unsigned short); memcpy(&stat.wReserved, buf + bufPtr, sizeof(unsigned short)); bufPtr += sizeof(unsigned short); memcpy(&stat.dwStatusBits, buf + bufPtr, sizeof(unsigned long)); //<<<(2) return DEVICE_OK; } 

рд▓рд╛рдЗрди (1) рдФрд░ (2) рдореЗрдВ, рдбреЗрдЯрд╛ рдХреЛ 'int' рдХреЗ рд╡реИрд░рд┐рдПрдмрд▓ рдкрд░ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд░рдХрд╛рд░ 'рд▓рдВрдмреЗ' рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рдмрд░рд╛рдмрд░ рдмрд╛рдЗрдЯреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рдирдХрд▓ рдХреА рдЬрд╛рддреА рд╣реИред рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ 64-рдмрд┐рдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ, 'рд▓реЙрдиреНрдЧ' 8 рдмрд╛рдЗрдЯреНрд╕ рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдЯрд╛рдЗрдк 'int' рдХреЗрд╡рд▓ 4 рдмрд╛рдЗрдЯреНрд╕ рд▓реЗрддрд╛ рд╣реИред

рдорд╛рдорд▓реЗ рдореЗрдВ (1) рдЪрд┐рдВрддрд╛ рдХреА рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВ рд╣реИред рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рджрд╕реНрдпреЛрдВ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдмрджрд▓реЗрдВред рдлрд┐рд░ рдЗрди рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рднрд░рд╛ рдЬрд╛рдПрдЧрд╛ред рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рд╣реА рд╣реИред

рд▓реЗрдХрд┐рди рдорд╛рдорд▓рд╛ (2) рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдЕрдВрддрд┐рдо рд╕рджрд╕реНрдп рдХрд╛ рдореВрд▓реНрдп рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИред рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдмрд╛рд╣рд░ рдПрдХ рд░рд┐рдХреЙрд░реНрдб рд╣реЛрдЧрд╛ред рдпрд╣ рдХреНрдпрд╛ рднрд╛рдЧреНрдп рдФрд░ рдЪрдВрджреНрд░рдорд╛ рдХреЗ рдЪрд░рдг рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░реЗрдЧрд╛ред

рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдиреИрджрд╛рдирд┐рдХ тАЛтАЛрд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

рдХрдЪрд░рд╛ рдХрдореНрдкреЗрдХреНрдЯрд░ рдмрдВрдж рдХрд░реЛ!


R2D2, рдХрдЪрд░рд╛ рдХрдореНрдкреЗрдХреНрдЯрд░ 3263827 рдкрд░ рд░реЛрдХреЗрдВ

 const unsigned char stopSgn[2] = {0x04, 0x66}; int MotorStage::Stop() { .... if (memcmp(stopSgn, answer, sizeof(stopSgn) != 0)) return ERR_UNRECOGNIZED_ANSWER; .... } 

рддреНрд░реБрдЯрд┐ рдпрд╣ рд╣реИ рдХрд┐ рдореЗрдордХреИрдВрдк () рдлрд╝рдВрдХреНрд╢рди рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рдЗрдЯ рдХреА рддреБрд▓рдирд╛ рдХрд░рддрд╛ рд╣реИред рдХреНрдпреЛрдВ? рдЖрдкрддреНрддрд┐рдЬрдирдХ рдЧрд▓рддреАред рд╕рдорд╛рдкрди рдмреНрд░реИрдХреЗрдЯ рд╡рд╣рд╛рдВ рдирд╣реАрдВ рд▓рдЧрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдЗрдЯреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ: sizeof (stopSgn)! = 0. рдпрд╣ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореВрд▓реНрдп 'рд╕рдЪ' рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ, рдЬреЛ рдПрдХ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИред

рд╣рд╛рд▓рдд рдЗрд╕ рддрд░рд╣ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП:
 if (memcmp(stopSgn, answer, sizeof(stopSgn)) != 0) 

рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХреНрд╕ рджреНрд╡рд╛рд░рд╛ рддреНрд░реБрдЯрд┐ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛: V526 'рдореЗрдордХреИрдВрдк' рдлрд╝рдВрдХреНрд╢рди 0 рд░рд┐рдЯрд░реНрди рдХрд░рддрд╛ рд╣реИ рдпрджрд┐ рд╕рдВрдмрдВрдзрд┐рдд рдмрдлрд╝рд░реНрд╕ рд╕рдорд╛рди рд╣реИрдВред рдЧрд▓рддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред MotorStage.cpp 385

рдкрд╣рдЪрд╛рди рдХреА рддреБрд▓рдирд╛


рдкрд╣рдЪрд╛рди рдХреА рддреБрд▓рдирд╛

 const char* g_Out = "Out"; int FieldDiaphragm::OnCondensor(....) { .... std::string value; .... if (value == g_Out) return g_hub.SetCondensorPosition(*this, *GetCoreCallback(), 0); else if (value == g_Out) return g_hub.SetCondensorPosition(*this, *GetCoreCallback(), 1); .... } 

рджреВрд╕рд░рд╛ рдпрджрд┐ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдореЗрдВ рдЕрдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐ рд╣реИред рджреВрд╕рд░реА рд╢рд░реНрдд рдХреНрдпрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рджреВрд╕рд░реА рд╢рд░реНрдд рдХрднреА рдкреВрд░реА рдирд╣реАрдВ рд╣реЛрдЧреАред

рддреНрд░реБрдЯрд┐ рдирд┐рджрд╛рди: V517 'if (A) {...} рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдЧрд░ (A) {...}' рдкреИрдЯрд░реНрди рдХрд╛ рдкрддрд╛ рдЪрд▓рд╛ред рддрд╛рд░реНрдХрд┐рдХ рддреНрд░реБрдЯрд┐ рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 1455, 1457. LeicaDMR.cpp 1455

рдПрдХ рд╕рдорд╛рди рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рдХреЛрдб рдХрд╛ рдПрдХ рдФрд░ рдЯреБрдХрдбрд╝рд╛ рд╣реИред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдХреБрдЫ рдкрд╣рд┐рдпрд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛрдВрдЧреА:
 class Wheel : public CStateDeviceBase<Wheel> { .... unsigned wheelNumber_; .... }; int Wheel::SetWheelPosition(int position) { unsigned char cmd[4]; cmd[0] = moduleId_; cmd[2] = 0; cmd[3] = 58; if (wheelNumber_ == 1) { switch (position) { case 0: cmd[1] = 49; break; case 1: cmd[1] = 50; break; case 2: cmd[1] = 51; break; case 3: cmd[1] = 52; break; case 4: cmd[1] = 53; break; case 5: cmd[1] = 54; break; } } else if (wheelNumber_ == 1) { switch (position) { case 0: cmd[1] = 33; break; case 1: cmd[1] = 64; break; case 2: cmd[1] = 35; break; case 3: cmd[1] = 36; break; case 4: cmd[1] = 37; break; case 5: cmd[1] = 94; break; } .... } 

PVS- рд╕реНрдЯреВрдбрд┐рдпреЛ рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХ рд╕рдВрджреЗрд╢: V517 'if (A) {...} рдХрд╛ рдЙрдкрдпреЛрдЧ if (A) {...}' рдкреИрдЯрд░реНрди рдХрд╛ рдкрддрд╛ рдЪрд▓рд╛ред рддрд╛рд░реНрдХрд┐рдХ рддреНрд░реБрдЯрд┐ рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 645, 654. рд▓реБрдбрд▓.рдХреИрдк 645

рд▓рдЧрддрд╛ рд╣реИ рд╣рдо рдХреБрдЫ рднреВрд▓ рдЧрдП рд╣реИрдВред


рдРрд╕рд╛ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВ рдХрд┐ рд╣рдордиреЗ рдХреБрдЫ рдпрд╛рдж рдХрд┐рдпрд╛ рд╣реИ


рдореИрдВ рдЗрд╕ рдХреЛрдб рдХреЛ рджреЗрдЦрдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЗрд╕рдореЗрдВ рдХреНрдпрд╛ рдХрдореА рд╣реИ?
 class MP285 { .... static int GetMotionMode() { return m_nMotionMode; } .... }; int ZStage::_SetPositionSteps(....) { .... if (MP285::GetMotionMode == 0) { long lOldZPosSteps = (long)MP285::Instance()->GetPositionZ(); dSec = (double)labs(lZPosSteps-lOldZPosSteps) / dVelocity; } else { dSec = (double)labs(lZPosSteps) / dVelocity; } .... } 

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

рдирд┐рджрд╛рдирдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рддреНрд░реБрдЯрд┐ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛: V516 рдПрдХ рд╡рд┐рд╖рдо рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдиреЙрди-рдирд▓ рдлрд╝рдВрдХреНрд╢рди рдкреЙрдЗрдВрдЯрд░ рдХреА рддреБрд▓рдирд╛ рдирд▓ рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИ: 'MP285 :: GetMotionMode == 0'ред MP285ZStage.cpp 558

рдЕрдХреЗрд▓рд╛ рднрдЯрдХрдиреЗ рд╡рд╛рд▓рд╛


рдкрдерд┐рдХ

 int HalogenLamp::SetIntensity(long intensity) { .... command_stream.str().c_str(); .... } 

рдпрд╣ рдХреНрдпрд╛ рд╣реИ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХрд╛ рд╕рд╛рдЗрдб рдЗрдлреЗрдХреНрдЯ? рдЕрдзреВрд░рд╛ рдХреЛрдб? рд╣рд╛рдирд┐рд░рд╣рд┐рдд рдЕрддрд┐рд░рд┐рдХреНрдд рд░реЗрдЦрд╛ рдпрд╛ рдЧрд▓рддреА?

рдРрд╕реА рджреЛ рдЬрдЧрд╣реЗрдВ рд╣реИрдВ рдЬрд╣рд╛рдБ рдЖрдк рдРрд╕реЗ рдЕрдХреЗрд▓реЗ рднрдЯрдХ рд╕рдХрддреЗ рд╣реИрдВ:

рдмреНрд░рд╛рд╣реНрдордгреЛрдВ рдиреЗ


рдмреНрд░рд╛рд╣реНрдордгреЛрдВ

 int LeicaScopeInterface::GetDICTurretInfo(....) { .... std::string tmp; .... if (tmp == "DIC-TURRET") scopeModel_->dicTurret_.SetMotorized(true); else scopeModel_->dicTurret_.SetMotorized(true); .... } 

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

рдЪреЗрддрд╛рд╡рдиреА: V523 'рддрдм' рдХрдерди 'рдФрд░' рдХрдерди рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред LeicaDMIScopeInterface.cpp 1296

рдЗрд╕реА рддрд░рд╣ рдХреА рдПрдХ рдФрд░ рдЧрд▓рддреАред рдпрд╣рд╛рдВ рдЙрд╕реА рд▓рд╛рдЗрдиреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХреА рдЬрд╛рддреА рд╣реИред рдЗрд╕ рдХреЛрдб рдореЗрдВ рд╕рдВрднрд╡рддрдГ рдПрдХ рдЯрд╛рдЗрдкреЛ рд╢рд╛рдорд┐рд▓ рд╣реИ:
 int XLedDev::Initialize() { .... if (strcmp( XLed::Instance()->GetXLedStr(XLed::XL_WLedDevName + m_nLedDevNumber).c_str(), XLed::Instance()->GetXLedStr(XLed::XL_WLedDevName + m_nLedDevNumber).c_str() ) != 0) .... } 

рдЪреЗрддрд╛рд╡рдиреА: V549 'strcmp' рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкрд╣рд▓рд╛ рддрд░реНрдХ рджреВрд╕рд░реЗ рддрд░реНрдХ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред XLedDev.cpp 119

рдХреБрдЫ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реИ


рдПрдХ рдмреЗрдореЗрд▓


'рдЕрд╕рддреНрдп' рдФрд░ 'рд╕рддреНрдп' рдорд╛рдиреЛрдВ рдХреЛ 'int' рдЯрд╛рдЗрдк рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдВ рдПрдХ рдХреЛрдб рд╣реИ рдЬреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ:
 int F() { return false; } 

рдПрдл (рдПрдл) рд░рд┐рдЯрд░реНрди 0ред

рдХрднреА-рдХрднреА рд▓реЛрдЧ рдЧрд▓рддреА рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рддреНрд░реБрдЯрд┐ рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрдЬрд╛рдп рдЬреЛ 'int' рдкреНрд░рдХрд╛рд░ рдХреА рд╣реЛрддреА рд╣реИ, рд╡реЗ 'рдЧрд▓рдд' рдпрд╛ 'true' рд╡рд╛рдкрд╕ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рднреВрд▓рдиреЗ рдХреА рдмреАрдорд╛рд░реА рдХреЗ рдХрд╛рд░рдг рд╣реИред рдпрджрд┐ рддреНрд░реБрдЯрд┐ рд╕реНрдерд┐рддрд┐ 0 рдХреЗ рдорд╛рди рд╕реЗ рдПрдиреНрдХреЛрдбреЗрдб рд╣реИ рддреЛ рдареАрдХ рд╣реИред

рдпрджрд┐ рддреНрд░реБрдЯрд┐ рд╕реНрдерд┐рддрд┐ рд╢реВрдиреНрдп рд╕реЗ рднрд┐рдиреНрди рдорд╛рдиреЛрдВ рд╕реЗ рдПрдиреНрдХреЛрдбреЗрдб рд╣реИ, рддреЛ рд╕рдорд╕реНрдпрд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ ╬╝Manager рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдореВрд▓реНрдп рдЙрдкрд▓рдмреНрдз рд╣реИрдВ:
 #define DEVICE_OK 0 #define DEVICE_ERR 1 // generic, undefined error #define DEVICE_INVALID_PROPERTY 2 #define DEVICE_INVALID_PROPERTY_VALUE 3 #define DEVICE_INVALID_PROPERTY_TYPE 5 .... 

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ 0 рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИред рдЕрдиреНрдп рдорд╛рди рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рддреНрд░реБрдЯрд┐ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реИрдВред

рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ ╬╝Manager рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛрдб рдореЗрдВ 'рд╕рддреНрдп', 'рдЕрд╕рддреНрдп' рдХреА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдФрд░ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЧрдбрд╝рдмрдбрд╝ рд╣реИред

CreateProperty () рдлрд╝рдВрдХреНрд╢рди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
 int MM::PropertyCollection::CreateProperty(....) { if (Find(pszName)) return DEVICE_DUPLICATE_PROPERTY; .... if (!pProp->Set(pszValue)) return false; .... return DEVICE_OK; } 

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрджрд┐ рдХреЙрд▓ pProp-> рд╕реЗрдЯ (pszValue) рд╡рд┐рдлрд▓ рд░рд╣рд╛ рд╣реИ, рддреЛ рдлрд╝рдВрдХреНрд╢рди 'рдЧрд▓рдд' рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди DEVICE_OK рдХреА рд╕реНрдерд┐рддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдмрд╣реБрдд рдЕрдЬреАрдм рд╣реИред

рдХреЛрдб рдХрд╛ рдПрдХ рдФрд░ рд╕рдВрджрд┐рдЧреНрдз рдЯреБрдХрдбрд╝рд╛:
 int MM::PropertyCollection::RegisterAction( const char* pszName, MM::ActionFunctor* fpAct) { MM::Property* pProp = Find(pszName); if (!pProp) return DEVICE_INVALID_PROPERTY; pProp->RegisterAction(fpAct); return true; } 

рдЕрдВрдд рдореЗрдВ, рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ "рд╡рд╛рдкрд╕реА рд╕рдЪ рд╣реИ;"ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди DEVICE_ERR 1 (рд╕рд╛рдорд╛рдиреНрдп, рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рддреНрд░реБрдЯрд┐) рдХреА рд╕реНрдерд┐рддрд┐ рд▓реМрдЯрд╛рдПрдЧрд╛ред рдЙрд╕реА рд╕рдордп, рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рд╣реИред

рд╢рд╛рдпрдж рдЗрд╕реЗ рдкрдврд╝рдХрд░ рдЕрдЬреАрдм рд▓рдЧреЗрдЧрд╛ рдХрд┐ рдореИрдВ рдЗрди рдЬрдЧрд╣реЛрдВ рдХреЛ рд╕рдВрджрд┐рдЧреНрдз рдХреНрдпреЛрдВ рдХрд╣рддрд╛ рд╣реВрдВ, рдФрд░ рдпрд╣ рдирд╣реАрдВ рдХрд╣рддрд╛ рдХрд┐ рдпреЗ рдЧрд▓рддрд┐рдпрд╛рдБ рд╣реИрдВред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЛрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ 'рдЧрд▓рдд' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдЙрджрд╛рд╣рд░рдг:
 int XYStage::Home() { .... if (ret != DEVICE_OK) { ostringstream os; os << "ReadFromComPort failed in " "XYStage::Busy, error code:" << ret; this->LogMessage(os.str().c_str(), false); return false; // Error, let's pretend all is fine } .... } 

рдЯрд┐рдкреНрдкрдгреА рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реБрдИ рд╣реИред рд▓реЗрдХрд┐рди рд╣рдо рджрд┐рдЦрд╛рд╡рд╛ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ, рд╢реВрдиреНрдп рд▓реМрдЯ рд░рд╣рд╛ рд╣реИред рд╢рд╛рдпрдж рдЗрд╕ рдХреЛрдб рдХреА рдЦрд╝рд╛рд╕рд┐рдпрдд рдкрд░ рдЬрд╝реЛрд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП DEVICE_OK рдХреЗ рдмрдЬрд╛рдп 'рдЧрд▓рдд' рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред

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

рдмрджрдмреВ рдЖ рд░рд╣реА рд╣реИ


рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЛрдб рд╕реЗ рдмрд╣реБрдд рдЦрд░рд╛рдм рдЧрдВрдз рдЖрддреА рд╣реИред

рдпрд╣рд╛рдБ рд╕рднреА рд╕рдВрджрд┐рдЧреНрдз рд╕реНрдерд╛рдиреЛрдВ рдХреА рд╕реВрдЪреА рджреА рдЧрдИ рд╣реИ:

рдЕрдЬреАрдм рдорд┐рд▓рддрд╛ рд╣реИ


рдЕрдЬреАрдм

 int pgFocus::GetOffset(double& offset) { MM_THREAD_GUARD_LOCK(&mutex); deviceInfo_.offset = offset; MM_THREAD_GUARD_UNLOCK(&mutex); return DEVICE_OK; } 

рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдпрд╛ рдЗрд╕ рдХреЛрдб рдХреЗ рд╕рд╛рде рдХреБрдЫ рдЧрд▓рдд рд╣реИ?

рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЛ рдпрд╣ рдХреЛрдб рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ: V669 'рдСрдлрд╝рд╕реЗрдЯ' рддрд░реНрдХ рдПрдХ рдЧреИрд░-рд╕реНрдерд┐рд░ рд╕рдВрджрд░реНрдн рд╣реИред рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд╣реИ рдЬрд┐рд╕ рдкрд░ рдпрд╣ рддрд░реНрдХ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реИред pgFocus.cpp 356

рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдЕрдЬреАрдм рд╣реИред рдлрд╝рдВрдХреНрд╢рди рдХреЛ "рдЧреЗрдЯрдПрдЯреА" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдлрд╝рдВрдХреНрд╢рди рд╕реНрдерд┐рддрд┐ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рд╡рд╣ рд╕рдВрджрд░реНрдн рджреНрд╡рд╛рд░рд╛ 'рдСрдлрд╕реЗрдЯ' рддрд░реНрдХ рднреА рд▓реЗрддрд╛ рд╣реИред рдФрд░ ... рдФрд░ рдЗрд╕рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рд╕рдм рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛? рдХреБрдЫ рдЗрд╕ рддрд░рд╣:
 offset = deviceInfo_.offset; 

рдПрдХ рдФрд░ рд╕рдВрджрд┐рдЧреНрдз GetTransmission () рдлрд╝рдВрдХреНрд╢рди:
 int SpectralLMM5Interface::GetTransmission(...., double& transmission) { .... int16_t tr = 0; memcpy(&tr, answer + 1, 2); tr = ntohs(tr); transmission = tr/10; .... } 

PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V636 'tr / 10' рдХреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ 'int' рдкреНрд░рдХрд╛рд░ рд╕реЗ 'рдбрдмрд▓' рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдирд┐рд╣рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдПрдХ рдЖрдВрд╢рд┐рдХ рднрд╛рдЧ рдХреЗ рдиреБрдХрд╕рд╛рди рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдкрд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрд▓рд╛рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдПрдХ рдЙрджрд╛рд╣рд░рдг: рдбрдмрд▓ рдП = (рдбрдмрд▓) (рдПрдХреНрд╕) / рд╡рд╛рдИ ;; рд╕реНрдкреЗрдХреНрдЯреНрд░рд▓рдПрдордПрдо 5 рдЗрдиреНрдЯрд░рдлреЗрд╕.рдХрдкреА 198

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп рдбрдмрд▓ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реИ (рд╣рдо рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ)ред рд▓реЗрдХрд┐рди рдЗрд╕ рдореВрд▓реНрдп рдХреА рдЧрдгрдирд╛ рдЕрдЬреАрдм рддрд░рд╣ рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИред рдкреВрд░реНрдгрд╛рдВрдХ рдорд╛рди рдХреЛ 10 рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдордЬрдмреВрдд рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рд╕рдЯреАрдХрддрд╛ рдХрд╛ рдиреБрдХрд╕рд╛рди рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ 'tr' 5 рд╣реИ, рддреЛ рд╡рд┐рднрд╛рдЬрди рдХреЗ рдмрд╛рдж рд╣рдореЗрдВ 0 рдорд┐рд▓рддрд╛ рд╣реИ, 0.5 рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВред

рд╕рдВрднрд╡рддрдГ рд╕рд╣реА рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:
 transmission = tr/10.0; 

рддреНрд░реБрдЯрд┐ рдпрд╛ рдХреЛрдИ рддреНрд░реБрдЯрд┐? рдкрд╣рд▓реА рдзрд╛рд░рдгрд╛ рдзреЛрдЦрд╛ рджреЗ рд╕рдХрддреА рд╣реИред


рддреНрд░реБрдЯрд┐ рд╣реБрдИ рдпрд╛ рдирд╣реАрдВ?


рд╕реА / рд╕реА ++ рдореЗрдВ, рд╢реВрдиреНрдп рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдирдВрдмрд░реЛрдВ рдХреЛ рдЕрд╖реНрдЯрдХ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред ╬ЬManager рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдПрдХ рд╕рдВрджрд┐рдЧреНрдз рдЬрдЧрд╣ рд╣реИ:
 int LeicaDMSTCHub::StopXY(MM::Device& device, MM::Core& core) { int ret = SetCommand(device, core, xyStage_, 010); if (ret != DEVICE_OK) return ret; return DEVICE_OK; } 

PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V536 рд╕рд▓рд╛рд╣ рджреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╕реНрдерд┐рд░ рдорд╛рди рдХреЛ рдПрдХ рдЕрд╖реНрдЯрдХ рд░реВрдк рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛рдПред рдЕрдХреНрдЯреВрдмрд░: 010, рджрд┐рд╕рдВрдмрд░: 8. LeicaDMSTCHub.cpp 142

рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ 8 рдирдВрдмрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ, рдЬреЛ рдЕрд╖реНрдЯрдХ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдереЗ, рдпрд╛ рдпрд╣ рдПрдХ рдЧрд▓рддреА рд╣реИред рдЕрдиреНрдпрддреНрд░, рджрд╢рдорд▓рд╡ рдореЗрдВ рд▓рд┐рдЦреА рд╕рдВрдЦреНрдпрд╛рдПрдБ SetCommand () рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдкрд╛рд╕ рдХреА рдЬрд╛рддреА рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣:
 int ret = SetCommand(device, core, xyStage_, 35, ack); 

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА рдпрд╛ рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЗрд╕ рд╕реНрдерд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИред

рдкреВрд░реНрдгрддрд╛рд╡рд╛рджреА рдирд┐рд░рдВрдХреБрд╢ рд╣реЛрддрд╛ рд╣реИ


рдкреВрд░реНрдгрддрд╛рд╡рд╛рджреА


рд╡рд╣рд╛рдБ рдЫреЛрдЯреА рдЪреАрдЬреЗрдВ рд╣реИрдВ рдЬреЛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд▓рдЧрднрдЧ рд╕рднреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдкреВрд░реНрдгрддрд╛рд╡рд╛рджреА рд╣реИрдВред рдЪрд▓реЛ рдмрдбрд╝рдмрдбрд╝рд╛рддреЗ рд╣реИрдВред

рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд╛рдЗрдиреЛрдВ рд╕реЗ рднрд░рд╛ рд╣реБрдЖред рдПрдХ рдЙрджрд╛рд╣рд░рдг:
 int XYStage::OnTriggerEndX(MM::PropertyBase* pProp, MM::ActionType eAct){ if (eAct == MM::BeforeGet) { int ret = GetCommandValue("trgse",xChannel_,chx_.trgse_); if (ret!=DEVICE_OK) if (ret!=DEVICE_OK) return ret; ..... } 

рджреВрд╕рд░реА рдЬрд╛рдБрдЪ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрддрд┐рд╢реНрдпреЛрдХреНрддрд┐рдкреВрд░реНрдг рд╣реИред

рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг:
 int AFC::Initialize() { int ret = DEVICE_OK; .... if (ret != DEVICE_OK) return ret; AddAllowedValue("DichroicMirrorIn", "0", 0); AddAllowedValue("DichroicMirrorIn", "1", 1); if (ret != DEVICE_OK) return ret; .... } 

рджреВрд╕рд░рд╛ рдЪреЗрдХ рдлрд┐рд░ рд╕реЗ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рдЪрд░ 'рд░рд┐рдЯ' рдХрд╣реАрдВ рднреА рдирд╣реАрдВ рдмрджрд▓реЗрдЧрд╛ред рджреВрд╕рд░рд╛ рдкрд░реАрдХреНрд╖рдг рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдРрд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдЪреЗрдХ рд╣реИрдВред рдореБрдЭреЗ рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕реВрдЪреА рджреЗрдВ: рдорд╛рдЗрдХреНрд░реЛ-рдкреНрд░рдмрдВрдзрдХ- V571-V649.txt ред

рдЫреЛрдЯреА рдЪреАрдЬреЛрдВ рд╕реЗ, рдХреЛрдИ рднреА рд╕реНрдкреНрд░рд┐рдВрдЯрдл () рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдЧрд▓рдд рдкреНрд░рд╛рд░реВрдк рдиреЛрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдЪрд░ рдХреЛ рдПрдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рдореБрджреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рдмрдбрд╝реЗ рдореВрд▓реНрдпреЛрдВ рдХреА рдЧрд▓рдд рдЫрдкрд╛рдИ рд╣реЛ рд╕рдХрддреА рд╣реИред
 int MP285Ctrl::Initialize() { .... unsigned int nUm2UStepUnit = MP285::Instance()->GetUm2UStep(); .... sprintf(sUm2UStepUnit, "%d", nUm2UStepUnit); .... } 

рдРрд╕реЗ рддреАрди рд╕реНрдерд╛рди рдереЗ:

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


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

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

рдЫреЛрдЯреА рдЯреАрдореЛрдВ рдФрд░ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП, рд╣рдо CppCat рдЯреВрд▓ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рд╡реНрдпрдХреНрддрд┐рдЧрдд рд▓рд╛рдЗрд╕реЗрдВрд╕ - $ 250ред рдирд╡реАрдХрд░рдг - $ 200ред рдХрдИ рд▓рд╛рдЗрд╕реЗрдВрд╕ рдЦрд░реАрджрддреЗ рд╕рдордп - рдЫреВрдЯред

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

рдкреБрдирд╢реНрдЪ


рдЗрд╕ рд▓реЗрдЦ рдХрд╛ рдЕрдиреБрд╡рд╛рдж: " рдж рдпреВрдирд┐рдХреЙрд░реНрди рдЯреНрд░реИрд╡рд▓ рдЯреВ рдж рдорд╛рдЗрдХреНрд░реЛрдХреЙрд╕рдо "ред

рдХреНрдпрд╛ рдЖрдкрдиреЗ рд▓реЗрдЦ рдкрдврд╝рд╛ рд╣реИ рдФрд░ рдПрдХ рдкреНрд░рд╢реНрди рд╣реИ?
рдЕрдХреНрд╕рд░ рд╣рдорд╛рд░реЗ рд▓реЗрдЦреЛрдВ рд╕реЗ рд╡рд╣реА рдкреНрд░рд╢реНрди рдкреВрдЫреЗ рдЬрд╛рддреЗ рд╣реИрдВред рд╣рдордиреЗ рдпрд╣рд╛рдВ рдЙрдирдХреЗ рдЙрддреНрддрд░ рдПрдХрддреНрд░ рдХрд┐рдП рд╣реИрдВ: рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдФрд░ рдХреИрдкреНрдкрдХреИрдЯ, рд╕рдВрд╕реНрдХрд░рдг 2014 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦреЛрдВ рдХреЗ рдкрд╛рдардХреЛрдВ рдХреЗ рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм ред рдХреГрдкрдпрд╛ рд╕реВрдЪреА рджреЗрдЦреЗрдВред

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


All Articles