
ã¯ããã«
Blenderã¯ãã€ã³ã¿ã©ã¯ãã£ããªã²ãŒã ã®äœæã«ã䜿çšããããé³å£°ä»ãã®ãããªã®ã¢ããªã³ã°ãã¢ãã¡ãŒã·ã§ã³ãã¬ã³ããªã³ã°ãåŸåŠçãç·šéã®ããã®ããŒã«ãå«ãã3次å ã³ã³ãã¥ãŒã¿ãŒã°ã©ãã£ãã¯ã¹ãäœæããããã®ãããã§ãã·ã§ãã«ããã±ãŒãžã§ãã
ãã®ãããžã§ã¯ãã¯ãã§ã«ãã¹ãæžã¿ã§ãã ããŒãžã§ã³2.62ã®æ€èšŒçµæã¯ãèšäºã PVS-Studioã䜿çšããBlenderãããžã§ã¯ãã®æ€èšŒ ãã«èšèŒãããŠããŸãã
æåŸã®ãã§ãã¯ä»¥éãè¿œå ã®ã©ã€ãã©ãªãšãšãã«ãœãŒã¹ã³ãŒãã®ãµã€ãºã77ã¡ã¬ãã€ãã«å¢å ããŸããã ãããŠããã®ããªã¥ãŒã ã¯2206 KLOCãŸã§å¢å ããŸããã ååã®æ€èšŒæããããžã§ã¯ãã®ãµã€ãºã¯68ã¡ã¬ãã€ãïŒ2105 KLOCïŒã§ããã
SourceMonitorãŠãŒãã£ãªãã£ã¯ãã³ãŒãã®éãèšç®ããã®ã«åœ¹ç«ã¡ãŸããã ãã®ãŠãŒãã£ãªãã£ã¯ãC ++ãCãCïŒãVB.NETãJavaãDelphiã®ã³ãŒããåæããããŸããŸãªã¡ããªãã¯ãèšç®ã§ããŸãã ããšãã°ããããžã§ã¯ãã®åŸªç°çãªè€éããå€æããããåãããžã§ã¯ããã¡ã€ã«ã®è©³çŽ°ãªçµ±èšãçæãããã§ããŸãã çµæãè¡šãŸãã¯å³ã®åœ¢åŒã§è¡šç€ºããŸãã
ãããã£ãŠããã®èšäºã§ã¯ãããŒãžã§ã³Blender 2.77aã§èŠã€ãã£ããšã©ãŒãšçãããå Žæã«ã€ããŠèª¬æããŸãã æ€èšŒã«ã¯ãPVS-Studioã¢ãã©ã€ã¶ãŒããŒãžã§ã³6.05ã䜿çšãããŸããã
ã¿ã€ããã¹
ã³ããŒã¡ã«ããºã ãšèªåã³ãŒãè£å®ãç©æ¥µçã«äœ¿çšãããšãããŸããŸãªå€æ°ãå®æ°ã®ååã«ãšã©ãŒãçºçããããšããããããŸãã ãã®ãããªãšã©ãŒã¯ã誀ã£ãèšç®çµæãããã°ã©ã ã®äºæããªãåäœãåŒãèµ·ããå¯èœæ§ããããŸãã Blenderãããžã§ã¯ãã§ãã¢ãã©ã€ã¶ãŒã¯ããã€ãã®äŸãåæã«èŠã€ããŸããã ãããã詳现ã«æ€èšããŸãããã
æ¡ä»¶ã®ã¿ã€ããã¹
CurvePoint::CurvePoint(CurvePoint *iA, CurvePoint *iB, float t3) { .... if ((iA->getPoint2D() - //<= iA->getPoint2D()).norm() < 1.0e-6) { //<= .... } .... }
V501 '-'æŒç®åã®å·Šå³ã«åãå¯æ¬¡åŒããããŸãïŒiA-> getPoint2DïŒïŒ-iA-> getPoint2DïŒïŒcurve.cpp 136
CurvePointé¢æ°å ã§ã¯ãåãååã®2ã€ã®ãªããžã§ã¯ãã iAãšiBãæ©èœããŸãã ãããã®ãªããžã§ã¯ãã®ããŸããŸãªã¡ãœããã¯ãããªãé·ãæ¡ä»¶ããªãŒã®ããŸããŸãªæäœã§åžžã«äº€å·®ããŠããŸãã æ¡ä»¶ãããã¯ã®1ã€ã§ã¯ãã¿ã€ããã¹ãèš±å¯ãããŠããŸãã ãã®çµæãåããªããžã§ã¯ãã®ããããã£éã§æžç®æŒç®ãè¡ãããŸãã ã³ãŒãã®æ©èœãç¥ããªããšã2ã€ã®ãªãã©ã³ãã®ã©ã¡ãã§ãšã©ãŒãçºçããããæ£ç¢ºã«èšãããšã¯ã§ããŸããã ç§ã¯ãã®ä¿®æ£ã®ããã«2ã€ã®å¯èœãªãªãã·ã§ã³ãææ¡ããŸãïŒ
if ((iA->getPoint2D()-iB->getPoint2D()).norm()<1.0e-6)....
ãŸãã¯
if ((iB->getPoint2D()-iA->getPoint2D()).norm()<1.0e-6)....
次ã®ãšã©ãŒãæ¡ä»¶ã¹ããŒãã¡ã³ãå ã«é ããŠããŸãã
template<typename MatrixType, int QRPreconditioner> void JacobiSVD<MatrixType, QRPreconditioner>::allocate(....) { .... if(m_cols>m_rows)m_qr_precond_morecols.allocate(*this); if(m_rows>m_cols)m_qr_precond_morerows.allocate(*this); if(m_cols!=m_cols)m_scaledMatrix.resize(rows,cols); //<= }
V501 'ïŒ='æŒç®åã®å·Šå³ã«åäžã®å¯æ¬¡åŒããããŸãïŒm_colsïŒ= M_cols jacobisvd.h 819
ç¹å®ã®ã³ãŒããã©ã°ã¡ã³ãã§ã¯ãç¹å®ã®ãããªãã¯ã¹å ã®è¡ãšåã®æ°ã®æ¹çšåŒãçºçããŸãã ãã®æ°ãçãããªãå Žåãã¡ã¢ãªã¯æ°ããèŠçŽ ãŸãã¯ãã®äœæã«å²ãåœãŠãããŸãã ãããŠãæ°ããã»ã«ãè¿œå ãããå Žåããããªãã¯ã¹ã®ãµã€ãºãå€æŽããæäœãçºçããŸãã ãã ããæ¡ä»¶æŒç®åã®åŒã®ãšã©ãŒã®çµæãæ¡ä»¶m_colsïŒ= M_colsã¯åžžã«falseã§ãããããæäœã¯çºçããŸããã ãã®å ŽåãåŒã®2ã€ã®éšåã®ã©ã¡ããå€æŽããå¿ èŠããããã¯é¢ä¿ãªãããããã®ãªãã·ã§ã³ãææ¡ããŸãã
if(m_cols!=m_rows) m_scaledMatrix.resize(rows,cols)
V501蚺æã§æ€åºãããããã€ãã®åé¡é åïŒ
- V501ã==ãæŒç®åã®å·Šå³ã«åãå¯æ¬¡åŒããããŸããleft.rowsïŒïŒ== left.rowsïŒïŒnumeric.cc 112
- V501 '>'æŒç®åã®å·Šå³ã«åãéšååŒããããŸãïŒïŒfrom [0] [3]ïŒ>ïŒfrom [0] [3]ïŒstereoimbuf.c 120
- V501 '>'æŒç®åã®å·Šå³ã«åãéšååŒããããŸãïŒïŒfrom [0] [3]ïŒ>ïŒfrom [0] [3]ïŒstereoimbuf.c 157
- V501 '=='æŒç®åã®å·Šå³ã«åãå¯æ¬¡åŒããããŸããout-> y == out-> y filter.c 209
ãã«ãã€ã³ã¿ãŒæäœ
ããã§ãååã®ã¿ã€ããã¹ã¯ãããæ·±å»ãªééãã«ã€ãªãããŸããã
int QuantitativeInvisibilityF1D::operator()(....) { ViewEdge *ve = dynamic_cast<ViewEdge*>(&inter); if (ve) { result = ve->qi(); return 0; } FEdge *fe = dynamic_cast<FEdge*>(&inter); if (fe) { result = ve->qi(); //<= return 0; } .... }
V522 NULLãã€ã³ã¿ãŒãveãã®éåç §ãè¡ãããå ŽåããããŸãã functions1d.cpp 107
äžèšã®é¢æ°ã¯éåžžã«çãã§ãããåçŽãªé¢æ°ã§ãã£ãŠãã¿ã€ããã¹ã¯ç§ãã¡ãåŸ ã£ãŠããŸãã ã³ãŒãããã2ã€ã®ãªããžã§ã¯ããé çªã«äœæããã³æ€èšŒãããããšãããããŸãã ãããã2çªç®ã®ãªããžã§ã¯ãããã§ãã¯ããåŸããšã©ãŒãçºçãã feãæ£åžžã«äœæãããå Žåããã®ä»£ããã«ãæåã®ãªããžã§ã¯ãããã®é¢æ°ã®çµæãçµæã«æžã蟌ãŸããŸãã ããã«ãããäŸå€ãé«ã¬ãã«ã®ãã³ãã©ããã£ããããªãå Žåãããã°ã©ã ãã¯ã©ãã·ã¥ããå¯èœæ§ãé«ããªããŸãã
ã©ããã2çªç®ã®ã³ãŒãã¯Copy-Pasteã䜿çšããŠæžãããããã§ãã ãããŠå¶ç¶ã«ãã圌ãã¯å€æ°veã®ååãå€æŽããã®ãå¿ããŠããŸããã ã»ãšãã©ã®å Žåãæ£ããã³ãŒãã¯æ¬¡ã®ããã«ãªã£ãŠããã¯ãã§ãã
FEdge *fe = dynamic_cast<FEdge*>(&inter); if (fe) { result = fe->qi(); return 0; }
NULLãã€ã³ã¿ãŒã䜿çšãã
static ImBuf *accessor_get_ibuf(....) { ImBuf *ibuf, *orig_ibuf, *final_ibuf; .... /* First try to get fully processed image from the cache. */ ibuf = accesscache_get(accessor, clip_index, frame, input_mode, downscale, transform_key); if (ibuf != NULL) { return ibuf; } /* And now we do postprocessing of the original frame. */ orig_ibuf = accessor_get_preprocessed_ibuf(accessor, clip_index, frame); if (orig_ibuf == NULL) { return NULL; } .... if (downscale > 0) { if (final_ibuf == orig_ibuf) { final_ibuf = IMB_dupImBuf(orig_ibuf); } IMB_scaleImBuf(final_ibuf, ibuf->x / (1 << downscale), //<= ibuf->y / (1 << downscale)); //<= } .... if (input_mode == LIBMV_IMAGE_MODE_RGBA) { BLI_assert(ibuf->channels == 3 || //<= ibuf->channels == 4); //<= } .... return final_ibuf; }
èŠåïŒ
- V522 NULLãã€ã³ã¿ãŒãibufãã®éåç §ãè¡ãããå ŽåããããŸãã tracking_util.c 765
- V522 NULLãã€ã³ã¿ãŒãibufãã®éåç §ãè¡ãããå ŽåããããŸãã tracking_util.c 766
- V522 NULLãã€ã³ã¿ãŒãibufãã®éåç §ãè¡ãããå ŽåããããŸãã tracking_util.c 783
äžèšã®ã¹ããããã¯ããªããžã§ã¯ããäœæãããå Žåã ibufå€æ°ããã§ãã¯ãããšããã®å€æ°ã䜿çšãããããããã£ãšæ©ãé¢æ°ãçµäºããããšã瀺ããŠããŸãã ããããããã«ããããã€ã³ã¿ãŒã®éåç §ã®äºå®ãåæ¢ããã³ç¢ºèªãããå¯èœæ§ããããŸãã ãã ããã³ãŒããšãã®ã³ã¡ã³ãã詳ããèŠããšããšã©ãŒã®æ¬åœã®åå ãæããã«ãªããŸãã å®éãããã§ãã¿ã€ããã¹ãèš±å¯ãããŠããŸãã ã¢ãã©ã€ã¶ãŒã«ãã£ãŠç€ºãããå Žæã§ã¯ãå®éã«ã¯ibufã®ä»£ããã«orig_ibufå€æ°ã䜿çšãããŠããã¯ãã§ãã
ç¡å¹ãªå€æ°ã¿ã€ã
typedef enum eOutlinerIdOpTypes { OUTLINER_IDOP_INVALID = 0, OUTLINER_IDOP_UNLINK, OUTLINER_IDOP_LOCAL, .... } eOutlinerIdOpTypes; typedef enum eOutlinerLibOpTypes { OL_LIB_INVALID = 0, OL_LIB_RENAME, OL_LIB_DELETE, } eOutlinerLibOpTypes; static int outliner_lib_operation_exec(....) { .... eOutlinerIdOpTypes event; //<= .... event = RNA_enum_get(op->ptr, "type"); switch (event) { case OL_LIB_RENAME: //<= { .... } case OL_LIB_DELETE: //<= { .... } default: /* invalid - unhandled */ break; } .... }
èŠåïŒ
- V556ç°ãªãåæåã®å€ãæ¯èŒãããŸãïŒswitchïŒENUM_TYPE_AïŒ{case ENUM_TYPE_BïŒ...}ã outliner_tools.c 1286
- V556ç°ãªãåæåã®å€ãæ¯èŒãããŸãïŒswitchïŒENUM_TYPE_AïŒ{case ENUM_TYPE_BïŒ...}ã outliner_tools.c 1295
ãã®äŸã¯ãåæã§ãã2ã€ã®ã¿ã€ãã瀺ããŠããŸãã ãããŠãåã§ã³ãŒããæžããšãã«ã¿ã€ããã¹ãè¡ããããšããäºå®ã¯ãååã§ã»ãšãã©åºå¥ã§ããªããã®ãããªåã«å¯ŸããŠã¯éåžžã«æåŸ ãããŠããŸãã
å®éãã³ãŒãã¯æ£ããæ©èœããŸãã ãããåæã«ã圌ã¯åã®äžäžèŽã«æããããŠããŸãã å€æ°ã¯ãããåæã®å€ãååŸããå¥ã®åæã®å®æ°ãšæ¯èŒãããŸãã ãã®å Žåã®ãšã©ãŒãä¿®æ£ããã«ã¯ã ã€ãã³ã å€æ°ã®ã¿ã€ããeOutlinerLibOpTypesã«å€æŽããã ãã§ååã§ã ã
æäœåªå ãšã©ãŒ
static void blf_font_draw_buffer_ex(....) { .... cbuf[3] = (unsigned char)((alphatest = ((int)cbuf[3] + (int)(a * 255)) < 255) ? alphatest : 255); .... }
V593 ãA = B <Cãã®çš®é¡ã®è¡šçŸãèŠçŽãããšãæ€èšããŠãã ããã åŒã¯æ¬¡ã®ããã«èšç®ãããŸãïŒ 'A =ïŒB <CïŒ'ã blf_font.c 414
è€éãªåŒãæäœããå Žåãæäœã®åªå é äœã®éåã¯ãæãäžè¬çãªãšã©ãŒã®1ã€ã§ãã ãã®å Žåãããã¯åãªãã¿ã€ããã¹ã§ãããäžé æŒç®åã®ããžãã¯ã«éåããããšã«ãªããŸããã ç¡å¹ãªæ¬åŒ§ãåå ã§æäœã®åªå é äœãšã©ãŒãçºçããŸããã ããã«ã alphatestå€æ°ã®å€ãç ŽæããŠããŸã ã äžé æŒç®åãèšç®ããå€ã®ä»£ããã«ã alphatestå€æ°ã«ã¯ ãæ¯èŒæŒç®ã®çµæãšããŠååŸãããããŒã«åã®å€ïŒ<ïŒ ãå²ãåœãŠãããŸãã ãã®åŸãäžé æŒç®åã¯alphatestå€æ°ã®å€ãåŠçãããã®çµæã¯ä¿åãããŸããã ãšã©ãŒãä¿®æ£ããã«ã¯ã次ã®ããã«åŒãå€æŽããå¿ èŠããããŸãã
cbuf[3] = (unsigned char)(alphatest = (((int)cbuf[3] + (int)(a * 255)) < 255) ? alphatest : 255);
å®æ°ã®ãšã©ãŒ
bool BKE_ffmpeg_alpha_channel_is_supported(RenderData *rd) { int codec = rd->ffcodecdata.codec; if (codec == AV_CODEC_ID_QTRLE) return true; if (codec == AV_CODEC_ID_PNG) return true; if (codec == AV_CODEC_ID_PNG) return true; .... }
V649åäžã®æ¡ä»¶åŒãæã€2ã€ã®ãifãã¹ããŒãã¡ã³ãããããŸãã æåã®ãifãã¹ããŒãã¡ã³ãã«ã¯ãé¢æ°ã®æ»ãå€ãå«ãŸããŸãã ããã¯ã2çªç®ã®ãifãã¹ããŒãã¡ã³ããç¡æå³ã§ããããšãæå³ããŸãã è¡ã確èªããŠãã ããïŒ1672ã1675ãwriteffmpeg.c 1675
ãã®é¢æ°ã¯ãåäžè¡æ¡ä»¶ã䜿çšããŠããã©ã°ã®é å®ã«ã€ããŠå€æ°ã®å€ãé çªã«ãã§ãã¯ããŸãã ã¿ã€ããã¹ã®çµæããã©ã°ã®1ã€ã2åãã§ãã¯ãããŸãã 確ãã«ãåãã§ãã¯ãã代ããã«ãå¥ã®å®æ°ããã§ãã¯ããå¿ èŠããããŸãã ãããããããã®å®æ°ã«ã¯å€ãã®ãªãã·ã§ã³ãããããããã®ã³ãŒããä¿®æ£ããæ¹æ³ãæ£ç¢ºã«æšæž¬ããããšã¯ã§ããŸããã
å€åŽã®ãã¹ããããã«ãŒãã§åäžã®å€æ°ã䜿çšãã
bool BM_face_exists_overlap_subset(...., const int len) { int i; .... for (i = 0; i < len; i++) { BM_ITER_ELEM (f, &viter, varr[i], BM_FACES_OF_VERT) { if ((f->len <= len) && (....)) { BMLoop *l_iter, *l_first; if (is_init == false) { is_init = true; for (i = 0; i < len; i++) { //<= BM_ELEM_API_FLAG_ENABLE(varr[i], _FLAG_OVERLAP); } } .... } } } }
V535å€æ° 'i'ã¯ããã®ã«ãŒããšå€åŽã®ã«ãŒãã«äœ¿çšãããŠããŸãã è¡ã確èªããŠãã ããïŒ2204ã2212ãbmesh_queries.c 2212
å€åŽã®ãã¹ããããã«ãŒãã§åãå€æ°ã䜿çšãããšãå€åŽã®ã«ãŒãã誀ã£ãŠå®è¡ãããå¯èœæ§ããããŸãã ãã®å Žåããµã€ã¯ã«ã¯æããã«ç®çã®èŠçŽ ãæ€çŽ¢ããŠçµäºãããããããã¯ãšã©ãŒã§ã¯ãªãå¯èœæ§ãé«ãã2çªç®ã®ãµã€ã¯ã«ã¯ãã®å Žåã«ã®ã¿æ©èœããŸãã ããã§ããåäžã®å€æ°ã䜿çšããããšã¯å±éºãªå Žæã§ããããã®ã³ãŒããæé©åããå¿ èŠãããå Žåãå®éã®ãšã©ãŒã«ã€ãªããå¯èœæ§ããããŸãã
åé·ã³ãŒã
äœåãªã³ãŒããã©ã°ã¡ã³ãã¯ãã©ã®ããã°ã©ã ã«ããããŸãã ããã¯ããªãã¡ã¯ã¿ãªã³ã°ã§æ®ãããå€ãã³ãŒãã§ããå ŽåããããŸãã ãããŠãäœåãªãã©ã°ã¡ã³ãããããžã§ã¯ãã³ãŒãã®ã¹ã¿ã€ã«ãç¶æããã®ã«åœ¹ç«ã€ããšããããŸãã ã³ãŒãã®ãã®ãããªéšåã¯å±éºãªå ŽåããããŸãã èšãæããã°ãéè€ã³ãŒãã¯ãã°ãã°è«çãšã©ãŒã瀺ããŸãã
å確èª
static void knife_add_single_cut(....) { .... if ((lh1->v && lh2->v) && //<= (lh1->v->v && lh2->v && lh2->v->v) && //<= (e_base = BM_edge_exists(lh1->v->v, lh2->v->v))) { .... return; } .... }
V501 ã&&ãæŒç®åã®å·Šãšå³ã«åãå¯æ¬¡åŒãlh2-> vãããããŸãã editmesh_knife.c 781
ããã¯ãæããããªãç¶æ ã®ãªãã·ã§ã³ã®1ã€ã§ãã ãã¡ãããããã¯ééãã§ã¯ãªããè¿œå ã®ãã§ãã¯ã§ãããã³ãŒããå€æŽããå¿ èŠããªããšããæå³ã§ã¯ãããŸããã æ¡ä»¶ã¯è€æ°ã®åŒã§æ§æãããŸãã ãã®å Žåã2çªç®ã®åŒã®äžéšã¯ãæåã®åŒã®å€æ°ã®1ã€ããã§ãã¯ããããšã«å®å šã«å¯Ÿå¿ããäžèŠã§ãã ä¿®æ£ããã«ã¯ã2çªç®ã®åŒããäœåãªãã§ãã¯lh2-> vãåé€ããå¿ èŠããããŸãã ãã®åŸãã³ãŒãã¯ããæ確ã«ãªããŸãã
å¥ã®äŸïŒ
static int edbm_rip_invoke__vert(....) { .... if (do_fill) { if (do_fill) { .... } } .... }
V571å®æçãªãã§ãã¯ã ãifïŒdo_fillïŒãæ¡ä»¶ã¯ã751è¡ç®ã§æ¢ã«æ€èšŒãããŠããŸããeditmesh_rip.c 752
å¥ã®è«çãšã©ãŒã ããã§ã¯ãå€éšæ¡ä»¶ãšãã¹ããããæ¡ä»¶å ã§ã2ã€ã®å®å šã«åäžã®åŒããã§ãã¯ãããŸãã æ€èšŒãç¹°ãè¿ããŠãåžžã«åãçµæãåŸãããæå³ããããŸããã ãã¡ããããã®ã³ãŒãã¯ããã°ã©ã ã®åäœã«ã¯åœ±é¿ããŸããã ããããã³ãŒããæéãšãšãã«ã©ã®ããã«å€åãããã¯äžæã§ãããäžå¿ èŠãªãã§ãã¯ã¯æ··ä¹±ãæãå¯èœæ§ããããŸãã
ãããžã§ã¯ãã®1ãæã§éå°ãªãã§ãã¯ã¯èŠã€ãããŸããã ã¢ãã©ã€ã¶ãŒã«ãã£ãŠæ€åºãããå Žæãããã«ããã€ããããŸãã
- V571å®æçãªãã§ãã¯ã ãbutãæ¡ä»¶ã¯ãè¡9587ã§ãã§ã«æ€èšŒãããŠããŸããinterface_handlers.c 9590
- V571å®æçãªãã§ãã¯ã 'ïŒMe-> mloopcol'æ¡ä»¶ã¯ã252è¡ç®ã§æ¢ã«æ€èšŒãããŠããŸããpaint_vertex.c 253
- V571å®æçãªãã§ãã¯ã ãconstinv == 0ãæ¡ä»¶ã¯ã5256è¡ç®ã§æ¢ã«æ€èšŒãããŠããŸããtransform_conversions.c 5257
- V571å®æçãªãã§ãã¯ã ãvlr-> v4ãæ¡ä»¶ã¯ã4174è¡ç®ã§æ¢ã«æ€èšŒãããŠããŸããconvertblender.c 4176
- V571å®æçãªãã§ãã¯ã 'ibuf ==ïŒïŒvoid *ïŒ0ïŒ'æ¡ä»¶ã¯3557è¡ç®ã§æ¢ã«æ€èšŒãããŠããŸããsequencer.c 3559
3çªç®ã®äŸã¯ãæ瀺çãªåé·ã³ãŒãã§ãã
static void writedata_do_write(....) { if ((wd == NULL) || wd->error || (mem == NULL) || memlen < 1) return; if (wd->error) return; .... }
V649åäžã®æ¡ä»¶åŒãæã€2ã€ã®ãifãã¹ããŒãã¡ã³ãããããŸãã æåã®ãifãã¹ããŒãã¡ã³ãã«ã¯ãé¢æ°ã®æ»ãå€ãå«ãŸããŸãã ããã¯ã2çªç®ã®ãifãã¹ããŒãã¡ã³ããç¡æå³ã§ããããšãæå³ããŸãã è¡ã確èªïŒ331ã332ãwritefile.c 332
ifïŒwd-> errorïŒreturn; ãã äœåã§ããããã®æ¡ä»¶ãåŠçãããåã«é¢æ°ã¯çµäºããŸãã ãããã£ãŠãåã«åé€ããå¿ èŠããããŸãã
æ¡ä»¶ãããã¯ã®å察åŽ
static int select_less_exec(....) { .... if ((lastsel==0)&&(bp->hide==0)&&(bp->f1 & SELECT)){ if (lastsel != 0) sel = 1; else sel = 0; .... } .... }
V637å察ã®2ã€ã®æ¡ä»¶ãçºçããŸããã 2çªç®ã®æ¡ä»¶ã¯åžžã«falseã§ãã è¡ããã§ãã¯ïŒ938ã939ãeditcurve_select.c 938
ãã©ã°ã¡ã³ããããè¿œå ã®æ¡ä»¶ãå€éšæ¡ä»¶ãããã¯å ã«ããããšã¯äºå®ã§ãã ãã¹ããããæ¡ä»¶ã¯ã¡ã€ã³æ¡ä»¶ã®å察ã§ãããåžžã«åãçµæãçæãã selå€æ°ã¯å€1ãååŸããŸããã ãããã£ãŠãåãã§ãã¯ããã«sel = 0ã«èšå®ããã ãã§ååã§ãã ãã ããããããã®æ¡ä»¶ãå€æŽããããšã«ããããããããšã©ãŒãä¿®æ£ããå¿ èŠããããŸãã ç§ã¯ãããžã§ã¯ãã®éçºã«åå ããŠããŸãããäœãèµ·ãã£ãŠããã®ããå€æããã®ã¯å°é£ã§ãã
åé·è¡šçŸ
DerivedMesh *fluidsimModifier_do(....) { .... if (!fluidmd || (fluidmd && !fluidmd->fss)) return dm; .... }
V728éå°ãªãã§ãã¯ãç°¡çŽ åã§ããŸãã ã||ã æŒç®åã¯ãå察ã®è¡šçŸãïŒfluidmdããšãfluidmdãã«å²ãŸããŠããŸãã mod_fluidsim_util.c 528
1ã€ã®æ¡ä»¶ã®ãã¬ãŒã ã¯ãŒã¯å ã§ãåãå€æ°ã®å察ã®å€ããã§ãã¯ãããŸãã ãã®ãããªç¶æ ã¯ããã°ãã°ããŸããŸãªåœ¢ãããªãšãŒã·ã§ã³ã§èŠãããŸãã ããã°ã©ã ã«å®³ãäžããããšã¯ãããŸããããã³ãŒããç¡é§ã«è€éã«ããŸãã ãã®åŒã¯ã次ã®åœ¢åŒã«ç°¡ç¥åããã³çž®å°ã§ããŸãã
if (!fluidmd || !fluidmd->fss)) ....
åæ§ã®å ŽæïŒ
- V728éå°ãªãã§ãã¯ãç°¡çŽ åã§ããŸãã ã||ã æŒç®åã¯å察ã®åŒãïŒrender_onlyããšãrender_onlyãã«å²ãŸããŠããŸãã drawobject.c 4663
- V728éå°ãªãã§ãã¯ãç°¡çŽ åã§ããŸãã ã||ã æŒç®åã¯å察ã®åŒ 'ïŒparent'ãš 'parent'ã«å²ãŸããŠããŸãã kx_scene.cpp 1667
ãã®æ¡ä»¶ã®å¥ã®ãªãã·ã§ã³ïŒ
void ED_transverts_create_from_obedit(....) { .... if ((tipsel && rootsel) || (rootsel)) {....} .... }
V686ãã¿ãŒã³ãæ€åºãããŸããïŒïŒrootselïŒ|| ïŒïŒã«ãŒãã»ã«ïŒ&& ...ïŒã åŒãéå°ã§ããããè«çãšã©ãŒãå«ãŸããŠããŸãã ed_transverts.c 325
äžèšã®äŸã®ããã«ãåãåŒå ã§åãå€æ°ã2åãã§ãã¯ãããŸãã ãã®ãããªè¡šçŸã¯èª€ãã§ã¯ãããŸããããäžå¿ èŠãªæ€èšŒã§æããã«éè² è·ã«ãªããŸãã ã³ãŒããããã³ã³ãã¯ãã§æ確ã«ããããã«ã¯ãã³ãŒããåçŽåããå¿ èŠããããŸãã
if ((tipsel || rootsel) {....}
ãããžã§ã¯ãã®ä»ã®å Žæã§ãåæ§ã®ãšã©ãŒãèŠã€ãããŸããã
- V686ãã¿ãŒã³ãæ€åºãããŸããïŒïŒïŒPy_b_lenïŒ|| ïŒïŒïŒpy_b_lenïŒ&& ...ïŒã åŒãéå°ã§ããããè«çãšã©ãŒãå«ãŸããŠããŸãã aud_pyapi.cpp 864
- V686ãã¿ãŒã³ãæ€åºãããŸããïŒïŒxn == 0.0fïŒ|| ïŒïŒxn == 0.0fïŒ&& ...ïŒã åŒãéå°ã§ããããè«çãšã©ãŒãå«ãŸããŠããŸãã renderdatabase.c 993
- V686ãã¿ãŒã³ãæ€åºãããŸããïŒïŒxn == 0.0fïŒ|| ïŒïŒxn == 0.0fïŒ&& ...ïŒã åŒãéå°ã§ããããè«çãšã©ãŒãå«ãŸããŠããŸãã renderdatabase.c 1115
åå²ãåœãŠ
static bool find_prev_next_keyframes(....) { .... do { aknext = (ActKeyColumn *)BLI_dlrbTree_search_next( &keys, compare_ak_cfraPtr, &cfranext); if (aknext) { if (CFRA == (int)aknext->cfra) { cfranext = aknext->cfra; //<- } else { if (++nextcount == U.view_frame_keyframes) donenext = true; } cfranext = aknext->cfra; //<- } } while ((aknext != NULL) && (donenext == false)); .... }
V519 ãcfranextãå€æ°ã«ã¯ãé£ç¶ããŠ2åå€ãå²ãåœãŠãããŸãã ããããããã¯ééãã§ãã è¡ã確èªããŠãã ããïŒ447ã454ãanim_draw.c 454
æ¡ä»¶ãããã¯å ã§ã®å²ãåœãŠã¯ããã®å€ãæ¡ä»¶ãªãã§ã«ãŒãã®æåŸã«åã³å²ãåœãŠããããããæå³ããããŸããã äœåãªè¡ãæ£ç¢ºã«äžçªäžã«ãããšçµè«ä»ããããšã¯ãç¹å®ã®ãã©ã°ã¡ã³ãã®åŸã®ã³ãŒãã«ããã«ãŒããå©ããŸãã prevå€æ°ãšæ¡ä»¶ã«ãã®è¡ããªãããšã®ã¿ãç°ãªããŸãã ããã«ãäžããã®äœåãªè¡ãšæ¡ä»¶CFRA ==ïŒintïŒaknext-> cfraãåœã§ãããšä»®å®ãããšããµã€ã¯ã«ã¯ç¡éã«å€ãããŸãã ãã®ãã©ã°ã¡ã³ãã¯æããã«èª¿æŽããå¿ èŠããããŸããããããžã§ã¯ãéçºè ã®ã¿ããããå€æŽããæ¹æ³ãç¥ã£ãŠããŸãã
è¿œå ãŸãã¯æªäœ¿çšã®å€æ°
å€æ°ãåæåãããŠããããçµæãšããŠäœ¿çšãããŠããªãåæ§ã®ãã©ã°ã¡ã³ããå€æ°ãããŸãã ãããã®ããã€ãã¯ãè«çãšã©ãŒãšéå°ãªåãã§ãã¯ã®äŸã«é¢é£ããŠããŸã;åæ§ã®æçã¯ãã§ã«äœåºŠãèšåãããŠããŸãã å®æ°ããããŸããããããã¯ããããé¢æ°å ã§å€æŽãããã¯ãã§ãã ããããæçµçã«ããããã¯ãã§ãã¯ã®åœ¢ã§ã®ã¿æ®ããåžžã«åãçµæãè¿ããŸããã åæ§ã®ãã©ã°ã¡ã³ãã®äŸïŒ
static int rule_avoid_collision(....) { .... int n, neighbors = 0, nearest = 0; //<= .... if (ptn && nearest==0) //<= MEM_freeN(ptn); return ret; }
V560æ¡ä»¶åŒã®äžéšã¯åžžã«çã§ãïŒæãè¿ã==0ãboids.c 361
æ®ãã®ãã©ã°ã¡ã³ãã«ã€ããŠã¯ããªã¹ãã瀺ããŸãã ãããããããã®å€ãã¯è°è«ã®äœå°ããããã泚æãæã䟡å€ãããã
- V560æ¡ä»¶åŒã®äžéšã¯åžžã«trueã§ãïŒedit ==0ãparticle.c 3781
- V560æ¡ä»¶åŒã®äžéšã¯åžžã«true :!ãšã©ãŒã§ãã pointcache.c 154
- V560æ¡ä»¶åŒã®äžéšã¯åžžã«true :!ãšã©ãŒã§ãã pointcache.c 2742
- V560æ¡ä»¶åŒã®äžéšã¯åžžã«falseã§ãïŒcolã drawobject.c 7803
- V560æ¡ä»¶åŒã®äžéšã¯åžžã«false :! Canvas_vertsã§ãã dynamicpaint.c 4636
- V560æ¡ä»¶åŒã®äžéšã¯åžžã«çã§ãïŒïŒïŒãªãŒãïŒã octree.cpp 2513
- V560æ¡ä»¶åŒã®äžéšã¯åžžã«çã§ãïŒïŒïŒãªãŒãïŒã octree.cpp 2710
- V560æ¡ä»¶åŒã®äžéšã¯åžžã«falseã§ãïŒïŒ1 == iïŒã basicstrokeshaders.cpp 67
- V560æ¡ä»¶åŒã®äžéšã¯åžžã«çã§ãïŒïŒ0 == iïŒã basicstrokeshaders.cpp 69
- V560æ¡ä»¶åŒã®äžéšã¯åžžã«falseã§ãïŒïŒ1 == iïŒã basicstrokeshaders.cpp 84
- V560æ¡ä»¶åŒã®äžéšã¯åžžã«çã§ãïŒïŒ0 == iïŒã basicstrokeshaders.cpp 86
- V560æ¡ä»¶åŒã®äžéšã¯åžžã«falseã§ãïŒïŒ1 == iïŒã basicstrokeshaders.cpp 155
- V560æ¡ä»¶åŒã®äžéšã¯åžžã«çã§ãïŒïŒ0 == iïŒã basicstrokeshaders.cpp 157
- V560æ¡ä»¶åŒã®äžéšã¯åžžã«çã§ãïŒïŒïŒRadmodïŒã solver_control.cpp 557
- V560æ¡ä»¶åŒã®äžéšã¯åžžã«çã§ãïŒdoneïŒ= 1. context.c 301
- V560æ¡ä»¶åŒã®äžéšã¯åžžã«trueã§ãïŒis_tablet == falseã ghost_systemwin32.cpp 665
- V560æ¡ä»¶åŒã®äžéšã¯åžžã«çã§ãïŒmesh> =0ãkx_gameobject.cpp 976
äžèŠãªãªã¹ãã¯ãªãŒãã³ã°
int TileManager::gen_tiles(bool sliced) { .... state.tiles.clear(); //<= .... int tile_index = 0; state.tiles.clear(); state.tiles.resize(num); .... }
V586åããªãœãŒã¹ã®å²ãæ¯ã解é€ã®ããã«ããã¯ãªã¢ãæ©èœã2ååŒã³åºãããŸãã è¡ã確èªïŒ149ã156ãtile.cpp 156
ãã®å Žåãããã¯åãªãäœåãªè¡ãããããŸããã ããããããªã¹ãã®2ã€ã®ã¯ãªãŒã³ã¢ããã®åã«ã¯ãŸã äœããã®ã³ãŒãããããŸãããããã®å Žåã¯å¥ã®äœåãªéšåã§ãããã³ãŒããä¹±éã«ãªããªãããã«åé€ããå¿ èŠããããŸãã ãã®è¡ã¯ãã³ãŒãã®å€§ãŸããªæ€æ»äžã«è¡šç€ºãããªãã£ãä»ã®ãªããžã§ã¯ãããã®è¡ã§ã¯ãªã¢ãããŠããã¯ãã§ãããšããäºå®ã®çµæã§ããå ŽåããããŸãã ãã®å Žåããã©ã°ã¡ã³ãã¯æãããªééããšãªããããã°ã©ã ã«æªç¥ã®çµæãããããå¯èœæ§ããããŸãã
éåžžã«é »ç¹ã«ããã®äžèŠåé·ãªã³ãŒãã¯ãæ¬åœã«é倧ãªãšã©ãŒãåŒãèµ·ãããããã³ãŒããæçµåããéã«å°æ¥ãã®å€èŠ³ãåé¿ããã®ã«åœ¹ç«ã¡ãŸãã ãã®ããããã®ãããªã¢ãã©ã€ã¶ãŒã¡ãã»ãŒãžã«æ³šæãæã䟡å€ããããããããéèŠã§ãªããã®ãšããŠç¡èŠããããšã¯ã§ããŸããã
é°è¬
PVS-StudioããŒã ã¯çŸåšãæ°ããæ¹åã«ç©æ¥µçã«åãçµãã§ããŸãã ãããŠãç§ã¯åŸéšãã«ããŒããããã€ãã®éããŠãããããžã§ã¯ãã®åãã§ãã¯ã«é¢ããèšäºã§æ å ±ãã£ãŒã«ããåããŸãã ãã®æ¹åã¯äœã§ããïŒ ç§ã«ã¯èšããŸããã 誰ããèªåã®ããæ¹ã§èªç±ã«è§£éã§ãããšããåçãæ®ããŠããŸãã

ãããã«
ã¢ãã©ã€ã¶ãŒã¯ããããžã§ã¯ãå ã®å€ãã®åé¡é åã瀺ããŸããã ãã ããBlenderã¯å¥åŠãªã³ãŒãã¹ã¿ã€ã«ã䜿çšããããšãããããšã©ãŒãªã©ã®ãã©ã°ã¡ã³ããæ£ç¢ºã«è§£éã§ããŸããã 誀åãåå ã§å±éºãªãšã©ãŒãçºçããããšããããããŸãã PVS-Studioã¢ãã©ã€ã¶ãŒã¯ãããããèŠã€ããã®ã«é©ããŠããŸãã ããããèšäºã«åæ ãããŠãããšã©ãŒã¯ãåã«èè ã®æèŠã§ãããéåžžã«äž»èŠ³çã§ãã ãŸããã¢ãã©ã€ã¶ã®æ©èœãå®å šã«è©äŸ¡ããã«ã¯ãããŠã³ããŒãããŠè©ŠããŠã¿ã䟡å€ããããŸãã
è±èªã話ãèŽè¡ãšãã®èšäºãå ±æãããå Žåã¯ã翻蚳ãžã®ãªã³ã¯ã䜿çšããŠãã ããïŒAlexander Chibisovã PVS-StudioããŒã ã¯æè¡çãªãã¬ãŒã¯ã¹ã«ãŒãäœæããããšããŠããŸãããä»ã¯Blenderãå確èªããŸããã ã
èšäºãèªãã§è³ªåããããŸããïŒ
å€ãã®å Žåãèšäºã«ã¯åã質åãå¯ããããŸãã ããã§åçãéããŸããïŒ PVS-StudioããŒãžã§ã³2015ã«é¢ããèšäºã®èªè
ããã®è³ªåãžã®åç ã ãªã¹ããã芧ãã ããã