рд▓рд┐рдмреНрд░реЙ, рдХрд╡рд░рд┐рдЯреА рд╕реНрдХреИрди, рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ

рд▓рд┐рдмреНрд░рд╛ рдФрд░ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ
рдореИрдВрдиреЗ рдХрд╡рд░реЗрдЬ SCAN рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рдЫреЛрдЯреЗ LibRaw рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдкрд░ рдПрдХ рдиреЛрдЯ рдкрдврд╝рд╛ред рдпрд╣ рд▓реЗрдЦ рд╕реЗ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ рдХрд┐ рдХреБрдЫ рднреА рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рдорд┐рд▓рд╛ред рдореИрдВрдиреЗ рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдХреНрдпрд╛ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреБрдЫ рдкрд╛ рд╕рдХрддрд╛ рд╣реИред

LibRaw


LibRaw рдбрд┐рдЬрд┐рдЯрд▓ рдХреИрдорд░реЛрдВ (CRW / CR2, NEF, RAF, DNG рдФрд░ рдЕрдиреНрдп) рд╕реЗ рдкреНрд░рд╛рдкреНрдд RAW рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИред рд╡реЗрдмрд╕рд╛рдЗрдЯ: http://www.libraw.org/

рдХрд╡рд░ рд╕реНрдХреИрди рдХреЗ рд╕рд╛рде рд╕рддреНрдпрд╛рдкрди


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

рдХрд╡рд░реЗрдЬ рд╕реНрдХреИрди: 107 рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдБ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рд▓рдЧрднрдЧ рдПрдХ рддрд┐рд╣рд╛рдИ рдЙрдЪреНрдЪ рдкреНрд░рднрд╛рд╡ рдХреЗ рд╕рд╛рде рд╣реИрдВред

рдЙрдЪреНрдЪ рдкреНрд░рднрд╛рд╡ рд╕реЗ:

Microsoft STL рдореЗрдВ 10 рдЯреБрдХрдбрд╝реЗ рдХрд░реЗрдВ

рдЗрд╕ рддрд░рд╣ рдХреА рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд░рд╛рд╢рд┐:
int variable; if(layout==Layout1) variable=value1; if(layout==Layout2) variable=value2; 

рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рджреА рдЧрдИ рд╣реИ, рд╡реЗ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдХрд╣рддреЗ рд╣реИрдВ, рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЪрд░ рдирд╣реАрдВред рдореИрдВ рд╕рд╛рдорд╛рдиреНрдп рднрд╛рд╡рдирд╛рдУрдВ рдкрд░ рдЙрд╕рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдРрд╕рд╛ рди рдХрд░реЗрдВред рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдореЗрдВ рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓реЗрдЖрдЙрдЯ рд╣реИрдВ - рдФрд░ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХреЙрд▓рд┐рдВрдЧ рдХреЛрдб рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИред рдпрд╛рдиреА рдорд╢реАрди рдХреЗ рдкрд╛рд╕ рдпрд╣ рдорд╣рд╕реВрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдбреЗрдЯрд╛ рд╣реИ рдХрд┐ рдпрд╣ 'рдЙрдЪреНрдЪ рдкреНрд░рднрд╛рд╡' рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд┐рд░реНрдл рдЧрд▓рдд рд╣реИред

рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреА рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрдЦреНрдпрд╛, рдЬреЛ рдмрд┐рдирд╛ рдмрддрд╛рдП рдЫреЛрдЯреА рд╣реЛрдиреЗ рдкрд░ 32-64 рдмрд┐рдЯреНрд╕ рддрдХ рдлреИрд▓ рдЬрд╛рддреА рд╣реИ, рдХрд╛рдЯ рд╕рдХрддреА рд╣реИред рдореИрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рдмрд╣рд╕ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ - рдФрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдорд╢реАрди рд╕рд╣реА рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рддрд╕реНрд╡реАрд░ рдХреЗ рдЖрдпрд╛рдо рдЗрди рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рд╢реЙрд░реНрдЯ рдореЗрдВ рд░рд╣рддреЗ рд╣реИрдВ рдФрд░ рд╡реЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ 32767 рддрдХ рдирд╣реАрдВ рдмрдврд╝реЗрдВрдЧреЗред

рдпрд╛рдиреА рдлрд┐рд░, рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - рдЗрд╕ рд╡рд┐рд╖рдп рдХреНрд╖реЗрддреНрд░ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВред

'рд╣рд╛рдИ рдЗрдореНрдкреИрдХреНрдЯ' рджреНрд╡рд╛рд░рд╛ рдкрд╛рдИ рдЧрдИ рдЕрдиреНрдп рд╕рднреА рд╕рдорд╕реНрдпрд╛рдПрдВ рдХреЗрд╡рд▓ рдЭреВрдареА рд╕рдХрд╛рд░рд╛рддреНрдордХ рд╣реИрдВред рдпрд╛рдиреА рдХреЛрдб, рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ, рдПрдХрджрдо рд╕рд╣реА рдирд╣реАрдВ рд╣реИ (рдЖрдкрдХреЛ рдЗрд╕ рдХреЛрдб рдХреЛ dcraw рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП!), рд▓реЗрдХрд┐рди рдЬреЛ рдХреБрдЫ рднреА рдорд┐рд▓рд╛ рд╣реИ рд╡рд╣ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИред

рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рд╕рд╛рде рдорд╛рдиреНрдпрддрд╛


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

рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдиреЗ 46 рд╕рд╛рдорд╛рдиреНрдп рдЪреЗрддрд╛рд╡рдиреА рд╕рдВрджреЗрд╢ (рдкрд╣рд▓реА рдФрд░ рджреВрд╕рд░реА рдЧрдВрднреАрд░рддрд╛ рд╕реНрддрд░) рдЙрддреНрдкрдиреНрди рдХрд┐рдПред

рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рджреЗрдЦреЗрдВ рдЬреЛ рдореБрдЭреЗ рджрд┐рд▓рдЪрд╕реНрдк рд▓рдЧреЗред

рд╢реБрджреНрдзрд┐рдкрддреНрд░


 void DHT::hide_hots() { .... for (int k = -2; k < 3; k += 2) for (int m = -2; m < 3; m += 2) if (m == 0 && m == 0) continue; else avg += nraw[nr_offset(y + k, x + m)][kc]; .... } 

рдЪреЗрддрд╛рд╡рдиреА PVS-Studio: V501 рдмрд╛рдИрдВ рдФрд░ '&&' рдСрдкрд░реЗрдЯрд░ рдХреЗ рджрд╛рдИрдВ рдУрд░ рд╕рдорд╛рди рдЙрдк-рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ рд╣реИрдВ: m == 0 && m == 0 dht_demosaic.cpp 260

рдЬрд╛рд╣рд┐рд░ рддреМрд░ рдкрд░ рд╣рдо рдПрдХ рдЯрд╛рдЗрдкреЛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдЪреЗрдХ рдЗрд╕ рддрд░рд╣ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:
 if (k == 0 && m == 0) 

Aahd_demosaic.cpp рдлрд╝рд╛рдЗрд▓ (рдкрдВрдХреНрддрд┐ 199) рдореЗрдВ рдПрдХ рд╕рдорд╛рди рдЯреБрдХрдбрд╝рд╛ рднреА рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╕рдВрдЪрд╛рд▓рди


 int main(int argc, char *argv[]) { int ret; .... if( (ret = RawProcessor.open_buffer(iobuffer,st.st_size) != LIBRAW_SUCCESS)) { fprintf(stderr,"Cannot open_buffer %s: %s\n", argv[arg],libraw_strerror(ret)); free(iobuffer); continue; } .... } 

PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V593 'A = B! = C' рдкреНрд░рдХрд╛рд░ рдХреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреА рдЧрдгрдирд╛ рдирд┐рдореНрди рдкреНрд░рдХрд╛рд░ рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИ: 'рдП = (рдмреА! = рд╕реА)'ред dcraw_emu.cpp 468

рдСрдкрд░реЗрд╢рди рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдУрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рддреНрд░реБрдЯрд┐ред рд╢реБрд░реБрдЖрдд рдореЗрдВ, рддреБрд▓рдирд╛ "RawProcessor.open_buffer (iobuffer, st.st.size)! = LIBRAW_SUCCESS" рдХреА рдЬрд╛рддреА рд╣реИред рдлрд┐рд░ рдЗрд╕ рддреБрд▓рдирд╛ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдЪрд░ 'рд░рд┐рдЯ' рдкрд░ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИ, рддреЛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЧрд▓рдд рддреНрд░реБрдЯрд┐ рдХреЛрдб рдореБрджреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдорд╣рддреНрд╡рдкреВрд░реНрдг рджреЛрд╖ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рд▓рд╛рдпрдХ рд╣реИред

рдирдХрд╛рд░рд╛рддреНрдордХ рдкрд╛рд░реА


 unsigned CLASS pana_bits (int nbits) { .... return (buf[byte] | buf[byte+1] << 8) >> (vbits & 7) & ~(-1 << nbits); .... } 

рдЪреЗрддрд╛рд╡рдиреА PVS-Studio: V610 рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ред рд╢рд┐рдлреНрдЯ рдСрдкрд░реЗрдЯрд░ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ <<ред рдмрд╛рдпрд╛рдВ рд╕рдВрдЪрд╛рд▓рдХ '-1' рдЛрдгрд╛рддреНрдордХ рд╣реИред dcraw_common.cpp 1827

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

рдЗрд╕реА рддрд░рд╣ рдХреЗ рдмрджрд▓рд╛рд╡ рдпрд╣рд╛рдВ рджреЗрдЦреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ:

рдЕрдЬреАрдм рдЯреБрдХрдбрд╝реЗ


 void DHT::illustrate_dline(int i) { .... int l = ndir[nr_offset(y, x)] & 8; l >>= 3; l = 1; .... } 

PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V519 'l' рдЪрд░ рдХреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рджреЛ рдмрд╛рд░ рдорд╛рди рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рдЧрд▓рддреА рд╣реИред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 671, 672. dht_demosaic.cpp 672

рд╢рд╛рдпрдж рдпрд╣ рдХреЛрдИ рдЧрд▓рддреА рдирд╣реАрдВ рд╣реИ рдФрд░ "рдПрд▓ = 1" рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреЛрдб рд╕рдВрджрд┐рдЧреНрдз рд▓рдЧ рд░рд╣рд╛ рд╣реИред

рдпрд╣рд╛рдБ рдПрдХ рдФрд░ рд╕рдВрджрд┐рдЧреНрдз рдЬрдЧрд╣ рд╣реИ:
 void CLASS identify() { .... if (!load_raw && (maximum = 0xfff)) .... } 

рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪреЗрддрд╛рд╡рдиреА: V560 рд╕рд╢рд░реНрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣рдореЗрд╢рд╛ рд╕рдЪ рд╣реЛрддрд╛ рд╣реИ: ((imgdata.color.maximum) = 0xfff)ред dcraw_common.cpp 8496

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


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

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


All Articles