Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
C++Test´úÂ뾲̬¼ì²é¹æÔòÖÆ×÷·½·¨
 
  3240  次浏览      28
 2019-7-3
 
±à¼­ÍƼö:

±¾ÎÄÀ´×Ôcsdn£¬±¾ÎÄÖ÷Òª½éÉÜÁËʹÓÃ×Ô¶¯¹¤¾ß½øÐбàÂë¹æ·¶µÄ¼ì²é£¬C++ Test µÄ¾²Ì¬´úÂë¹æÔòÖÆ×÷,Ï£Íû¶ÔÄúµÄѧϰÓÐËù°ïÖú¡£

1 ǰÑÔ

ÔÚÒ»¸öÍŶӽøÐÐÈí¼þ¿ª·¢µÄ¹ý³ÌÖУ¬Ò»°ã¶¼»áÖÆ¶¨Ò»¸ö´ó¼Ò¹²Í¬×ñÊØµÄ±àÂë¹æ·¶£¬³ÌÐòÔ±×ñÑ­Á¼ºÃµÄ±àÂë¹æ·¶Ð´³ÌÐòÓкܶàºÃ´¦£º

1.ÓÐÖúÓÚ³ÌÐòµÄά»¤£¬½µµÍÈí¼þÉúÃüÖÜÆÚ³É±¾£¬·ûºÏÏîÄ¿¹ÜÀíµÄ¹æÂÉ£»

2.ʹÍŶÓÖÐÏà¹ØÈËÔ±µÄÁ÷¶¯¶ÔÏîÄ¿µÄÓ°Ï쾡¿ÉÄÜС£¬ÓÐÀûÓÚÏîÄ¿µÄ¿ØÖÆÓë¹ÜÀí

3.Ìá¸ß³ÌÐòµÄ¿É¶ÁÐÔ£¬ÓÐÀûÓÚÏà¹ØÉè¼ÆÈËÔ±½»Á÷£¬Ìá¸ßÈí¼þÖÊÁ¿

4.ÓÐÀûÓÚÐγɿɹÜÀí£¬¿ÉÖØÓõÄÍŶӺó±¸×ÊÔ´

5.ÓÐÀûÓÚÈí¼þ¹¤³ÌÏà¹Ø²úÆ·ÔªËØµÄSCM

²¢ÇÒ£¬Í¨¹ý½¨Á¢´úÂë±àд¹æ·¶£¬¿ÉÒÔÌá¸ß³ÌÐòµÄ¿É¿¿ÐÔ¡¢¿É¶ÁÐÔ¡¢¿ÉÐÞ¸ÄÐÔ¡¢¿Éά»¤ÐÔ¡¢Ò»ÖÂÐÔ£¬±£Ö¤³ÌÐò´úÂëµÄÖÊÁ¿£¬¼ÌÐøÈí¼þ¿ª·¢³É¹û£¬³ä·ÖÀûÓÃ×ÊÔ´¡£Ìá¸ß³ÌÐòµÄ¿É¼ÌÐøÐÔ£¬Ê¹¿ª·¢ÈËÔ±Ö®¼äµÄ¹¤×÷³É¹û¿ÉÒÔ¹²Ïí¡£ÕâÊÇ×ñÊØ¹æ·¶½øÐдúÂë±àдÊdzÌÐòÔ±µÄ»ù±¾ËØÖÊ¡£

Èç¹û¶Ô±àÂë¹æ·¶½øÐÐÈËÈâ¼ì²é£¬ÎÞÒÉÊǷdz£·Ñʱ·ÑÁ¦£¬Ð§¹û²»ºÃ¡£Ê¹ÓÃ×Ô¶¯»¯µÄ¹¤×÷À´½øÐмì²éÏÔÈ»ÊÇÒ»¸ö¸üºÃµÄÖ´Ðз½·¨¡£ÎªÁËÕâ¸öÄ¿±ê£¬ÎÒÃǾÍÑо¿ÁËÏÂʹÓà C++ Test½øÐдúÂ뾲̬¼ì²é¡£

C++TestÊÇÒ»¸öC/C++×Ô¶¯µ¥Ôª²âÊÔ¹¤¾ß£¬×Ô¶¯²âÊÔC/C++Àà¡¢º¯Êý»ò²¿¼þ£¬×Ô¶¯Éú³É²âÊÔÓÃÀý¡¢²âÊÔÇý¶¯³ÌÐò»ò×®µ÷Óã¬ÎÞÐèÊÖ¹¤±àд¡£ C++TestÄܹ»×Ô¶¯²âÊÔ´úÂë¹¹Ô죨°×ºÐ²âÊÔ£©¡¢²âÊÔ´úÂëµÄ¹¦ÄÜÐÔ£¨ºÚºÐ²âÊÔ£©ºÍά»¤´úÂëµÄÍêÕûÐÔ£¨»Ø¹é²âÊÔ£©£¬²¢Ìṩ×Ô¶¯¸²¸ÇÂʲâÊÔ¡£Í¬Ê± C++Test»¹ÊÇÒ»¸öC/C++±à³Ì¹æ·¶×Ô¶¯¼ì²é¹¤¾ß£¬ËüÄÚÖÃÁË800¶àÌõÒµ½ç¹æÔò£¬Í¬Ê±¿ÉÒÔͼÐλ¯µØ¶¨ÖÆ×Ô¼ºµÄ¹æÔò£¬C++ Test½øÐо²Ì¬²âÊÔ£¨×Ô¶¯±à³Ì¹æ·¶¼ì²é£©ÓÐÒÔÏÂÓŵ㣺

1.Pattern Matching£¨×Ô¶¯´úÂë×߲飩

2.ÄÚÖÃ800¶àÌõÒµ½çÓÐÃûµÄC/C++¹æÔò£¨´óÁ¿¹æÔòÀ´×ÔÓÚ¶à¼ÒÊÀ½çÖøÃûµçÐŹ«Ë¾µÄ±à³Ì¹æ·¶£¬ÒÔ¼°ÊÀ½çȨÍþµÄ±à³Ì¹æ·¶×ÊÁÏ£©£¬¿ÉʵÏÖ×Ô¶¯µÄͼÐλ¯´úÂë±à ³Ì¹æ·¶¼ì²é3.ʹÓÃRuleWizardͼÐλ¯½¨Á¢×Ô¶¨Òå´úÂë¹æÔòµÄ¹¦ÄÜ¡£¿Í»§¿ÉÒԺܷ½±ã½¨Á¢²¢±£´æÒ»ÕûÌ××Ô¼ºµÄ´úÂë±à³Ì¹æ·¶£¨ÍŶӾ­Ñ飩£¬´Ó¶ø±£Ö¤ÍŶӾ­Ñé²»»áÒòΪÈËÔ±±ä¶¯¶øÁ÷ʧ¡£Óë´Ëͬʱ±ÜÃâÁ˱à³ÌÈËԱΪÁ˱£´æÍŶӵĴúÂë±à³Ì¹æ·¶¶øÀË·Ñ´óÁ¿Ê±¼äÈ˹¤±àдscript Bug Detective£¨Flow Analysis£©

4.Hot Spot¼¼Êõ£¨¡°Èȵ㡱¼¼Êõ£©¡£C++Testͨ¹ý×Ô´øµÄ¡°Èȵ㡱°ü£¬ÓûØËݵķ½Ê½×Ô¶¯Ä£ÄâÔËÐгÌÐòÖеÄÖ´Ðз¾¶£¬´Ó¶ø¾«È·¸ßËÙµØÕÒµ½³ÌÐò´æÔÚÎÊÌâµÄλ Öã»ÀýÈ磬ÎÒÃDz»ÔÊÐí³ÌÐòÖдæÔÚ¡°/0¡±µÄÔËË㲿·Ö£¬ÓÉ´Ë·²ÊdzÌÐòÖС°/var¡±µÄ²¿·Ö¶¼ÓпÉÄÜÒòΪvarÊÇ0¶øÔì³É³ÌÐòÂß¼­´íÎ󣍯äÖС°/var¡±µÄÐÍ̬¾Í³ÆÎª³ÌÐòÖеġ°Èȵ㡱£©£¬´Ëʱ£¬C++Test»á×Ô¶¯ËÑË÷³ÌÐòÖÐËùÓС°/var¡±µÄÔËËãÐÍ̬£¬²¢»ØËÝÔËÐгÌÐòÖеÄÖ´Ðз¾¶£¬ÕÒµ½ËùÓÐÖÂʹvar±ä³É0 µÄ·¾¶£¬´Ó¶ø¾«È·µØÕÒµ½³ÌÐòÖеĴíÎó¡£

2. ¶¨ÖƹæÔò

C++ TestÄÚÖÃÁË300¶à¸ö¾²Ì¬²âÊÔÏһ°ãµÄÇé¿öÏÂÆäʵҲ¾Í¹»ÓÃÁË¡£µ«ÊÇÈç¹ûÓÐÌØÊâµÄ²âÊÔÒªÇ󣬶¯éü¼¸Ê®KµÄ´úÂ룬ÓÃÑÛ¾¦¿´£¬ÄÔ×ÓÏ룬̫ÐÁ¿à£¬Ò²²»¡°°² È«¡±¡£Èç¹ûÎÒÃÇÓÃC++TestͼÐλ¯µÄRuleWizard£¬½áºÏ¹«Ë¾µÄ±àÂë¹æ·¶À´Öƶ¨¹æÔò£¬Ò»À´·½±ã£¬¸ßЧ£¬¶þÀ´¿ÉÒÔ½ÚÔ¼È˹¤¼ì²éËù´øÀ´µÄ²»±ØÒªµÄ³É±¾¡£RuleµÄ´´½¨ÓÐ2ÖÖ·½Ê½£¬Ò»ÖÖÊÇÊÖ¹¤Ð´¹æÔò£¬ÈÃRuleWizardÈ¥°ïÄãÉú³É¹æÔò£¨×îºÃ±ðÓÃautocreate£¬ÒòΪC++TestµÄÖÇÄÜ»¯»¹ ºÜǷȱ£©¡£ÎÒÕâÀïÖ÷ÒªÖØµã·ÅÔÚ×Ô¼ºÐ´¹æÔò·½Ã棬ÏÂÃæ½éÉÜ»ù±¾²½Ö裺

2.1 C++TestµÄ»ù±¾ÉèÖÃ

Ê×ÏÈʹÓÃC++Test¾²Ì¬¹æÔò¼¯¼ì²é±ØÐëÒª½øÐÐһЩ¼òµ¥µÄÉèÖÃ

н¨¹¤³Ì£ºÑ¡ÔñVS6.0»òÕßVS.NET¹¤³ÌÎļþ£¬»òÕß´ò¿ªÒ»¸öÒÑÓеŤ³Ì£¨ÊÇÔ­À´ÒѾ­½¨Á¢µÄC++Test¹¤³Ì£¬ºó׺ÃûΪ*.cpf£©

ÅäÖù¤³Ì£¬ÒýÈëÐèÒª°üº¬µÄÍ·ÎļþÎļþ¼Ð .

²âÊÔÑ¡ÏîµÄɸѡ£¬Enable Coding Standards£¨¾²Ì¬²âÊÔ£©£¬Enable Unit Testing£¨µ¥Ôª²âÊÔ£©£¬Ñ¡Ôñ¾²Ì¬²âÊÔ£¬È¥µôµ¥Ôª²âÊÔµÄÑ¡Ïî¡£

2.2 ĬÈϹæÔò

C++TestÄÚÖÃÁË800¶àÌõ¹æÔò°üÀ¨Effective C++£¬SecurityµÈ¸÷¸ö·½ÃæµÄC++¹æÔò£¬Ó¦¸ÃÄܹ»Âú×ã´ó¶àÊý¹«Ë¾±àÂë¹æ·¶£¬ÆôÓÃijij¹æÔòÖ»Òª¹´Ñ¡checkbox¼´¿É¡£ÁíÍ⣬Èç¹û²»»áд¹æÔòµÄ»°£¬Ò²¿ÉÒԲο´Ä¬ÈϵĹæÔòºÍC++TestµÄmanualÔÚ\Parasoft\C++Test\manuals\rulewizardÎļþ¼ÐÏ¡£

2.3 ÖÆ×÷¹æÔò

Ê×ÏȽéÉÜһϻù±¾¹æÔòµÄÖÆ×÷·½·¨

ÔÚ³öÏֵĶԻ°¿òÖÐDictionaryÑ¡ÔñC£¬C++£¬»¹ÓÐÒ»¸öÑ¡ÏîÊÇC++TestÒ»°ãÓÃÓÚC++Îı¾¹æÔòµÄÖÆ×÷£¬Rule CreationÑ¡ÔñBy Node£¬Auto-CreateÓÃÓÚÊÖ¶¯Êéд´úÂë¶ø×Ô¶¯Éú³É¹æÔò£¬µ«ÊÇ×Ô¶¯Éú³ÉµÄ¹æÔòÍùÍù²»¾¡ÈËÒ⣬ËùÒÔÒ»°ã²»Óá£Node SelectionsÑ¡Ôñif£¬ÒòΪ´Ë´ÎÊéдµÄ¹æÔò¸úifÓйأ¬Íê³ÉÁ˵ã»÷ok.

ÒÔÉÏÖÆ×÷µÄ¹æÔòÊÇÔÚÂß¼­±í´ïʽÖг£Á¿Ó¦¸Ã·Å==ºÅµÄ×ó±ß£¬ÕâÑù¿ÉÒÔ±ÜÃâ©дһ¸ö¡°=¡±ºÅºóÔì³É·ÖÖ§ÅжϳöÏÖÓÀÕæ»òÕßÓÀ¼Ùʽ¼´£º

void foo()
{
if(nFlag = 0) /* Violation */
{
return (Ok);
}
else
{
return (ERROR);
}
}

ÒÔÉÏÌõ¼þÅжÏÓÀÔ¶Ö»»á×ß return £¨ERROR£©Õâ¸ö·ÖÖ§¡£

2.4 Rulewizard¶¨ÒåµÄ»ù±¾×é³É²¿·Ö

Node£º¹æÔòµÄ»ù±¾×é³É²¿·Ö£¬Í¨¹ýNodeÄã¿ÉÒÔºÜÇå³þµÄÖªµÀËüµÄ¹¦ÄÜ¡£±ÈÈç±í´ïʽa=b¡¢±äÁ¿µÄÀàÐͲâÊÔ·ÖΪ£º

parentNode£º¹æÔòÖеÄÖ÷·ÖÖ§Node»òÕߴηÖÖ§µÄÖ÷Node.ÄÚÈÝ¿ÉÒÔÊDZí´ïʽ¡¢±äÁ¿¡¢º¯ÊýµÈ

childNode£º¹æÔòµÄ×é³Éµ¥Ôª¡£

Commands£ºÓÃÀ´ÔÚNodeºÍNodesÖ®¼ä½¨Á¢¹ØÁª¹ØÏµ¡£ÐÎÏóÒ»µã¾ÍÊǵãÖÐÒ»¸öNodeÈ»ºóÓÒ¼üÏÔʾ³öµÄ¿ì½Ý²Ëµ¥µÄÉϰ벿·Ö¡£ÈçÏÂͼ£º

½éÉÜÒ»ÏÂÖ÷ÒªµÄCommand

Collector£º¼¯ºÏ¡£Õâ¸ö¸ÅÄî¸üÏñÊýѧÖеļ¯ºÏ¶ø²»ÊÇJavaÖеĹãÒ弯ºÏ¡£Âú×ãÒ»¶¨Ìõ¼þµÄÊý¾Ý»òÕß·½·¨»òÕß±äÁ¿µÄÈ«Ìå¡£±ÈÈ磬ËùÓб»ÉùÃ÷¹ýµÄ±ä Á¿£¬ÈçÏÂͼ

isDeclÊÇÓÃÀ´·µ»ØÇ°±ßµÄnodeÊDz»ÊÇÒ»¸öÉùÃ÷¡£ÄÇôbodyµÄmembervariable·µ»ØÁËËùÓеİüº­Ö¸¶¨ÀàÐͱäÁ¿µÃÓï¾ä£¨°üÀ¨±äÁ¿¸¶Öµ¡¢ÉùÃ÷¡¢Åжϵȣ©ÄÇôÕâ¸öͼ±»Àí½âΪ£¬ËùÓв»ÊÇÉùÃ÷µÃÓï¾äÄÚʹÓõıäÁ¿µÄ¼¯ºÏ¡£

ûÓб»ÉùÃ÷µÄ±äÁ¿£¬ÈçÏÂͼ¡£

ÕâÀïµÄÒâ˼ÊÇËùÓÐ×÷ΪÉùÃ÷Óï¾äµÄ±äÁ¿µÄ¼¯ºÏ¡£

ÄÇôͨ³£Çé¿öÏ£¬A¼¯ºÏºÍB¼¯ºÏÓ¦¸ÃÊÇÏàµÈµÄ£¬Ò²¾ÍÊÇ˵ËùÓб»ÉùÃ÷¹ýµÄ±äÁ¿£¨B¼¯ºÏÄÚÈÝ£©Ó¦¸Ã¶¼±»Ê¹ÓÃ/¸³Öµ/Åжϣ¨A¼¯ºÏµÄÄÚÈÝ£©¡£

Node Set£ºNode¶ÔNode¼¯ºÏµÄ´¦Àí¡£·ÖΪUnion£¨ºÏ²¢£©¡¢Intersection£¨½»²æ£©¡¢Difference£¨²îÖµ£¬×ó²î/ÓҲ¡¢ Xor£¨Òì»ò£©¡£ÈçÏÂͼ£º

Èç¹û Âú×ãÕâ¸ö¹æÔò£¬ÄÇôÊä³öÏàÓ¦µÃ¾¯¸æÐÅÏ¢¡£

Output£ºÈç¹ûÂú×ãcheckµÄÌõ¼þ£¬ÏòÓû§·µ»ØÒ»¸öÏûÏ¢£¨¼ýÍ·±íʾ£©

2.5 µ¼ÈëÒÑÖÆ×÷µÄ¹æÔò

Ñ¡ÔñÒÑÖÆ×÷¹æÔòµÄÎļþ¼Ð£¬Ìí¼ÓÍê±ÏºóÆôÓÃ

2.6 ÔËÐÐÒÑÖÆ×÷µÄ¹æÔò

µ±µ¼ÈëÖÆ×÷ºÃµÄ¹æÔòºó£¬µã»÷toolbarÉϵÄÔËÐÐbutton£¨Èý½ÇÐεİ´Å¥£©¼´¿É¶Ô¹¤³Ì½øÐо²Ì¬²âÊÔ¡£

ÔËÐÐÍê±Ïºó£¬³öÏÖ³ö´íÐÅÏ¢£¬²¢ÇÒ³ö´íµÄÐкźͳö´íµÄÎļþÒ²±»Ö¸Ã÷³öÀ´ÁË

ÒÔÉÏÊÇÕë¶Ô¹æÔòÈ«¾Ö³£Á¿ÃüÃû±ØÐë´óд£º

3 ʹÓÃPythonÖÆ×÷¸´ÔÓ¹æÔò

Python×÷ΪʱÏÂÁ÷ÐеĽű¾ÓïÑÔÖ®Ò»£¬ÒÔÆä³¬Ç¿µÄÊÊÓ¦ÐÔ£¬³¬´óµÄ¹¦ÄÜÐÔ£¬³¬·²µÄÀ©ÈÝÐÔ£¬³¬³£µÄ¼òÒ×ÐÔ£¬³¬Ç¿µÄ¹¦ÄÜÐÔµÈÖø³Æ¡£Ëü¼¸ºõÎÞËù²»ÄÜ¡£ÄÚºËСÇÉ£¬µ«È´ÓµÓÐ×ã¹»µÄ»ù±¾³ÌÐò¿éÓÃÓÚÉè¼Æ´ó²¿·ÖÓ¦ÓÃÈí¼þ¡£¶øÇÒÔÚijЩÇé¿öϸóÌÐòÓïÑÔ»¹¿ÉÒÔÀ©³äÓë C£¬C++ ºÍ Java ÓïÑÔ²¢Óã¬Òò´ËûÓÐËü±à²»Á˵ijÌÐò¡£ Python ½âÊÍÆ÷»¹´øÓм«ÎªÇ¿´óµÄ²¹³äÄ£¿é¿â£¬ÓÃÓÚÀ©³äÓïÑÔÄÜÁ¦£¬½øÐÐÍøÂçͨѶ¡¢Îı¾´¦ÀíºÍ¹æÔò±í´ïʽƥÅä¡£

C++ Test½áºÏÆä¶ÔµÄPython½Å±¾µÄÖ§³Ö£¬ËùÒÔ¿ÉÀ©Õ¹ÐԷdz£Ç¿´ó¡£ÖÁÓÚPythonÓïÑÔµÄÓï·¨±¾Éí£¬±¾ÎľͲ»¹ý¶à²ûÊö£¬Çë²Î¿´¡¶Python±à³Ì½ðµä¡· µÈPythonÏà¹ØÊé¼®¡£

3.1 C++TestÌí¼ÓPython½Å±¾ÓÐÁ½ÖÖ·½Ê½

1. ×÷ΪÊä³ö×é¼þÌí¼Ó£¨ÓÒ¼üµ¥»÷Node£¬µãCreate Output> Method£©£¬ÕâÖÖ·½Ê½Ö÷ÒªÓÃÓÚһЩ¹æÔòÖÐÐèÒªÊä³öÌØÊâµÄ±äÁ¿£¬¶øÓÃRuleWizardÖеÄCreate Output>DisplayÎÞ·¨ÊµÏÖ¡£ÀýÈçÒªÊä³öij¸öNodeµÄÃû×Ö£¬Ö»ÄÜͨ¹ýÌí¼ÓPython½Å±¾À´ÊµÏÖ£º

2. ×÷Ϊµ¥¶À×é¼þÌí¼Ó£¨ÓÒ¼üµ¥»÷Node£¬µãCreate Method> Node or Create Method> Boolean£©£¬ÕâÖÖ·½Ê½¿ÉÒÔ¿ØÖÆÕû¸ö¹æÔòµÄÐÐΪ£¬·µ»ØÖµ0´ú±íÓÐЧֵ£¬·µ»ØÖµ1´ú±í³ö´íµÄÇé¿ö¡£

3.2 Python Method

C++Test´´½¨µÄPython Method¿ÉÒÔÓÐ0¸ö£¬1¸ö»òÕß2¸ö²ÎÊý£¬µÚÒ»¸ö²ÎÊýµÄÀàÐÍÊÇNodeProvider£¬µÚ¶þ¸ö²ÎÊýµÄÀàÐÍÊÇRuleContext £¬ÒÔÏÂPython MethodÊÇ·ûºÏ¹æ·¶µÄ£º

def unction(node, context):
def function(node):
def function():

µ±Ò»¸ö¹æÔò±»´´½¨Ê±£¬Ëü»áÆ¥ÅäÔ´ÎļþµÄÉÏÏÂÎÄÓï·¨½âÊÍTree£¬ÉÏÃæËµµÄNodeµÄ²ÎÊýNodeProvider£¬Ò²¾ÍÊǶÔÓï·¨½âÊÍTree°ü×°³öÀ´µÄÒ» ¸ö¶ÔÏó£¬ÎÒÃǾͿÉÒÔͨ¹ýËüÀ´·ÃÎÊÓï·¨½âÊÍTreeµÄÈκÎÊôÐÔ¡£

¶øÉÏÃæËù˵µÄRuleContext£¬Äã¿ÉÒԴ洢һЩÊý¾ÝÔÚËüÀïÃæ£¬¶øÆäËû¹æÔòÒ²¿ÉÒÔ·ÃÎÊÕâЩÊý¾Ý£¬ÕâÒâζ׿¸Ìõ¹æÔòÖ®¼äÓÐÒ»¿é¹²ÏíÇøÓò£¬±Ë´ËÖ®¼ä¿ÉÒÔͨÐÅ¡£ÀýÈçÓÐЩ¹æ

·¶Ò»Ìõ¹æÔò²»ÄÜʵÏÖ£¬ÐèÒª¶àÌõ¹æÔò½áºÏÆðÀ´²ÅÄÜʵÏÖ£¬ÄÇô¾ÍÒªÓõ½RuleContext.Python ½Å±¾ÊéдµÄ¹æÔò»¹ÓÐÒ»ÏÂÐÔÖÊ£º

1. Python MethodµÄÃû×ÖûÓÐÏÞÖÆ

2. Boolean methodsµÄ·µ»ØÖµ0´ú±íÓÐЧ£¬1´ú±íÎÞЧ

3. Python MethodµÄÓï·¨±ØÐë·ûºÏPython¹æ·¶£¬Èç¹û´´½¨µÄOutput MethodµÄÓï·¨ÓдíÎó£¬ÔòËüµÄÊä³ö¼ýÍ·»á±äΪºìÉ«¡£

4. Python MethodÐ޸ĺóʵʱÉúЧ

3.3 Ö÷ÒªAPIÄ£¿é

ΪÁËʹÓÃPython½Å±¾£¬C++TestÌṩÁËһϵÁеÄAPI£¬Ö÷Òª·ÖΪÈý´óÄ£¿é£º1. NodeProvider£¬¶ÔPythonÉÏÏÂÎÄÓï·¨½âÊÍTreeµÄ·â×°2. RuleContext£¬¿ÉÒÔ¶Ôµ±Ç°¹æÔòµÄÉÏÏÂÎĽøÐзÃÎÊ¡£È磺a. ·ÃÎÊÉÏÏÂÎÄÖеÄÈÝÆ÷£¬µ±Ç°¹æÔòÉÏÏÂÎÄÖÐÓÐList Aʱ£¬ÈκÎʱºò£¬ÎÒÃǶ¼¿ÉÒÔÓÃcontext.getList £¨"A"£©£¬¶Ô¼¯ºÏA½øÐзÃÎÊ¡£

b. Éú³É³ö´íÐÅÏ¢£¬ÎÒÃÇ¿ÉÒÔÓÃcontext.report £¨"Violation detected"£©£¬Éú³É³ö´íÐÅÏ¢£¬¸ÄÐÅÏ¢ÏÔʾÔÚC++TestµÄMessageÊÓ´°ÖС£

3. EnforcerContext£¬¿ç¹æÔòµÄ·ÃÎÊÉÏÏÂÎÄ£¬¿ÉÒÔ¶àÌõ¹æÔòÁªºÏÆðÀ´ÊµÏÖ¸üÇ¿´óµÄ¹¦ÄÜ¡£ÒÔÏÂPython½Å±¾Ê¾Àý¿ç¹æÔòµÄ·ÃÎÊ£º

ef somePythonMethod(node, context):
#
# invoke here the "lower lever" text rule:
parent = context.getParentContext()
result = parent.executeRule("./my_text.rule", node)
# my_text.rule was executed and the result
# specifies whether any violation was detected
if 1 == result:
# my_text.rule reported violation
else:
# my_text.rule did not detect any violations
#

Ö÷ÒªÓõ½º¯ÊýexecuteRule£¨£©£¬¸Ãº¯Êý·µ»Ø1´ú±íRuleEnforcerContext¼ì²âµ±Ö¸¶¨ÎļþÃûµÄ¹æÔò£¬·µ»Ø0´ú±íûÓмì²âµ½Ö¸¶¨ÎÄ ¼þÃûµÄ¹æÔò¡£

Python½Å±¾µÄ¾ßÌåÓ÷¨Çë²ÎÕÕParasoft\C++Test\manuals\rulewizard \python_scripting_api.htm

3.4 ʾÀý

ÒÔÉÏÓÃpython½Å±¾´´½¨º¯ÊýConpareVarName

À´±ÜÃ⺯ÊýÄÚÓнöÓÐÒÔ´óÐ¡Ð´Çø·ÖµÄ±äÁ¿Ãû£¬¼´£º²»ÔÊÐí³öÏÖ½öÒÀ¿¿´óСд½øÐÐÇø·ÖµÄ±êʶ·û¡£

¡¸ÀíÓÉ¡¹

±ÜÃâ»ìÏý£¬²úÉú¶Ô³ÌÐòÀí½âºÍά»¤µÄÀ§ÄÑ¡£

¡¸ÊÂÀý¡¹

²»ÕýÈ·µÄÃüÃû

INT32 i32ExtAttr = 0£»INT32 i32Extattr = 0£»

4 ×ܽá

ʹÓÃ×Ô¶¯¹¤¾ß½øÐбàÂë¹æ·¶µÄ¼ì²éЧÂʺܸߣ¬¶øÇÒÄܱ£Ö¤ÖÊÁ¿¡£C++ Test µÄ¾²Ì¬´úÂë¹æÔòÖÆ×÷Ò²±È½ÏÈÝÒ×£¬¹¦ÄÜÒ²ºÜÇ¿´ó¡£Î¨Ò»µÄ²»×ã¿ÉÄܾÍÊÇ£¬C++ Test±¾ÉíµÄÔËÐÐËÙ¶ÈÉÔ΢ÓеãÂý£¬¶øÇұȽÏÕ¼ÄÚ´æ¡££¨Ã²ËÆÊÇJavaдµÄ£¬ºÇºÇ£©¡£×ܵÄÀ´½²»¹ÊǺܲ»´íµÄ£¬ÖµµÃÍÆ¹ãºÍ¡£

 

   
3240 ´Îä¯ÀÀ       28
Ïà¹ØÎÄÕÂ

΢·þÎñ²âÊÔÖ®µ¥Ôª²âÊÔ
һƪͼÎÄ´øÄãÁ˽â°×ºÐ²âÊÔÓÃÀýÉè¼Æ·½·¨
È«ÃæµÄÖÊÁ¿±£ÕÏÌåϵ֮»Ø¹é²âÊÔ²ßÂÔ
È˹¤ÖÇÄÜ×Ô¶¯»¯²âÊÔ̽Ë÷
Ïà¹ØÎĵµ

×Ô¶¯»¯½Ó¿Ú²âÊÔʵ¼ù֮·
jenkins³ÖÐø¼¯³É²âÊÔ
ÐÔÄܲâÊÔÕï¶Ï·ÖÎöÓëÓÅ»¯
ÐÔÄܲâÊÔʵÀý
Ïà¹Ø¿Î³Ì

³ÖÐø¼¯³É²âÊÔ×î¼Ñʵ¼ù
×Ô¶¯»¯²âÊÔÌåϵ½¨ÉèÓë×î¼Ñʵ¼ù
²âÊԼܹ¹µÄ¹¹½¨ÓëÓ¦ÓÃʵ¼ù
DevOpsʱ´úµÄ²âÊÔ¼¼ÊõÓë×î¼Ñʵ¼ù