±à¼ÍƼö: |
±¾ÎÄÀ´×Ô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дµÄ£¬ºÇºÇ£©¡£×ܵÄÀ´½²»¹ÊǺܲ»´íµÄ£¬ÖµµÃÍÆ¹ãºÍ¡£
|