αžšαž”αŸ€αž”αžŸαžšαžŸαŸαžšαž…αŸ’αž”αžΆαž”αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Checkmarx αžŠαŸ„αž™αž˜αž·αž“αž†αŸ’αž€αž½αž

ហេហេ!

αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž„αžΆαžšαžšαž”αžŸαŸ‹αž™αžΎαž„ αž€αŸ’αžšαž»αž˜αž αŸŠαž»αž“αžšαž”αžŸαŸ‹αž™αžΎαž„αž…αŸ’αžšαžΎαž“αžαŸ‚αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž‡αžΆαž˜αž½αž™αž§αž”αž€αžšαžŽαŸαžœαž·αž—αžΆαž‚αž€αžΌαžŠαž‹αž·αžαž·αžœαž“αŸ’αžαž•αŸ’αžŸαŸαž„αŸ— (SAST)αŸ” αž…αŸαž‰αž–αžΈαž”αŸ’αžšαž’αž”αŸ‹αž–αž½αž€αž‚αŸαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž’αŸ’αž™αž˜αŸ” αž‡αžΆαž€αžΆαžšαž–αž·αžαžŽαžΆαžŸαŸ‹ αžœαžΆαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž‚αžΊαž’αžΆαžŸαŸ’αžšαŸαž™αž›αžΎαž‚αž˜αŸ’αžšαŸ„αž„ αž“αž·αž„αž”αž…αŸ’αž…αŸαž€αžœαž·αž‘αŸ’αž™αžΆαžŠαŸ‚αž›αž”αžΆαž“αž”αŸ’αžšαžΎαž“αŸ…αž€αŸ’αž“αž»αž„αžœαžΆ αž€αŸαžŠαžΌαž…αž‡αžΆαžαžΆαžαžΎαž”αž…αŸ’αž…αŸαž€αžœαž·αž‘αŸ’αž™αžΆαž‘αžΆαŸ†αž„αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸ’αžšαž”αžŠαžŽαŸ’αžαž”αŸ‹αžŠαŸ„αž™αž…αŸ’αž”αžΆαž”αŸ‹αž“αŸƒαž€αžΆαžšαžœαž·αž—αžΆαž‚αž”αžΆαž“αž›αŸ’αž’αž”αŸ‰αž»αžŽαŸ’αžŽαžΆαŸ” αžαžΆαž˜αž‚αŸ†αž“αž·αžαžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ† αž›αž€αŸ’αžαžŽαŸˆαžœαž·αž“αž·αž…αŸ’αž†αŸαž™αžŠαŸαžŸαŸ†αžαžΆαž“αŸ‹αž”αŸ†αž•αž»αžαž˜αž½αž™αž“αŸ…αž–αŸαž›αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž§αž”αž€αžšαžŽαŸ SAST αž‚αžΊαžŸαž˜αžαŸ’αžαž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžœαžΆαž‘αŸ…αžαžΆαž˜αž›αž€αŸ’αžαžŽαŸˆαž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€ αž–αŸ„αž›αž‚αžΊαžŸαžšαžŸαŸαžš αž“αž·αž„αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž…αŸ’αž”αžΆαž”αŸ‹αž“αŸƒαž€αžΆαžšαžœαž·αž—αžΆαž‚ αž¬αžŠαžΌαž…αžŠαŸ‚αž›αž–αž½αž€αž‚αŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαž αŸ…αžαžΆαž‡αžΆαž‰αžΉαž€αž‰αžΆαž”αŸ‹αž‡αžΆαž„ Custom Queries αŸ”

αžšαž”αŸ€αž”αžŸαžšαžŸαŸαžšαž…αŸ’αž”αžΆαž”αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Checkmarx αžŠαŸ„αž™αž˜αž·αž“αž†αŸ’αž€αž½αž

αž‡αžΆαž‰αžΉαž€αž‰αžΆαž”αŸ‹αž”αŸ†αž•αž»αžαž™αžΎαž„αž”αŸ’αžšαžΎ Checkmarx αžŠαŸ‚αž›αž‡αžΆαž’αŸ’αž“αž€αžœαž·αž—αžΆαž‚αž€αžΌαžŠαž‚αž½αžšαž±αŸ’αž™αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸ αž“αž·αž„αž˜αžΆαž“αžαžΆαž˜αž–αž›αžαŸ’αž›αžΆαŸ†αž„αŸ” αž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž“αž·αž™αžΆαž™αž’αŸ†αž–αžΈαž”αž‘αž–αž·αžŸαŸ„αž’αž“αŸαžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ†αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŸαžšαžŸαŸαžšαž…αŸ’αž”αžΆαž”αŸ‹αž€αžΆαžšαžœαž·αž—αžΆαž‚αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžœαžΆαŸ”

αžαžΆαžšαžΆαž„αž˜αžΆαžαž·αž€αžΆ

αž’αžΆαžαž»

αžŠαžΎαž˜αŸ’αž”αžΈαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜ αžαŸ’αž‰αž»αŸ†αž…αž„αŸ‹αžŽαŸ‚αž“αžΆαŸ†αž’αžαŸ’αžαž”αž‘αž˜αž½αž™αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαŸ„αž˜αž’αžαŸ’αžαž”αž‘αž˜αž½αž™αž…αŸ†αž“αž½αž“αž‡αžΆαž—αžΆαžŸαžΆαžšαž»αžŸαŸ’αžŸαžΈ αž’αŸ†αž–αžΈαž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸαž“αŸƒαž€αžΆαžšαžŸαžšαžŸαŸαžšαžŸαŸ†αžŽαž½αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Checkmarx αŸ” αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–αž“αŸ…αž›αžΎ Habre αž“αŸ…αž…αž»αž„αž†αŸ’αž“αžΆαŸ† 2019 αž€αŸ’αžšαŸ„αž˜αž…αŸ†αžŽαž„αž‡αžΎαž„αžαžΆ: "αž‡αŸ†αžšαžΆαž”αžŸαž½αžš Checkmarx!" αžšαž”αŸ€αž”αžŸαžšαžŸαŸαžšαžŸαŸ†αžŽαž½αžš Checkmarx SAST αž“αž·αž„αžŸαŸ’αžœαŸ‚αž„αžšαž€αž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡.

αžœαžΆαž–αž·αž“αž·αžαŸ’αž™αž›αž˜αŸ’αž’αž·αžαž’αŸ†αž–αžΈαžšαž”αŸ€αž”αžŸαžšαžŸαŸαžšαžŸαŸ†αžŽαž½αžšαžŠαŸ†αž”αžΌαž„αž“αŸ…αž€αŸ’αž“αž»αž„ CxQL (Checkmarx Query Language) αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŸαžΆαž€αž›αŸ’αž”αž„αž˜αž½αž™αž…αŸ†αž“αž½αž“ αž“αž·αž„αž”αž„αŸ’αž αžΆαž‰αž–αžΈαž‚αŸ„αž›αž€αžΆαžšαžŽαŸαž‡αžΆαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž“αŸƒαžšαž”αŸ€αž”αžŠαŸ‚αž›αž…αŸ’αž”αžΆαž”αŸ‹αž“αŸƒαž€αžΆαžšαžœαž·αž—αžΆαž‚αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ”

αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž˜αž·αž“αž“αž·αž™αžΆαž™αž‘αžΎαž„αžœαž·αž‰αž“αžΌαžœαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž”αžΆαž“αž–αž·αž–αžŽαŸŒαž“αžΆαž“αŸ…αž€αŸ’αž“αž»αž„αžœαžΆαž‘αŸ αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαž…αŸ†αž“αž»αž…αž”αŸ’αžšαžŸαž–αŸ’αžœαž˜αž½αž™αž…αŸ†αž“αž½αž“αž“αžΉαž„αž“αŸ…αžαŸ‚αž˜αžΆαž“αžœαžαŸ’αžαž˜αžΆαž“αž€αŸαžŠαŸ„αž™αŸ” αž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘αžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ† αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž–αŸ’αž™αžΆαž™αžΆαž˜αž…αž„αž€αŸ’αžšαž„αž“αžΌαžœαž”αŸ’αžšαž—αŸαž‘αž“αŸƒ "αž€αžΆαžšαž”αŸ’αžšαž˜αžΌαž›αžšαžΌαž”αž˜αž“αŸ’αž" αžŠαŸ‚αž›αž‡αžΆαž”αž‰αŸ’αž‡αžΈαž“αŸƒαžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž…αŸ†αž–αŸ„αŸ‡αž”αž‰αŸ’αž αžΆαž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž‡αž½αž”αž”αŸ’αžšαž‘αŸ‡αž€αŸ’αž“αž»αž„αž’αŸ†αž‘αž»αž„αž–αŸαž›αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™ Checkmarx αŸ” αžαŸ’αž‰αž»αŸ†β€‹αžαŸ’αžšαžΌαžœβ€‹αž™αž€β€‹αž…αž·αžαŸ’αžβ€‹αž‘αž»αž€β€‹αžŠαžΆαž€αŸ‹β€‹αž›αžΎβ€‹αž”αž‰αŸ’αž αžΆβ€‹αž‘αžΆαŸ†αž„β€‹αž“αŸαŸ‡αŸ” αž–αŸαž›αžαŸ’αž›αŸ‡αž˜αž·αž“αž˜αžΆαž“αž–αŸαžαŸŒαž˜αžΆαž“αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαžΆαž“αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžšαž‘αŸ αž αžΎαž™αž–αŸαž›αžαŸ’αž›αŸ‡αžœαžΆαžαŸ‚αž˜αž‘αžΆαŸ†αž„αž–αž·αž”αžΆαž€αž™αž›αŸ‹αž–αžΈαžšαž”αŸ€αž”αž’αŸ’αžœαžΎαž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαž˜αŸ’αžšαžΌαžœαŸ” αžαŸ’αž‰αž»αŸ†αžŸαž„αŸ’αžƒαžΉαž˜αžαžΆαž”αž‘αž–αž·αžŸαŸ„αž’αž“αŸαžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ† αž“αž·αž„αž™αž”αŸ‹αžŠαŸ‚αž›αž‚αŸαž„αž˜αž·αž“αž›αž€αŸ‹αž“αžΉαž„αž˜αž·αž“αž₯αžαž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž‘αŸ αž αžΎαž™ "αž€αžΆαžšαž”αŸ’αžšαž˜αžΌαž›αžšαžΌαž”αž˜αž“αŸ’αžαžŸαŸ†αžŽαž½αžšαž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“" αž“αŸαŸ‡αž“αžΉαž„αž‡αž½αž™αžŸαž„αŸ’αžšαŸ’αž‚αŸ„αŸ‡αž’αŸ’αž“αž€αž–αžΈαžšαž”αžΈαž˜αŸ‰αŸ„αž„ αž¬αž€αŸ„αžŸαž·αž€αžΆαž”αŸ’αžšαžŸαžΆαž‘αž–αžΈαžšαž”αžΈαŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžŸαžΌαž˜αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜!

αž–αŸαžαŸŒαž˜αžΆαž“αž‘αžΌαž‘αŸ…αž’αŸ†αž–αžΈαž…αŸ’αž”αžΆαž”αŸ‹

αž‡αžΆαžŠαŸ†αž”αžΌαž„ αžŸαžΌαž˜αž€αŸ’αžšαž‘αŸαž€αž˜αžΎαž›αž‚αŸ„αž›αž‚αŸ†αž“αž·αžαž‡αžΆαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž˜αž½αž™αž…αŸ†αž“αž½αž“ αž“αž·αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸƒαž€αžΆαžšαž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž…αŸ’αž”αžΆαž”αŸ‹ αžŠαžΎαž˜αŸ’αž”αžΈαž™αž›αŸ‹αž€αžΆαž“αŸ‹αžαŸ‚αž…αŸ’αž”αžΆαžŸαŸ‹αž’αŸ†αž–αžΈαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž“αžΉαž„αž€αžΎαžαž‘αžΎαž„αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž‘αŸ€αžαŸ” αž αžΎαž™β€‹αž€αŸβ€‹αžŠαŸ„αž™αžŸαžΆαžšβ€‹αž―αž€αžŸαžΆαžšβ€‹αž˜αž·αž“β€‹αž“αž·αž™αžΆαž™β€‹αž’αŸ’αžœαžΈβ€‹αž’αŸ†αž–αžΈβ€‹αžšαžΏαž„β€‹αž“αŸαŸ‡ αž¬β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž•αŸ’αžŸαž–αŸ’αžœαž•αŸ’αžŸαžΆαž™β€‹αž™αŸ‰αžΆαž„β€‹αžαŸ’αž›αžΆαŸ†αž„β€‹αž€αŸ’αž“αž»αž„β€‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’β€‹αžŠαŸ‚αž›β€‹αž˜αž·αž“β€‹αž„αžΆαž™αžŸαŸ’αžšαž½αž›β€‹αžαŸ’αž›αžΆαŸ†αž„αŸ”

  1. αž…αŸ’αž”αžΆαž”αŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαž€αŸ†αž‘αž»αž„αž–αŸαž›αžŸαŸ’αž€αŸαž“αž’αžΆαžŸαŸ’αžšαŸαž™αž›αžΎαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž‡αžΆαž˜αž»αž“αžŠαŸ‚αž›αž”αžΆαž“αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž“αŸ…αž–αŸαž›αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜ (αžŸαŸ†αžŽαž»αŸ†αž“αŸƒαž…αŸ’αž”αžΆαž”αŸ‹αžŸαž€αž˜αŸ’αž˜)αŸ” αž’αŸ’αž“αž€β€‹αž’αžΆαž…β€‹αž”αž„αŸ’αž€αžΎαžβ€‹αž…αŸ†αž“αž½αž“β€‹αž€αŸ†αžŽαžαŸ‹β€‹αž‡αžΆαž˜αž»αž“β€‹αž˜αž·αž“β€‹αž€αŸ†αžŽαžαŸ‹ αž αžΎαž™β€‹αžšαž”αŸ€αž”β€‹αžšαŸ€αž”αž…αŸ†β€‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’β€‹αž–αž½αž€αžœαžΆβ€‹αž™αŸ‰αžΆαž„β€‹αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹β€‹αž’αžΆαžŸαŸ’αžšαŸαž™β€‹αž›αžΎβ€‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšβ€‹αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹β€‹αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ” αž’αŸ’αž“αž€αž’αžΆαž…αžŠαžΆαž€αŸ‹αž‡αžΆαž€αŸ’αžšαž»αž˜αžαžΆαž˜αž—αžΆαžŸαžΆ αž¬αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž‡αžΆαž˜αž»αž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‚αž˜αŸ’αžšαŸ„αž„αž“αžΈαž˜αž½αž™αŸ—αŸ” αž…αŸ†αž“αž½αž“αž“αŸƒαž…αŸ’αž”αžΆαž”αŸ‹αžŸαž€αž˜αŸ’αž˜αž”αŸ‰αŸ‡αž–αžΆαž›αŸ‹αžŠαž›αŸ‹αž›αŸ’αž”αžΏαž“ αž“αž·αž„αž—αžΆαž–αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαž“αŸƒαž€αžΆαžšαžŸαŸ’αž€αŸαž“αŸ”

    αžšαž”αŸ€αž”αžŸαžšαžŸαŸαžšαž…αŸ’αž”αžΆαž”αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Checkmarx αžŠαŸ„αž™αž˜αž·αž“αž†αŸ’αž€αž½αžαž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž‡αžΆαž˜αž»αž“αž“αŸ…αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹ Checkmarx

  2. αž…αŸ’αž”αžΆαž”αŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ‚αžŸαž˜αŸ’αžšαž½αž›αž“αŸ…αž€αŸ’αž“αž»αž„αž§αž”αž€αžšαžŽαŸαž–αž·αžŸαŸαžŸαž˜αž½αž™αž αŸ…αžαžΆ CxAuditαŸ” αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž€αž»αŸ†αž–αŸ’αž™αžΌαž‘αŸαžšαžŠαŸ‚αž›αž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ…αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαžŠαŸ‚αž›αž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš Checkmarx αŸ” αž§αž”αž€αžšαžŽαŸαž“αŸαŸ‡αž˜αžΆαž“αžšαž”αŸ€αž”αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž–αžΈαžšαŸ– αž…αŸ’αž”αžΆαž”αŸ‹αž€αŸ‚αžŸαž˜αŸ’αžšαž½αž› αž“αž·αž„αž€αžΆαžšαžœαž·αž—αžΆαž‚αž›αž‘αŸ’αž’αž•αž›αž“αŸƒαž€αžΆαžšαžŸαŸ’αž€αŸαž“αžŠαŸ‚αž›αž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαžšαž½αž…αž αžΎαž™αŸ”

    αžšαž”αŸ€αž”αžŸαžšαžŸαŸαžšαž…αŸ’αž”αžΆαž”αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Checkmarx αžŠαŸ„αž™αž˜αž·αž“αž†αŸ’αž€αž½αžαž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹ CxAudit

  3. αž…αŸ’αž”αžΆαž”αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„ Checkmarx αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ‚αž„αž…αŸ‚αž€αžαžΆαž˜αž—αžΆαžŸαžΆ αž–αŸ„αž›αž‚αžΊαž—αžΆαžŸαžΆαž“αžΈαž˜αž½αž™αŸ—αž˜αžΆαž“αžŸαŸ†αžŽαž»αŸ†αžŸαŸ†αžŽαž½αžšαž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αŸ” αžœαžΆαž€αŸαž˜αžΆαž“αž…αŸ’αž”αžΆαž”αŸ‹αž‘αžΌαž‘αŸ…αž˜αž½αž™αž…αŸ†αž“αž½αž“αžŠαŸ‚αž›αž’αž“αž»αžœαžαŸ’αžαžŠαŸ„αž™αž˜αž·αž“αž‚αž·αžαž–αžΈαž—αžΆαžŸαžΆ αž‘αžΆαŸ†αž„αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž‚αŸαž αŸ…αžαžΆαžŸαŸ†αžŽαž½αžšαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αŸ” αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž•αŸ’αž“αŸ‚αž€αž—αžΆαž‚αž…αŸ’αžšαžΎαž“ αžŸαŸ†αžŽαž½αžšαž‡αžΆαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž–αžΆαž€αŸ‹αž–αŸαž“αŸ’αž’αž“αžΉαž„αž€αžΆαžšαžŸαŸ’αžœαŸ‚αž„αžšαž€αž–αŸαžαŸŒαž˜αžΆαž“αžŠαŸ‚αž›αž…αŸ’αž”αžΆαž”αŸ‹αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž”αŸ’αžšαžΎαŸ”

    αžšαž”αŸ€αž”αžŸαžšαžŸαŸαžšαž…αŸ’αž”αžΆαž”αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Checkmarx αžŠαŸ„αž™αž˜αž·αž“αž†αŸ’αž€αž½αžαž€αžΆαžšαž”αŸ‚αž„αž…αŸ‚αž€αž…αŸ’αž”αžΆαž”αŸ‹αžαžΆαž˜αž—αžΆαžŸαžΆ

  4. αž…αŸ’αž”αžΆαž”αŸ‹αž‚αžΊ "αž’αžΆαž…αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž”αžΆαž“" αž“αž·αž„ "αž˜αž·αž“αž’αžΆαž…αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž”αžΆαž“" (αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž· αž“αž·αž„αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·)αŸ” αž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαžˆαŸ’αž˜αŸ„αŸ‡αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαž‘αŸ αžαžΆαž˜αž‚αŸ†αž“αž·αžαžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ† αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž“αŸ„αŸ‡αž‡αžΆαžˆαŸ’αž˜αŸ„αŸ‡ αž…αŸ†αžŽαž»αž…αžŸαŸ†αžαžΆαž“αŸ‹αž‚αžΊαžαžΆαž›αž‘αŸ’αž’αž•αž›αž“αŸƒαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž…αŸ’αž”αžΆαž”αŸ‹ "αž’αžΆαž…αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž”αžΆαž“" αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αž“αŸ…αž€αŸ’αž“αž»αž„αž›αž‘αŸ’αž’αž•αž›αžŸαŸ’αž€αŸαž“αž“αŸ…αž€αŸ’αž“αž»αž„ UI αž αžΎαž™αž…αŸ’αž”αžΆαž”αŸ‹ "αž˜αž·αž“αž’αžΆαž…αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž”αžΆαž“" αž‚αžΊαžαŸ’αžšαžΌαžœαž€αžΆαžšαžαŸ‚αžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ’αžšαžΎαž›αž‘αŸ’αž’αž•αž›αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαž“αŸ…αž€αŸ’αž“αž»αž„αžŸαŸ†αžŽαžΎαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡ (αžαžΆαž˜αž–αž·αžαžœαžΆαž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž‡αžΆαž˜αž»αžαž„αžΆαžšαž˜αž½αž™αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ” )

    αžšαž”αŸ€αž”αžŸαžšαžŸαŸαžšαž…αŸ’αž”αžΆαž”αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Checkmarx αžŠαŸ„αž™αž˜αž·αž“αž†αŸ’αž€αž½αžαž€αŸ†αžŽαžαŸ‹αž”αŸ’αžšαž—αŸαž‘αž…αŸ’αž”αžΆαž”αŸ‹αž“αŸ…αž–αŸαž›αž”αž„αŸ’αž€αžΎαž

  5. αž’αŸ’αž“αž€αž’αžΆαž…αž”αž„αŸ’αž€αžΎαžαž…αŸ’αž”αžΆαž”αŸ‹αžαŸ’αž˜αžΈ αž¬αž”αž“αŸ’αžαŸ‚αž˜/αžŸαžšαžŸαŸαžšαž‘αžΎαž„αžœαž·αž‰αž“αžΌαžœαž…αŸ’αž”αžΆαž”αŸ‹αžŠαŸ‚αž›αž˜αžΆαž“αžŸαŸ’αžšαžΆαž”αŸ‹αŸ” αžŠαžΎαž˜αŸ’αž”αžΈαžŸαžšαžŸαŸαžšαž…αŸ’αž”αžΆαž”αŸ‹αž‘αžΎαž„αžœαž·αž‰ αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαžŸαŸ’αžœαŸ‚αž„αžšαž€αžœαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž˜αŸ‚αž€αž’αžΆαž„ αž…αž»αž…αž€αžŽαŸ’αžŠαž»αžšαžŸαŸ’αžŠαžΆαŸ† αž αžΎαž™αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸ "αž”αžŠαž·αžŸαŸαž’" αž–αžΈαž˜αŸ‰αžΊαž“αž»αž™αž‘αž˜αŸ’αž›αžΆαž€αŸ‹αž…αž»αŸ‡αŸ” αžœαžΆαž‡αžΆαžšαžΏαž„αžŸαŸ†αžαžΆαž“αŸ‹αž€αŸ’αž“αž»αž„αž€αžΆαžšαž…αž„αž…αžΆαŸ†αž“αŸ…αž‘αžΈαž“αŸαŸ‡αžαžΆαž…αŸ’αž”αžΆαž”αŸ‹αžαŸ’αž˜αžΈαž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž‰αŸ’αž…αžΌαž›αž€αŸ’αž“αž»αž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž‡αžΆαž˜αž»αž“αž‘αŸ αž αžΎαž™αž˜αž·αž“αžŸαž€αž˜αŸ’αž˜αŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž”αŸ’αžšαžΎαž–αž½αž€αžœαžΆαž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž’αŸ’αžœαžΎαž±αŸ’αž™αž–αž½αž€αžœαžΆαžŸαž€αž˜αŸ’αž˜αž“αŸ…αž€αŸ’αž“αž»αž„αž˜αŸ‰αžΊαž“αž»αž™ "αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž‡αžΆαž˜αž»αž“" αž“αŸ…αž€αŸ’αž“αž»αž„αž§αž”αž€αžšαžŽαŸαŸ” αž…αŸ’αž”αžΆαž”αŸ‹αžŠαŸ‚αž›αž”αžΆαž“αžŸαžšαžŸαŸαžšαž‘αžΎαž„αžœαž·αž‰αžšαž€αŸ’αžŸαžΆαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸ αž–αŸ„αž›αž‚αžΊαž”αŸ’αžšαžŸαž·αž“αž”αžΎαž…αŸ’αž”αžΆαž”αŸ‹αžŸαž€αž˜αŸ’αž˜ αžœαžΆαž“αžΉαž„αž“αŸ…αžαŸ‚αžŠαžŠαŸ‚αž› αž αžΎαž™αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαž—αŸ’αž›αžΆαž˜αŸ—αŸ”

    αžšαž”αŸ€αž”αžŸαžšαžŸαŸαžšαž…αŸ’αž”αžΆαž”αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Checkmarx αžŠαŸ„αž™αž˜αž·αž“αž†αŸ’αž€αž½αžαž§αž‘αžΆαž αžšαžŽαŸαž“αŸƒαž…αŸ’αž”αžΆαž”αŸ‹αžαŸ’αž˜αžΈαž“αŸ…αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž‡αžΆαž˜αž»αž“

  6. αž€αŸ’αž“αž»αž„αž’αŸ†αž‘αž»αž„αž–αŸαž›αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž· "ដើមឈើ" αž“αŸƒαžŸαŸ†αžŽαžΎαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαžΆαž„αžŸαž„αŸ‹αžŠαŸ‚αž›αž’αžΆαžŸαŸ’αžšαŸαž™αž›αžΎαž’αŸ’αžœαžΈαŸ” αž…αŸ’αž”αžΆαž”αŸ‹β€‹αžŠαŸ‚αž›β€‹αž”αŸ’αžšαž˜αžΌαž›β€‹αž–αŸαžαŸŒαž˜αžΆαž“β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·β€‹αž˜αž»αž“β€‹αž‚αŸ αž αžΎαž™β€‹αž’αŸ’αž“αž€β€‹αžŠαŸ‚αž›β€‹αž”αŸ’αžšαžΎβ€‹αžœαžΆβ€‹αž‘αžΈαž–αžΈαžšαŸ” αž›αž‘αŸ’αž’αž•αž›β€‹αž“αŸƒβ€‹αž€αžΆαžšβ€‹αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž‘αž»αž€β€‹αž€αŸ’αž“αž»αž„β€‹αžƒαŸ’αž›αžΆαŸ†αž„β€‹αžŸαž˜αŸ’αž„αžΆαžαŸ‹ αžŠαžΌαž…αŸ’αž“αŸαŸ‡β€‹αž”αŸ’αžšαžŸαž·αž“β€‹αž”αžΎβ€‹αžœαžΆβ€‹αž’αžΆαž…β€‹αž”αŸ’αžšαžΎβ€‹αž›αž‘αŸ’αž’αž•αž›β€‹αž“αŸƒβ€‹αž…αŸ’αž”αžΆαž”αŸ‹β€‹αžŠαŸ‚αž›β€‹αž˜αžΆαž“β€‹αžŸαŸ’αžšαžΆαž”αŸ‹ αž“αŸ„αŸ‡β€‹αžœαžΆβ€‹αž›αŸ’αž’β€‹αž‡αžΆαž„β€‹αž€αŸ’αž“αž»αž„β€‹αž€αžΆαžšβ€‹αž’αŸ’αžœαžΎβ€‹αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αžœαžΆβ€‹αž“αžΉαž„β€‹αž€αžΆαžαŸ‹β€‹αž”αž“αŸ’αžαž™β€‹αž–αŸαž›β€‹αžœαŸαž›αžΆβ€‹αžŸαŸ’αž€αŸαž“αŸ”

  7. αž…αŸ’αž”αžΆαž”αŸ‹αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαž“αŸ…αž€αž˜αŸ’αžšαž·αžαž•αŸ’αžŸαŸαž„αŸ—αž‚αŸ’αž“αžΆαŸ–

  • αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž‘αžΆαŸ†αž„αž˜αžΌαž› - αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžŸαŸ’αž€αŸαž“αž‚αž˜αŸ’αžšαŸ„αž„αžŽαžΆαž˜αž½αž™αŸ”

  • αž“αŸ…αž€αž˜αŸ’αžšαž·αžαž€αŸ’αžšαž»αž˜ (αž€αŸ’αžšαž»αž˜) - αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαžŸαŸ’αž€αŸαž“αž‚αž˜αŸ’αžšαŸ„αž„αž“αŸ…αž€αŸ’αž“αž»αž„αž€αŸ’αžšαž»αž˜αžŠαŸ‚αž›αž”αžΆαž“αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ”

  • αž“αŸ…αž€αž˜αŸ’αžšαž·αžαž‚αž˜αŸ’αžšαŸ„αž„ - αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαž“αŸ…αž€αŸ’αž“αž»αž„αž‚αž˜αŸ’αžšαŸ„αž„αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž˜αž½αž™αŸ”

    αžšαž”αŸ€αž”αžŸαžšαžŸαŸαžšαž…αŸ’αž”αžΆαž”αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Checkmarx αžŠαŸ„αž™αž˜αž·αž“αž†αŸ’αž€αž½αžαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž€αž˜αŸ’αžšαž·αžαžŠαŸ‚αž›αž…αŸ’αž”αžΆαž”αŸ‹αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αž

"αžœαž…αž“αžΆαž“αž»αž€αŸ’αžšαž˜" αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžŠαŸ†αž”αžΌαž„

αž αžΎαž™αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž‡αžΆαž˜αž½αž™αž“αžΉαž„αžšαžΏαž„αž˜αž½αž™αž…αŸ†αž“αž½αž“αžŠαŸ‚αž›αž”αžŽαŸ’αžαžΆαž›αž±αŸ’αž™αžαŸ’αž‰αž»αŸ†αž˜αžΆαž“αž…αž˜αŸ’αž„αž›αŸ‹ αž αžΎαž™αžαŸ’αž‰αž»αŸ†αž€αŸαž“αžΉαž„αž”αž„αŸ’αž αžΆαž‰αž–αžΈαž”αž…αŸ’αž…αŸαž€αž‘αŸαžŸαž˜αž½αž™αž…αŸ†αž“αž½αž“αžŠαŸ‚αž›αž“αžΉαž„αž’αŸ’αžœαžΎαž±αŸ’αž™αž‡αžΈαžœαž·αžαž€αžΆαž“αŸ‹αžαŸ‚αž„αžΆαž™αžŸαŸ’αžšαž½αž›αŸ”

αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž‡αžΆαž˜αž½αž™αž”αž‰αŸ’αž‡αžΈ

- Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ (list2 - list1)
* пСрСсСчСниС списков (list1 * list2)
+ слоТСниС списков (list1 + list2)

& (логичСскоС И) - ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ списки ΠΏΠΎ совпадСнию (list1 & list2), Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ ΠΏΠ΅Ρ€Π΅ΡΠ΅Ρ‡Π΅Π½ΠΈΡŽ (list1 * list2)
| (логичСскоС Π˜Π›Π˜) - ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ списки ΠΏΠΎ ΡˆΠΈΡ€ΠΎΠΊΠΎΠΌΡƒ поиску (list1 | list2)

Π‘ΠΎ списками Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚:  ^  &&  ||  %  / 

αž’αžΆαžαž»αžŠαŸ‚αž›αž”αžΆαž“αžšαž€αžƒαžΎαž‰αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αŸ”

αž“αŸ…αž€αŸ’αž“αž»αž„αž—αžΆαžŸαžΆαžŠαŸ‚αž›αž”αžΆαž“αžŸαŸ’αž€αŸαž“ αž’αŸ’αž“αž€αž’αžΆαž…αž‘αž‘αž½αž›αž”αžΆαž“αž”αž‰αŸ’αž‡αžΈαž“αŸƒαž’αžΆαžαž»αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŠαŸ‚αž› Checkmarx αž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αž’αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆαžŽ (αžαŸ’αžŸαŸ‚αž’αž€αŸ’αžŸαžš αž˜αž»αžαž„αžΆαžš αžαŸ’αž“αžΆαž€αŸ‹ αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαŸ”αž›αŸ”)αŸ” αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž…αž“αŸ’αž›αŸ„αŸ‡αž˜αž½αž™αž…αŸ†αž“αž½αž“αž“αŸƒαžœαžαŸ’αžαž»αžŠαŸ‚αž›αž’αžΆαž…αž…αžΌαž›αž”αžΆαž“αžαžΆαž˜αžšαž™αŸˆ All. αž“αŸ„αŸ‡αž‚αžΊαžŠαžΎαž˜αŸ’αž”αžΈαžŸαŸ’αžœαŸ‚αž„αžšαž€αžœαžαŸ’αžαž»αžŠαŸ‚αž›αž˜αžΆαž“αžˆαŸ’αž˜αŸ„αŸ‡αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹ searchMeαž§αž‘αžΆαž αžšαžŽαŸ αž’αŸ’αž“αž€αž’αžΆαž…αžŸαŸ’αžœαŸ‚αž„αžšαž€αžαžΆαž˜αžˆαŸ’αž˜αŸ„αŸ‡αžαžΆαž˜αžœαžαŸ’αžαž»αžŠαŸ‚αž›αž”αžΆαž“αžšαž€αžƒαžΎαž‰αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αŸ–

// Π’Π°ΠΊΠΎΠΉ запрос выдаст всС элСмСнты
result = All;

// Π’Π°ΠΊΠΎΠΉ запрос выдаст всС элСмСнты, Π² ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… присутствуСт β€œsearchMeβ€œ
result = All.FindByName("searchMe");

αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž€αžΆαžšαžŸαŸ’αžœαŸ‚αž„αžšαž€αž‡αžΆαž—αžΆαžŸαžΆαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαžŠαŸ‚αž›αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž αŸαžαž»αž•αž›αž˜αž½αž™αž…αŸ†αž“αž½αž“αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŸαŸ’αž€αŸαž“ (αž§αž‘αžΆαž αžšαžŽαŸ groovy αž“αŸ…αž€αŸ’αž“αž»αž„αž‚αž˜αŸ’αžšαŸ„αž„ Android) αž’αŸ’αž“αž€αž’αžΆαž…αž–αž„αŸ’αžšαžΈαž€αž‘αŸ†αž αŸ†αžœαžαŸ’αžαž»αžšαž”αžŸαŸ‹αž™αžΎαž„αžαžΆαž˜αžšαž™αŸˆαž’αžαŸαžšαž˜αž½αž™αŸ–

result = AllMembers.All.FindByName("searchMe");

αž˜αž»αžαž„αžΆαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžœαž·αž—αžΆαž‚αž›αŸ†αž αžΌαžš

αž˜αž»αžαž„αžΆαžšαž‘αžΆαŸ†αž„αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž€αŸ’αž“αž»αž„αž…αŸ’αž”αžΆαž”αŸ‹αž‡αžΆαž…αŸ’αžšαžΎαž“ αž αžΎαž™αž“αŸαŸ‡αž‚αžΊαž‡αžΆαžŸαž“αŸ’αž›αžΉαž€αž”αž“αŸ’αž›αŸ†αžαžΌαž…αž˜αž½αž™αž“αŸƒαž’αžαŸ’αžαž“αŸαž™αžšαž”αžŸαŸ‹αžœαžΆαŸ–

// КакиС Π΄Π°Π½Π½Ρ‹Π΅ second Π²Π»ΠΈΡΡŽΡ‚ Π½Π° first.
// Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами - ВО (second) Ρ‡Ρ‚ΠΎ влияСт Π½Π°  ΠœΠ•ΠΠ― (first).
result = first.DataInfluencedBy(second);

// КакиС Π΄Π°Π½Π½Ρ‹Π΅ first Π²Π»ΠΈΡΡŽΡ‚ Π½Π° second.
// Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами - Π― (first) влияю Π½Π° ВО (second).
result = first.DataInfluencingOn(second);

αž‘αž‘αž½αž›αž”αžΆαž“αžˆαŸ’αž˜αŸ„αŸ‡αž―αž€αžŸαžΆαžš/αž•αŸ’αž›αžΌαžœ

αž˜αžΆαž“αž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆαž‡αžΆαž…αŸ’αžšαžΎαž“αžŠαŸ‚αž›αž’αžΆαž…αž‘αž‘αž½αž›αž”αžΆαž“αž–αžΈαž›αž‘αŸ’αž’αž•αž›αž“αŸƒαžŸαŸ†αžŽαž½αžš (αžˆαŸ’αž˜αŸ„αŸ‡αž―αž€αžŸαžΆαžšαžŠαŸ‚αž›αž”αžΆαž“αžšαž€αžƒαžΎαž‰ αžαŸ’αžŸαŸ‚αž’αž€αŸ’αžŸαžšαŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαžŠαžΌαž…αŸ’αž“αŸαŸ‡αž”αžΆαž“ αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž…αžΌαž›αž‘αŸ…αž€αžΆαž“αŸ‹αž›αž€αŸ’αžαžŽαŸˆαžŸαž˜αŸ’αž”αžαŸ’αžαž· LinePragma αž αžΎαž™αžœαžαŸ’αžαž»αžŠαŸ‚αž›αž™αžΎαž„αžαŸ’αžšαžΌαžœαž€αžΆαžšαž“αžΉαž„αž˜αžΆαž“αž‘αžΈαžαžΆαŸ†αž„αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„αžœαžΆαŸ–

// Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π½Π°ΠΉΠ΄Π΅ΠΌ всС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹
CxList methods = Find_Methods();

// Π’ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… Π½Π°ΠΉΠ΄Π΅ΠΌ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ scope
CxList scope = methods.FindByName("scope");

// Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΠΎΠΆΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ
string current_filename = scope.GetFirstGraph().LinePragma.FileName;

// А Π²ΠΎΡ‚ Ρ‚Π°ΠΊΠΈΠΌ - строку, Π³Π΄Π΅ нашлось срабатываниС
int current_line = scope.GetFirstGraph().LinePragma.Line;

// Π­Ρ‚ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ Ρ€Π°Π·Π½ΠΎΠΌΡƒ
// НапримСр ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ всС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² Ρ„Π°ΠΉΠ»Π΅
CxList inFile = All.FindByFileName(current_filename);

// Или Π½Π°ΠΉΡ‚ΠΈ Ρ‡Ρ‚ΠΎ происходит Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ строкС
CxList inLine = inFile.FindByPosition(current_line);

αžœαžΆαž‚αžΊαž˜αžΆαž“αžαŸ†αž›αŸƒαžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž€αŸ’αž“αž»αž„αž…αž·αžαŸ’αžαž“αŸ„αŸ‡αŸ” FileName αž–αž·αžαž‡αžΆαž˜αžΆαž“αž•αŸ’αž›αžΌαžœαž‘αŸ…αž€αžΆαž“αŸ‹αž―αž€αžŸαžΆαžš αžŠαŸ„αž™αžŸαžΆαžšαž™αžΎαž„αž”αžΆαž“αž”αŸ’αžšαžΎαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžš GetFirstGraph.

αž›αž‘αŸ’αž’αž•αž›αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·

αž˜αžΆαž“αž’αžαŸαžšαž–αž·αžŸαŸαžŸαž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„ CxQL resultαžŠαŸ‚αž›αžαŸ’αžšαž‘αž”αŸ‹αž›αž‘αŸ’αž’αž•αž›αž“αŸƒαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž…αŸ’αž”αžΆαž”αŸ‹αž‡αžΆαž›αžΆαž™αž›αž€αŸ’αžαžŽαŸαž’αž€αŸ’αžŸαžšαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ” αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž—αŸ’αž›αžΆαž˜αŸ— αž αžΎαž™αž’αŸ’αž“αž€αž’αžΆαž…αžŸαžšαžŸαŸαžšαž›αž‘αŸ’αž’αž•αž›αž€αž˜αŸ’αžšαž·αžαž˜αž’αŸ’αž™αž˜αž‘αŸ…αž€αŸ’αž“αž»αž„αžœαžΆ αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžš αž“αž·αž„αž€αŸ‚αž›αž˜αŸ’αž’αž–αž½αž€αžœαžΆαž“αŸ…αž–αŸαž›αž’αŸ’αž“αž€αž’αŸ’αžœαžΎαž€αžΆαžšαŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž˜αž·αž“αž˜αžΆαž“αž€αžΆαžšαž…αžΆαžαŸ‹αžαžΆαŸ†αž„αž‘αŸ…αž’αžαŸαžšαž“αŸαŸ‡ αž¬αž˜αž»αžαž„αžΆαžšαž“αŸ…αž€αŸ’αž“αž»αž„αž…αŸ’αž”αžΆαž”αŸ‹αž‘αŸαŸ” return- αž›αž‘αŸ’αž’αž•αž›αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž“αžΉαž„αžαŸ‚αž„αžαŸ‚αž‡αžΆαžŸαžΌαž“αŸ’αž™αŸ”

αžŸαŸ†αžŽαž½αžšαžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž“αžΉαž„αž˜αž·αž“αž•αŸ’αžαž›αŸ‹αž’αŸ’αžœαžΈαž˜αž€αž™αžΎαž„αžœαž·αž‰αž‡αžΆαž›αž‘αŸ’αž’αž•αž›αž“αŸƒαž€αžΆαžšαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž‘αŸ αž αžΎαž™αž“αžΉαž„αž“αŸ…αžαŸ‚αž‘αž‘αŸαž‡αžΆαž“αž·αž…αŸ’αž…αŸ–

// Находим элСмСнты foo
CxList libraries = All.FindByName("foo");

αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžŠαŸ„αž™αž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αž›αž‘αŸ’αž’αž•αž›αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž‘αŸ…αž›αž‘αŸ’αž’αž•αž›αž’αžαŸαžšαžœαŸαž‘αž˜αž“αŸ’αž αž™αžΎαž„αž“αžΉαž„αžƒαžΎαž‰αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž€αžΆαžšαž αŸ…αž“αŸαŸ‡αžαŸ’αžšαž‘αž”αŸ‹αž˜αž€αž™αžΎαž„αžœαž·αž‰αŸ–

// Находим элСмСнты foo
CxList libraries = All.FindByName("foo");

// Π’Ρ‹Π²ΠΎΠ΄ΠΈΠΌ, ΠΊΠ°ΠΊ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€Π°Π²ΠΈΠ»Π°
result = libraries

// Или Π΅Ρ‰Π΅ ΠΊΠΎΡ€ΠΎΡ‡Π΅
result = All.FindByName("foo");

αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž›αž‘αŸ’αž’αž•αž›αž“αŸƒαž…αŸ’αž”αžΆαž”αŸ‹αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαŸ”

αž…αŸ’αž”αžΆαž”αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„ Checkmarx αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαž αŸ…αžαžΆαžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆαž‘αŸ…αž“αžΉαž„αž˜αž»αžαž„αžΆαžšαž“αŸ…αž€αŸ’αž“αž»αž„αž—αžΆαžŸαžΆαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αž˜αŸ’αž˜αžαžΆαŸ” αž“αŸ…αž–αŸαž›αžŸαžšαžŸαŸαžšαž…αŸ’αž”αžΆαž”αŸ‹ αž’αŸ’αž“αž€αž’αžΆαž…αž”αŸ’αžšαžΎαž›αž‘αŸ’αž’αž•αž›αž“αŸƒαžŸαŸ†αžŽαž½αžšαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαŸ” αž§αž‘αžΆαž αžšαžŽαŸ αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αžΆαžšαž αŸ…αžαžΆαž˜αžœαž·αž’αžΈαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž€αŸ’αž“αž»αž„αž€αžΌαžŠαžšαžΆαž›αŸ‹αž–αŸαž›αž“αŸ„αŸ‡αž‘αŸ αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž αŸ…αž€αŸ’αž”αž½αž“αžŠαŸ‚αž›αž…αž„αŸ‹αž”αžΆαž“αŸ–

// ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π°
CxList methods = Find_Methods();

// Π˜Ρ‰Π΅ΠΌ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ foo. 
// Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ false ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΈΡ‰Π΅ΠΌ Π±Π΅Π· Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΊ рСгистру
result = methods.FindByShortName("foo", false);

αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž“αŸαŸ‡αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αž€αžΌαžŠ αž“αž·αž„αž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αž–αŸαž›αžœαŸαž›αžΆαž’αž“αž»αžœαžαŸ’αžαž…αŸ’αž”αžΆαž”αŸ‹αž™αŸ‰αžΆαž„αžŸαŸ†αžαžΆαž“αŸ‹αŸ”

αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αž‰αŸ’αž αžΆ

αž€αžΆαžšαž€αžΆαž”αŸ‹αžˆαžΎ

αž“αŸ…αž–αŸαž›αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž§αž”αž€αžšαžŽαŸ αž–αŸαž›αžαŸ’αž›αŸ‡αžœαžΆαž˜αž·αž“αž’αžΆαž…αž‘αŸ…αžšαž½αž…αž‘αŸαž€αŸ’αž“αž»αž„αž€αžΆαžšαžŸαžšαžŸαŸαžšαžŸαŸ†αžŽαž½αžšαžŠαŸ‚αž›αž…αž„αŸ‹αž”αžΆαž“αž—αŸ’αž›αžΆαž˜αŸ— αž αžΎαž™αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαžαŸ‚αž–αž·αžŸαŸ„αž’αž“αŸαžŠαŸ„αž™αž–αŸ’αž™αžΆαž™αžΆαž˜αž‡αž˜αŸ’αžšαžΎαžŸαž•αŸ’αžŸαŸαž„αŸ—αŸ” αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžšαžŽαžΈαž”αŸ‚αž”αž“αŸαŸ‡ αž§αž”αž€αžšαžŽαŸαž•αŸ’αžαž›αŸ‹αž“αžΌαžœαž€αžΆαžšαž€αžΆαž”αŸ‹αžˆαžΎ αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαž αŸ…αžαžΆαžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜:

// Находим Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ
CxList toLog = All.FindByShortName("log");

// Π€ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅ΠΌ строку ΠΈ отправляСм Π² Π»ΠΎΠ³
cxLog.WriteDebugMessage (β€œnumber of DOM elements =” + All.Count);

αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžœαžΆαž˜αžΆαž“αžαž˜αŸ’αž›αŸƒαž…αž„αž…αžΆαŸ†αžαžΆαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαž“αŸαŸ‡αž‘αž‘αž½αž›αž™αž€αžαŸ‚αž‡αžΆαž€αžΆαžšαž”αž‰αŸ’αž…αžΌαž›αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ” αžαŸ’αžŸαŸ‚αž’αž€αŸ’αžŸαžšαžŠαžΌαž…αŸ’αž“αŸαŸ‡αžœαžΆαž“αžΉαž„αž˜αž·αž“αž’αžΆαž…αž”αž„αŸ’αž αžΆαž‰αž”αž‰αŸ’αž‡αžΈαž–αŸαž‰αž›αŸαž‰αž“αŸƒαž’αžΆαžαž»αžŠαŸ‚αž›αž”αžΆαž“αžšαž€αžƒαžΎαž‰αž‡αžΆαž›αž‘αŸ’αž’αž•αž›αž“αŸƒαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαžŠαŸ†αž”αžΌαž„αž‘αžΎαž™αŸ” αž‡αž˜αŸ’αžšαžΎαžŸαž‘αžΈαž–αžΈαžšαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž”αŸ†αž”αžΆαžαŸ‹αž€αŸ†αž αž»αžŸαž‚αžΊαžαŸ’αžšαžΌαžœαž€αŸ†αžŽαžαŸ‹αž‘αŸ…αž’αžαŸαžšαžœαŸαž‘αž˜αž“αŸ’αžαž–αžΈαž–αŸαž›αž˜αž½αž™αž‘αŸ…αž–αŸαž›αž˜αž½αž™αŸ” result αž›αž‘αŸ’αž’αž•αž›αž“αŸƒαžŸαŸ†αžŽαž½αžš αž“αž·αž„αž˜αžΎαž›αžαžΆαž˜αžΆαž“αž’αŸ’αžœαžΈαž€αžΎαžαž‘αžΎαž„αŸ” αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž“αŸαŸ‡αž˜αž·αž“αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž‘αŸ αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαžαŸ‚αž”αŸ’αžšαžΆαž€αžŠαžαžΆαž˜αž·αž“αž˜αžΆαž“αž€αžΆαžšαž”αžŠαž·αžŸαŸαž’ αž¬αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž‡αžΆαž˜αž½αž™αžœαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΌαžŠαž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈ result αž¬αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚ Comment αž€αžΌαžŠαžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ” αž¬αž’αŸ’αž“αž€αž’αžΆαž…αžŠαžΌαž…αž‡αžΆαžαŸ’αž‰αž»αŸ† αž—αŸ’αž›αŸαž…αž›αž»αž”αž€αžΆαžšαž αŸ…αž‘αžΌαžšαžŸαž–αŸ’αž‘αž”αŸ‚αž”αž“αŸαŸ‡αž…αŸαž‰αž–αžΈαž…αŸ’αž”αžΆαž”αŸ‹αžŠαŸ‚αž›αžαŸ’αžšαŸ€αž˜αžšαž½αž…αž‡αžΆαžŸαŸ’αžšαŸαž… αž αžΎαž™αž†αŸ’αž„αž›αŸ‹αžαžΆαž αŸαžαž»αž’αŸ’αžœαžΈαž”αžΆαž“αž‡αžΆαž‚αŸ’αž˜αžΆαž“αž’αŸ’αžœαžΈαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ”

αž˜αž’αŸ’αž™αŸ„αž”αžΆαž™αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž‡αžΆαž„αž‚αžΊαž αŸ…αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžš return αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž€αžΆαžšαŸ” αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸαŸ‡ αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž…αŸ’αž”αžΆαž”αŸ‹αž“αžΉαž„αž”αž‰αŸ’αž…αž”αŸ‹ αž αžΎαž™αž™αžΎαž„αž“αžΉαž„αž’αžΆαž…αžŠαžΉαž„αžαžΆαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž”αžΆαž“αž€αžΎαžαž‘αžΎαž„αž‡αžΆαž›αž‘αŸ’αž’αž•αž›αž“αŸƒαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž™αžΎαž„αž”αžΆαž“αžŸαžšαžŸαŸαžšαŸ–

// Находим Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ
CxList toLog = All.FindByShortName("log");

// Π’Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния
return toLog

//ВсС, Ρ‡Ρ‚ΠΎ написано дальшС Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ
result = All.DataInfluencedBy(toLog)

αž”αž‰αŸ’αž αžΆβ€‹αž…αžΌαž›

αž˜αžΆαž“αžŸαŸ’αžαžΆαž“αž—αžΆαž–αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž’αŸ’αž“αž€αž˜αž·αž“αž’αžΆαž…αž…αžΌαž›αž”αŸ’αžšαžΎαž§αž”αž€αžšαžŽαŸ CxAudit (αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαžŸαžšαžŸαŸαžšαž…αŸ’αž”αžΆαž”αŸ‹)αŸ” αžœαžΆαž’αžΆαž…αž˜αžΆαž“αž αŸαžαž»αž•αž›αž‡αžΆαž…αŸ’αžšαžΎαž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αž‰αŸ’αž αžΆαž“αŸαŸ‡ αžšαž½αž˜αž‘αžΆαŸ†αž„αž€αžΆαžšαž‚αžΆαŸ†αž„ αž€αžΆαžšαž’αžΆαž”αŸ‹αžŠαŸαžαžœαžΈαž“αžŠαžΌαž—αŸ’αž›αžΆαž˜αŸ— BSOD αž“αž·αž„αžŸαŸ’αžαžΆαž“αž—αžΆαž–αžŠαŸ‚αž›αž˜αž·αž“αž”αžΆαž“αž˜αžΎαž›αžƒαžΎαž‰αž‘αž»αž€αž‡αžΆαž˜αž»αž“αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαžŠαŸ‚αž›αž αž½αžŸαž–αžΈαž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αžšαž”αžŸαŸ‹αž™αžΎαž„αŸ” αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸαŸ‡ αž‡αž½αž“αž€αžΆαž›αž˜αžΆαž“αžœαž‚αŸ’αž‚αžŠαŸ‚αž›αž˜αž·αž“αž‘αžΆαž“αŸ‹αž”αž‰αŸ’αž…αž”αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™ αžŠαŸ‚αž›αžšαžΆαžšαžΆαŸ†αž„αž’αŸ’αž“αž€αž–αžΈαž€αžΆαžšαž…αžΌαž›αž˜αŸ’αžαž„αž‘αŸ€αžαŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž‡αž½αžŸαž‡αž»αž›αžœαžΆ αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαŸ†αžŽαž½αžšαž‡αžΆαž…αŸ’αžšαžΎαž“αŸ–

αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Checkmarx αž˜αž»αž“ 8.6αŸ–

// ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π·Π°Π»ΠΎΠ³ΠΈΠ½Π΅Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² запрос Π² Π‘Π”
SELECT COUNT(*) FROM [CxDB].[dbo].LoggedinUser WHERE [ClientType] = 6;
 
// Если Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, Π° Π½Π° самом Π΄Π΅Π»Π΅ Π΄Π°ΠΆΠ΅ Ссли ΠΈ Π½Π΅Ρ‚, ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ запрос
DELETE FROM [CxDB].[dbo].LoggedinUser WHERE [ClientType] = 6;

αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Checkmarx αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈ 8.6αŸ–

// ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π·Π°Π»ΠΎΠ³ΠΈΠ½Π΅Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² запрос Π² Π‘Π”
SELECT COUNT(*) FROM LoggedinUser WHERE (ClientType = 'Audit');
 
// Если Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, Π° Π½Π° самом Π΄Π΅Π»Π΅ Π΄Π°ΠΆΠ΅ Ссли ΠΈ Π½Π΅Ρ‚, ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ запрос
DELETE FROM [CxDB].[dbo].LoggedinUser WHERE (ClientType = 'Audit');

αž…αŸ’αž”αžΆαž”αŸ‹αžŸαžšαžŸαŸαžš

αž₯αž‘αžΌαžœαž“αŸαŸ‡αž™αžΎαž„αž‘αŸ…αžŠαž›αŸ‹αž•αŸ’αž“αŸ‚αž€αžŠαŸ‚αž›αž‚αž½αžšαž±αŸ’αž™αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαž”αŸ†αž•αž»αžαŸ” αž“αŸ…αž–αŸαž›αž’αŸ’αž“αž€αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžŸαžšαžŸαŸαžšαž…αŸ’αž”αžΆαž”αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„ CxQL αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž’αŸ’αž“αž€αžαŸ‚αž„αžαŸ‚αžαŸ’αžœαŸ‡αž‚αžΊαž˜αž·αž“αž˜αžΆαž“αž―αž€αžŸαžΆαžšαž…αŸ’αžšαžΎαž“αžŠαžΌαž…αž§αž‘αžΆαž αžšαžŽαŸαžαŸ’αž›αŸ‡αž“αŸƒαž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αž‰αŸ’αž αžΆαž˜αž½αž™αž…αŸ†αž“αž½αž“ αž“αž·αž„αž€αžΆαžšαž–αž·αž–αžŽαŸŒαž“αžΆαž’αŸ†αž–αžΈαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸƒαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαžŸαŸ†αžŽαž½αžšαž‡αžΆαž‘αžΌαž‘αŸ…αŸ”

αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž–αŸ’αž™αžΆαž™αžΆαž˜αž’αŸ’αžœαžΎαž±αŸ’αž™αž‡αžΈαžœαž·αžαž€αžΆαž“αŸ‹αžαŸ‚αž„αžΆαž™αžŸαŸ’αžšαž½αž›αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αžŠαŸ‚αž›αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αž—αžΆαžŸαžΆαžŸαŸ†αžŽαž½αžš αž αžΎαž™αž•αŸ’αžαž›αŸ‹αž§αž‘αžΆαž αžšαžŽαŸαž˜αž½αž™αž…αŸ†αž“αž½αž“αž“αŸƒαž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ Custom Queries αžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αž‰αŸ’αž αžΆαž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αŸ” αž–αž½αž€αžœαžΆαž˜αž½αž™αž…αŸ†αž“αž½αž“αž˜αžΆαž“αž›αž€αŸ’αžαžŽαŸˆαž‘αžΌαž‘αŸ… αž αžΎαž™αž’αžΆαž…αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž€αŸ’αž“αž»αž„αž€αŸ’αžšαž»αž˜αž αŸŠαž»αž“αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž”αžΆαž“αžŠαŸ„αž™αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžš αžαŸ’αž›αŸ‡αž‘αŸ€αžαž˜αžΆαž“αž›αž€αŸ’αžαžŽαŸˆαž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž‡αžΆαž„ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž–αž½αž€αž‚αŸαž€αŸαž’αžΆαž…αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž”αžΆαž“αžŠαŸ„αž™αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž€αžΌαžŠαž±αŸ’αž™αžŸαž˜αžŸαŸ’αžšαž”αž‘αŸ…αž“αžΉαž„αž›αž€αŸ’αžαžŽαŸˆαž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ”

αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αž“αŸαŸ‡αž‡αžΆαž”αž‰αŸ’αž αžΆαžŠαŸ‚αž›αž™αžΎαž„αž‡αž½αž”αž”αŸ’αžšαž‘αŸ‡αž‰αžΉαž€αž‰αžΆαž”αŸ‹αž”αŸ†αž•αž»αžαŸ–

αž—αžΆαžšαž€αž·αž…αŸ’αž…αŸ– αž˜αžΆαž“αž›αŸ†αž αžΌαžšαž‡αžΆαž…αŸ’αžšαžΎαž“αž“αŸ…αž€αŸ’αž“αž»αž„αž›αž‘αŸ’αž’αž•αž›αž“αŸƒαž€αžΆαžšαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž…αŸ’αž”αžΆαž”αŸ‹ αž αžΎαž™αž˜αž½αž™αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαŸ„αž˜αž–αž½αž€αž‚αŸαž‚αžΊαž‡αžΆαžŸαŸ†αž”αž»αž€αž“αŸƒαž˜αž½αž™αž•αŸ’αžŸαŸαž„αž‘αŸ€αž αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαžαŸ‚αž‘αž»αž€αž˜αž½αž™αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαŸ„αž˜αž–αž½αž€αž‚αŸαŸ”

αž‡αžΆαžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™: αž‡αžΆαž€αžΆαžšαž–αž·αžαžŽαžΆαžŸαŸ‹ αž–αŸαž›αžαŸ’αž›αŸ‡ Checkmarx αž”αž„αŸ’αž αžΆαž‰αž›αŸ†αž αžΌαžšαž‘αž·αž“αŸ’αž“αž“αŸαž™αž‡αžΆαž…αŸ’αžšαžΎαž“αžŠαŸ‚αž›αž’αžΆαž…αžαŸ’αžšαž½αžαž›αžΎαž‚αŸ’αž“αžΆ αž“αž·αž„αž‡αžΆαž€αŸ†αžŽαŸ‚αžαŸ’αž›αžΈαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αžŠαž‘αŸƒαŸ” αž˜αžΆαž“αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž–αž·αžŸαŸαžŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžšαžŽαžΈαž”αŸ‚αž”αž“αŸαŸ‡ αž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αž›αŸ†αž αžΌαžšαŸ” αž’αžΆαžŸαŸ’αžšαŸαž™αž›αžΎαž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžš αžœαžΆαž“αžΉαž„αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž›αŸ†αž αžΌαžšαžαŸ’αž›αžΈαž”αŸ†αž•αž»αž αž¬αžœαŸ‚αž„αž”αŸ†αž•αž»αžαŸ–

// ΠžΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π»ΠΈΠ½Π½Ρ‹Π΅ Flow
result = result.ReduceFlow(CxList.ReduceFlowType.ReduceSmallFlow);

// ΠžΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅ Flow
result = result.ReduceFlow(CxList.ReduceFlowType.ReduceBigFlow);

αž—αžΆαžšαž€αž·αž…αŸ’αž…αŸ– αž–αž„αŸ’αžšαžΈαž€αž”αž‰αŸ’αž‡αžΈαž‘αž·αž“αŸ’αž“αž“αŸαž™αžšαžŸαžΎαž”αžŠαŸ‚αž›αž§αž”αž€αžšαžŽαŸαž˜αžΆαž“αž”αŸ’αžšαžαž·αž€αž˜αŸ’αž˜

αž‡αžΆαžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™: Checkmarx αž˜αžΆαž“αž…αŸ’αž”αžΆαž”αŸ‹αž‡αžΆαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“ αžŠαŸ‚αž›αž›αž‘αŸ’αž’αž•αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŠαŸ„αž™αžŸαŸ†αžŽαž½αžšαž‡αžΆαž…αŸ’αžšαžΎαž“αž‘αŸ€αžαŸ” αžŠαŸ„αž™αž€αžΆαžšαž”αŸ†αž–αŸαž‰αž”αž“αŸ’αžαŸ‚αž˜αž“αžΌαžœαž…αŸ’αž”αžΆαž”αŸ‹αž‘αžΆαŸ†αž„αž“αŸαŸ‡αž˜αž½αž™αž…αŸ†αž“αž½αž“αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž‘αž·αž“αŸ’αž“αž“αŸαž™αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž…αŸ†αž–αŸ„αŸ‡αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€ αž’αŸ’αž“αž€αž’αžΆαž…αž€αŸ‚αž›αž˜αŸ’αž’αž›αž‘αŸ’αž’αž•αž›αžŸαŸ’αž€αŸαž“αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž—αŸ’αž›αžΆαž˜αŸ—αŸ” αžαžΆαž„β€‹αž€αŸ’αžšαŸ„αž˜β€‹αž“αŸαŸ‡β€‹αž‡αžΆβ€‹αž…αŸ’αž”αžΆαž”αŸ‹β€‹αž§αž‘αžΆαž αžšαžŽαŸβ€‹αžŠαžΎαž˜αŸ’αž”αžΈβ€‹αž±αŸ’αž™β€‹αž’αŸ’αž“αž€β€‹αž…αžΆαž”αŸ‹β€‹αž•αŸ’αžŠαžΎαž˜αŸ–

αž”αž‰αŸ’αž‡αžΈαž‘αžΌαž‘αŸ…_αž―αž€αž‡αž“αž—αžΆαž–_αž€αžΆαžšαžšαŸ†αž›αŸ„αž—αž”αŸ†αž–αžΆαž“

αžαŸ„αŸ‡αž”αž“αŸ’αžαŸ‚αž˜αž’αžαŸαžšαž‡αžΆαž…αŸ’αžšαžΎαž“αžŠαŸ‚αž›αž”αŸ’αžšαžΎαž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž”αžŸαŸ‹αž™αžΎαž„αžŠαžΎαž˜αŸ’αž”αžΈαžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž–αŸαžαŸŒαž˜αžΆαž“αžšαžŸαžΎαž”αŸ–

// ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π°
result = base.General_privacy_violation_list();

// Π˜Ρ‰Π΅ΠΌ элСмСнты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ ΠΏΠΎΠ΄ простыС рСгулярныС выраТСния. МоТно Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½Ρ‹ΠΌΠΈ для вас ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π°ΠΌΠΈ.
CxList personalList = All.FindByShortNames(new List<string> {
	"*securityToken*", "*sessionId*"}, false);

// ДобавляСм ΠΊ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌΡƒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ
result.Add(personalList);

αž—αžΆαžšαž€αž·αž…αŸ’αž…αŸ– αž–αž„αŸ’αžšαžΈαž€αž”αž‰αŸ’αž‡αžΈαž’αžαŸαžšαžŠαŸ„αž™αž”αŸ’αžšαžΎαž–αžΆαž€αŸ’αž™αžŸαž˜αŸ’αž„αžΆαžαŸ‹

αž‡αžΆαžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™: αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž•αŸ’αžαž›αŸ‹αž’αž“αž»αžŸαžΆαžŸαž“αŸαž—αŸ’αž›αžΆαž˜αŸ—αž±αŸ’αž™αž™αž€αž…αž·αžαŸ’αžαž‘αž»αž€αžŠαžΆαž€αŸ‹αž›αžΎαž…αŸ’αž”αžΆαž”αŸ‹αž‡αžΆαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž–αžΆαž€αŸ’αž™αžŸαž˜αŸ’αž„αžΆαžαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΌαžŠ αž αžΎαž™αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ…αžœαžΆαž“αžΌαžœαž”αž‰αŸ’αž‡αžΈαžˆαŸ’αž˜αŸ„αŸ‡αž’αžαŸαžšαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž‡αžΆαž‘αžΌαž‘αŸ…αž“αŸ…αž€αŸ’αž“αž»αž„αž€αŸ’αžšαž»αž˜αž αŸŠαž»αž“αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ”

αž›αŸαžαžŸαž˜αŸ’αž„αžΆαžαŸ‹_αž―αž€αž‡αž“_αž€αžΆαžšαž”αŸ†αž–αžΆαž“_αž”αž‰αŸ’αž‡αžΈ

CxList allStrings = All.FindByType("String"); 
allStrings.Add(All.FindByType(typeof(StringLiteral))); 
allStrings.Add(Find_UnknownReference());
allStrings.Add(All.FindByType(typeof (Declarator)));
allStrings.Add(All.FindByType(typeof (MemberAccess)));
allStrings.Add(All.FindByType(typeof(EnumMemberDecl))); 
allStrings.Add(Find_Methods().FindByShortName("get*"));

// ДополняСм Π΄Π΅Ρ„ΠΎΠ»Ρ‚Π½Ρ‹ΠΉ список ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…
List < string > pswdIncludeList = new List<string>{"*password*", "*psw", "psw*", "pwd*", "*pwd", "*authKey*", "pass*", "cipher*", "*cipher", "pass", "adgangskode", "benutzerkennwort", "chiffre", "clave", "codewort", "contrasena", "contrasenya", "geheimcode", "geslo", "heslo", "jelszo", "kennwort", "losenord", "losung", "losungswort", "lozinka", "modpas", "motdepasse", "parol", "parola", "parole", "pasahitza", "pasfhocal", "passe", "passord", "passwort", "pasvorto", "paswoord", "salasana", "schluessel", "schluesselwort", "senha", "sifre", "wachtwoord", "wagwoord", "watchword", "zugangswort", "PAROLACHIAVE", "PAROLA CHIAVE", "PAROLECHIAVI", "PAROLE CHIAVI", "paroladordine", "verschluesselt", "sisma",
                "pincode",
								"pin"};
								
List < string > pswdExcludeList = new List<string>{"*pass", "*passable*", "*passage*", "*passenger*", "*passer*", "*passing*", "*passion*", "*passive*", "*passover*", "*passport*", "*passed*", "*compass*", "*bypass*", "pass-through", "passthru", "passthrough", "passbytes", "passcount", "passratio"};

CxList tempResult = allStrings.FindByShortNames(pswdIncludeList, false);
CxList toRemove = tempResult.FindByShortNames(pswdExcludeList, false);
tempResult -= toRemove;
tempResult.Add(allStrings.FindByShortName("pass", false));

foreach (CxList r in tempResult)
{
	CSharpGraph g = r.data.GetByIndex(0) as CSharpGraph;
	if(g != null && g.ShortName != null && g.ShortName.Length < 50)
	{
		result.Add(r);
	}
}

αž—αžΆαžšαž€αž·αž…αŸ’αž…αŸ– αž”αž“αŸ’αžαŸ‚αž˜αž€αŸ’αžšαž”αžαŸαžŽαŸ’αžŒαžŠαŸ‚αž›αž”αžΆαž“αž”αŸ’αžšαžΎαžŠαŸ‚αž›αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αžΆαŸ†αž‘αŸ’αžšαžŠαŸ„αž™ Checkmarx

αž‡αžΆαžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™: αžŸαŸ†αžŽαž½αžšαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„ Checkmarx αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ‚αž„αž…αŸ‚αž€αžαžΆαž˜αž—αžΆαžŸαžΆ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž”αž“αŸ’αžαŸ‚αž˜αž…αŸ’αž”αžΆαž”αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž—αžΆαžŸαžΆαž“αžΈαž˜αž½αž™αŸ—αŸ” αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸαž˜αž½αž™αž…αŸ†αž“αž½αž“αž“αŸƒαž…αŸ’αž”αžΆαž”αŸ‹αž”αŸ‚αž”αž“αŸαŸ‡αŸ”

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŠαŸ‚αž›αž”αŸ†αž–αŸαž‰αž”αž“αŸ’αžαŸ‚αž˜ αž¬αž‡αŸ†αž“αž½αžŸαž˜αž»αžαž„αžΆαžšαžŸαŸ’αžαž„αŸ‹αžŠαžΆαžš αž“αŸ„αŸ‡αž–αž½αž€αžœαžΆαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž™αŸ‰αžΆαž„αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž‘αŸ…αž€αŸ’αž“αž»αž„αž…αŸ’αž”αžΆαž”αŸ‹αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž’αŸ’αž“αž€αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αž“αžΆαžŠαŸ‚αž›αž”αŸ’αžšαžΎαžœαžΆαž“αžΉαž„αžŠαžΉαž„αž—αŸ’αž›αžΆαž˜αŸ—αž’αŸ†αž–αžΈαž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αžαŸ’αž˜αžΈαŸ” αž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸ αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž…αžΌαž›αž”αŸ’αžšαž–αŸαž“αŸ’αž’ Android αž‚αžΊ Timber αž“αž·αž„ Loggi αŸ” αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž‰αŸ’αž…αž”αŸ‹αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“ αž˜αž·αž“αž˜αžΆαž“αž…αŸ’αž”αžΆαž”αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αŸ†αžŽαžαŸ‹αž’αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆαžŽαž€αžΆαžšαž αŸ…αž‘αžΌαžšαžŸαž–αŸ’αž‘αžŠαŸ‚αž›αž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž‘αŸ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž–αžΆαž€αŸ’αž™αžŸαž˜αŸ’αž„αžΆαžαŸ‹ αž¬αž§αž”αž€αžšαžŽαŸαž€αŸ†αžŽαžαŸ‹αžŸαž˜αŸαž™αž…αžΌαž›αžŠαž›αŸ‹αž€αŸ†αžŽαžαŸ‹αž αŸαžαž» αž™αžΎαž„αž“αžΉαž„αž˜αž·αž“αžŠαžΉαž„αž’αŸ†αž–αžΈαžœαžΆαž‘αŸαŸ” αž…αžΌαžšαž™αžΎαž„αž–αŸ’αž™αžΆαž™αžΆαž˜αž”αž“αŸ’αžαŸ‚αž˜αž“αž·αž™αž˜αž“αŸαž™αž“αŸƒαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž”αŸ‚αž”αž“αŸαŸ‡αž‘αŸ…αž“αžΉαž„αž…αŸ’αž”αžΆαž”αŸ‹ Checkmarx αŸ”

αžŸαžΆαž€αž›αŸ’αž”αž„αž§αž‘αžΆαž αžšαžŽαŸαž€αžΌαžŠαžŠαŸ‚αž›αž”αŸ’αžšαžΎαž”αžŽαŸ’αžŽαžΆαž›αŸαž™ Timber αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž€αžαŸ‹αžαŸ’αžšαžΆαŸ–

package com.death.timberdemo;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import timber.log.Timber;

public class MainActivity extends AppCompatActivity {
    private static final String TAG = MainActivity.class.getSimpleName();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Timber.e("Error Message");
        Timber.d("Debug Message");

        Timber.tag("Some Different tag").e("And error message");
    }
}

αž αžΎαž™αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸαž“αŸƒαžŸαŸ†αžŽαžΎαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Checkmarx αžŠαŸ‚αž›αž“αžΉαž„αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž”αž“αŸ’αžαŸ‚αž˜αž“αž·αž™αž˜αž“αŸαž™αž“αŸƒαž€αžΆαžšαž αŸ…αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžš Timber αž‡αžΆαž…αŸ†αžŽαž»αž…αž…αŸαž‰αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‘αž·αž“αŸ’αž“αž“αŸαž™αž–αžΈαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαŸ–

αžŸαŸ’αžœαŸ‚αž„αžšαž€αž›αž‘αŸ’αž’αž•αž› Android

// ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π°
result = base.Find_Android_Outputs();

// ДополняСм Π²Ρ‹Π·ΠΎΠ²Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ приходят ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Timber
CxList timber = All.FindByExactMemberAccess("Timber.*") +
    All.FindByShortName("Timber").GetMembersOfTarget();

// ДобавляСм ΠΊ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌΡƒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ
result.Add(timber);

αž αžΎαž™β€‹αž’αŸ’αž“αž€β€‹αž€αŸβ€‹αž’αžΆαž…β€‹αž”αž“αŸ’αžαŸ‚αž˜β€‹αž‘αŸ…β€‹αž“αžΉαž„β€‹αž…αŸ’αž”αžΆαž”αŸ‹β€‹αžŠαŸ‚αž›β€‹αž“αŸ…β€‹αž‡αž·αžβ€‹αžαžΆαž„β€‹αžŠαŸ‚αžš αž”αŸ‰αž»αž“αŸ’αžαŸ‚β€‹αžœαžΆβ€‹αž‘αžΆαž€αŸ‹αž‘αž„β€‹αž•αŸ’αž‘αžΆαž›αŸ‹β€‹αž“αžΉαž„β€‹αž€αžΆαžšβ€‹αž…αžΌαž›β€‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’ AndroidαŸ–

αžŸαŸ’αžœαŸ‚αž„αžšαž€ AndroidLog_Outputs

// ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π°
result = base.Find_Android_Log_Outputs();

// ДополняСм Π²Ρ‹Π·ΠΎΠ²Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ приходят ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Timber
result.Add(
  All.FindByExactMemberAccess("Timber.*") +
  All.FindByShortName("Timber").GetMembersOfTarget()
);

αž•αž„αžŠαŸ‚αžšαž”αŸ’αžšαžŸαž·αž“αž”αžΎαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ Android αž”αŸ’αžšαžΎ αž’αŸ’αž“αž€αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αžΆαžšαž„αžΆαžš αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž„αžΆαžšαž’αžŸαž˜αž€αžΆαž› αžœαžΆαž‡αžΆαž€αžΆαžšαž”αŸ’αžšαžŸαžΎαžšαž€αŸ’αž“αž»αž„αž€αžΆαžšαž‡αžΌαž“αžŠαŸ†αžŽαžΉαž„αžŠαž›αŸ‹ Checkmarx αž”αž“αŸ’αžαŸ‚αž˜αž’αŸ†αž–αžΈαž”αž‰αŸ’αž αžΆαž“αŸαŸ‡ αžŠαŸ„αž™αž”αž“αŸ’αžαŸ‚αž˜αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαžŠαžΎαž˜αŸ’αž”αžΈαž‘αž‘αž½αž›αž”αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αž–αžΈαž€αž·αž…αŸ’αž…αž€αžΆαžšαŸ” getInputData:

αžŸαŸ’αžœαŸ‚αž„αžšαž€ AndroidRead

// ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π°
result = base.Find_Android_Read();

// ДополняСм Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ getInputData, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² WorkManager
CxList getInputData = All.FindByShortName("getInputData");

// ДобавляСм ΠΊ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌΡƒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ
result.Add(getInputData.GetMembersOfTarget());

αž—αžΆαžšαž€αž·αž…αŸ’αž…αŸ– αž€αŸ†αž–αž»αž„αžŸαŸ’αžœαŸ‚αž„αžšαž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αžšαžŸαžΎαž”αž“αŸ…αž€αŸ’αž“αž»αž„αž”αž‰αŸ’αž‡αžΈαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‚αž˜αŸ’αžšαŸ„αž„ iOS

αž‡αžΆαžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™: iOS αž‡αžΆαž‰αžΉαž€αž‰αžΆαž”αŸ‹αž”αŸ’αžšαžΎαž―αž€αžŸαžΆαžšαž–αž·αžŸαŸαžŸαžŠαŸ‚αž›αž˜αžΆαž“αž•αŸ’αž“αŸ‚αž€αž”αž“αŸ’αžαŸ‚αž˜ .plist αžŠαžΎαž˜αŸ’αž”αžΈαžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž’αžαŸαžš αž“αž·αž„αžαž˜αŸ’αž›αŸƒαž•αŸ’αžŸαŸαž„αŸ—αŸ” αž€αžΆαžšαžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž–αžΆαž€αŸ’αž™αžŸαž˜αŸ’αž„αžΆαžαŸ‹ αžαžΌαžαžΉαž“ αžŸαŸ„ αž“αž·αž„αž‘αž·αž“αŸ’αž“αž“αŸαž™αžšαžŸαžΎαž”αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž“αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžšαž‘αžΆαŸ†αž„αž“αŸαŸ‡αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŽαŸ‚αž“αžΆαŸ†αž‘αŸ αž–αŸ’αžšαŸ„αŸ‡αž–αž½αž€αž‚αŸαž’αžΆαž…αž‘αžΆαž‰αž™αž€αž…αŸαž‰αž–αžΈαž§αž”αž€αžšαžŽαŸαžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“αž”αž‰αŸ’αž αžΆαŸ”

αž―αž€αžŸαžΆαžš Plist αž˜αžΆαž“αž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸαžŠαŸ‚αž›αž˜αž·αž“αž…αŸ’αž”αžΆαžŸαŸ‹αžŠαŸ„αž™αž—αŸ’αž“αŸ‚αž€αž‘αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž˜αžΆαž“αžŸαžΆαžšαŸˆαžŸαŸ†αžαžΆαž“αŸ‹αž…αŸ†αž–αŸ„αŸ‡ Checkmarx αŸ” αž…αžΌαžšαž™αžΎαž„αžŸαžšαžŸαŸαžšαž…αŸ’αž”αžΆαž”αŸ‹αžŠαŸ‚αž›αž“αžΉαž„αžŸαŸ’αžœαŸ‚αž„αžšαž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ‚αž›αž™αžΎαž„αžαŸ’αžšαžΌαžœαž€αžΆαžš αž αžΎαž™αž”αŸ’αžšαžΆαž”αŸ‹αž™αžΎαž„αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž–αžΆαž€αŸ’αž™αžŸαž˜αŸ’αž„αžΆαžαŸ‹ αž¬αžŸαž‰αŸ’αž‰αžΆαžŸαž˜αŸ’αž„αžΆαžαŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž›αžΎαž€αž‘αžΎαž„αž“αŸ…αž€αž“αŸ’αž›αŸ‚αž„αžŽαžΆαž˜αž½αž™αŸ”

αž§αž‘αžΆαž αžšαžŽαŸαž“αŸƒαž―αž€αžŸαžΆαžšαž”αŸ‚αž”αž“αŸαŸ‡αžŠαŸ‚αž›αž˜αžΆαž“αžŸαž‰αŸ’αž‰αžΆαžŸαž˜αŸ’αž„αžΆαžαŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž‘αŸ†αž“αžΆαž€αŸ‹αž‘αŸ†αž“αž„αž‡αžΆαž˜αž½αž™αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž•αŸ’αž“αŸ‚αž€αžαžΆαž„αž€αŸ’αžšαŸ„αž™αŸ–

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>DeviceDictionary</key>
	<dict>
		<key>phone</key>
		<string>iPhone 6s</string>
	</dict>
	<key>privatekey</key>
	<string>MIICXAIBAAKBgQCqGKukO1De7zhZj6+</string>
</dict>
</plist>

αž“αž·αž„αž…αŸ’αž”αžΆαž”αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Checkmarx αžŠαŸ‚αž›αž˜αžΆαž“ nuances αž‡αžΆαž…αŸ’αžšαžΎαž“αžŠαŸ‚αž›αž‚αž½αžšαžαŸ’αžšαžΌαžœαž™αž€αž˜αž€αž–αž·αž…αžΆαžšαžŽαžΆαž“αŸ…αž–αŸαž›αžŸαžšαžŸαŸαžšαŸ–

// Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΏΠΎ поиску Ρ„Π°ΠΉΠ»ΠΎΠ² plist, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΈ 
CxList plist = Find_Plist_Elements();

// Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ Π½ΠΎΠ²ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ
CxList dictionarySettings = All.NewCxList();

// Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ поиск всСх ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰ΠΈΡ… нас Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Π’ дальнСйшСм ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ этот список.
// Для поиска Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΊΠ°ΠΊ Π½ΠΈ странно, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ FindByMemberAccess - поиск ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΉ ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ. Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, false, ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ поиск нСчувствитСлСн ΠΊ рСгистру
dictionarySettings.Add(plist.FindByMemberAccess("privatekey", false));
dictionarySettings.Add(plist.FindByMemberAccess("privatetoken", false));

// Для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ поиска ΠΈΠ·-Π·Π° особСнностСй структуры plist - Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ "If statement"
CxList ifStatements = plist.FindByType(typeof(IfStmt));

// ДобавляСм Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, ΠΏΠ΅Ρ€Π΅Π΄ этим ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΡƒΠ·Π΅Π» - для ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ отобраТСния
result = dictionarySettings.FindByFathers(ifStatements);

αž—αžΆαžšαž€αž·αž…αŸ’αž…αŸ– αžŸαŸ’αžœαŸ‚αž„αžšαž€αž–αŸαžαŸŒαž˜αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„ XML

αž‡αžΆαžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™: Checkmarx αž˜αžΆαž“αž˜αž»αžαž„αžΆαžšαž„αžΆαž™αžŸαŸ’αžšαž½αž›αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™ XML αž“αž·αž„αž€αžΆαžšαžŸαŸ’αžœαŸ‚αž„αžšαž€αžαž˜αŸ’αž›αŸƒ αžŸαŸ’αž›αžΆαž€ αž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆ αž“αž·αž„αž’αŸ’αžœαžΈαŸ—αž‡αžΆαž…αŸ’αžšαžΎαž“αž‘αŸ€αžαŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž‡αžΆαž’αž€αž»αžŸαž› αž˜αžΆαž“αž€αŸ†αž αž»αžŸαž“αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžš αžŠαŸ„αž™αžŸαžΆαžšαžœαžΆαž˜αž·αž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž§αž‘αžΆαž αžšαžŽαŸαžαŸ‚αž˜αž½αž™αŸ” αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαž€αžΆαžšαž–αž·αžαžŠαŸ‚αž›αžαžΆαž–αž·αž€αžΆαžšαž—αžΆαž–αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž›αž»αž”αž…αŸ„αž›αž“αŸ…αž€αŸ’αž“αž»αž„αž€αŸ†αžŽαŸ‚αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž“αŸƒαž―αž€αžŸαžΆαžšαž€αŸαžŠαŸ„αž™ αžŸαžΌαž˜αž”αŸ’αžšαž™αŸαžαŸ’αž“αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž€αŸ†αžŽαŸ‚αž˜αž»αž“αž“αŸƒαž―αž€αžŸαžΆαžšαŸ”

αž“αŸαŸ‡αž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸαž˜αž·αž“αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαž–αžΈαž―αž€αžŸαžΆαžšαŸ–

// Код Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚
result = All.FindXmlAttributesByNameAndValue("*.app", 8, β€œid”, "error- section", false, true);

αž‡αžΆαž›αž‘αŸ’αž’αž•αž›αž“αŸƒαž€αžΆαžšαž”αŸ‰αž»αž“αž”αŸ‰αž„αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž· αž™αžΎαž„αž“αžΉαž„αž‘αž‘αž½αž›αž”αžΆαž“αž€αŸ†αž αž»αžŸαž“αŸ„αŸ‡αŸ” All αž˜αž·αž“αž˜αžΆαž“αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž”αŸ‚αž”αž“αŸαŸ‡αž‘αŸ... αž αžΎαž™αž“αŸαŸ‡αž‡αžΆαž€αžΆαžšαž–αž·αž αžŠαŸ„αž™αžŸαžΆαžšαžœαžΆαž˜αžΆαž“αž…αž“αŸ’αž›αŸ„αŸ‡αžœαžαŸ’αžαž»αž–αž·αžŸαŸαžŸαžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαžΎαž˜αž»αžαž„αžΆαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™ XML - cxXPath. αž“αŸαŸ‡β€‹αž‡αžΆβ€‹αž’αŸ’αžœαžΈβ€‹αžŠαŸ‚αž›β€‹αžŸαŸ†αžŽαž½αžšβ€‹αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœβ€‹αž˜αžΎαž›β€‹αž‘αŸ…β€‹αžŠαžΌαž…β€‹αž‡αžΆβ€‹αžŠαžΎαž˜αŸ’αž”αžΈβ€‹αžŸαŸ’αžœαŸ‚αž„β€‹αžšαž€β€‹αž€αžΆαžšβ€‹αž€αŸ†αžŽαžαŸ‹β€‹αž€αŸ’αž“αž»αž„β€‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’β€‹αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžš Android αžŠαŸ‚αž›β€‹αž’αž“αž»αž‰αŸ’αž‰αžΆαžβ€‹αž±αŸ’αž™β€‹αž”αŸ’αžšαžΎβ€‹αž…αžšαžΆαž…αžšαžŽαŸ HTTPαŸ–

// ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ с использованиСм cxXPath
result = cxXPath.FindXmlAttributesByNameAndValue("*.xml", 8, "cleartextTrafficPermitted", "true", false, true);

αžŸαžΌαž˜αž€αŸ’αžšαž‘αŸαž€αž˜αžΎαž›αžœαžΆαž±αŸ’αž™αž›αž˜αŸ’αž’αž·αžαž”αž“αŸ’αžαž·αž… αž–αŸ’αžšαŸ„αŸ‡αžœαžΆαž€αŸ’αž™αžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž˜αž»αžαž„αžΆαžšαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž‚αžΊαžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆ αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž’αŸ’αž“αž€αž”αžΆαž“αžšαž€αžƒαžΎαž‰αž˜αž½αž™αžšαž½αž… αž’αŸ’αž“αž€αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αžαŸ’αžšαžΌαžœαž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž˜αž½αž™αžŠαŸ‚αž›αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž€αžΆαžšαŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžαžΆαž˜αž›αŸ†αžŠαžΆαž”αŸ‹αž›αŸ†αžŠαŸ„αž™αž™αŸ„αž„αž‘αŸ…αžαžΆαž˜αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαŸ–

  • "*.xml"- αžšαž”αžΆαŸ†αž„αž“αŸƒαž―αž€αžŸαžΆαžšαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαžŸαŸ’αžœαŸ‚αž„αžšαž€

  • 8 - αž›αŸαžαžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αž—αžΆαžŸαžΆαžŠαŸ‚αž›αž…αŸ’αž”αžΆαž”αŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αž

  • "cleartextTrafficPermitted"- αžˆαŸ’αž˜αŸ„αŸ‡αž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆαž€αŸ’αž“αž»αž„ xml

  • "true" - αžαž˜αŸ’αž›αŸƒαž“αŸƒαž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆαž“αŸαŸ‡αŸ”

  • false - αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž€αž“αŸ’αžŸαŸ„αž˜αž’αž˜αŸ’αž˜αžαžΆαž“αŸ…αž–αŸαž›αžŸαŸ’αžœαŸ‚αž„αžšαž€

  • true β€” αž˜αžΆαž“αž“αŸαž™αžαžΆαž€αžΆαžšαžŸαŸ’αžœαŸ‚αž„αžšαž€αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαžŠαŸ„αž™αž˜αž·αž“αž’αžΎαž–αžΎαž€αžšαžŽαžΈ αž–αŸ„αž›αž‚αžΊαž˜αž·αž“αž”αŸ’αžšαž€αžΆαž“αŸ‹αž’αž€αŸ’αžŸαžšαžαžΌαž…αž’αŸ†

αž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸ αž™αžΎαž„αž”αžΆαž“αž”αŸ’αžšαžΎαž…αŸ’αž”αžΆαž”αŸ‹αžŠαŸ‚αž›αž€αŸ†αžŽαžαŸ‹αž’αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆαžŽαž˜αž·αž“αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœ αžαžΆαž˜αž‘αžŸαŸ’αžŸαž“αŸˆαžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž– αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹αž”αžŽαŸ’αžαžΆαž‰αž“αŸ…αž€αŸ’αž“αž»αž„ Android αžŠαŸ‚αž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž‘αŸ†αž“αžΆαž€αŸ‹αž‘αŸ†αž“αž„αž‡αžΆαž˜αž½αž™αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαžαžΆαž˜αžšαž™αŸˆαž–αž·αž’αžΈαž€αžΆαžš HTTP αŸ” αž§αž‘αžΆαž αžšαžŽαŸαž“αŸƒαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžŠαŸ‚αž›αž˜αžΆαž“αž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆ cleartextTrafficPermitted αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž’αžαŸ’αžαž“αŸαž™ true:

<network-security-config>
    <domain-config>
        <domain includeSubdomains="true">example.com</domain>
        <trust-anchors>
            <certificates src="@raw/my_ca"/>
        </trust-anchors>
        <domain-config cleartextTrafficPermitted="true">
            <domain includeSubdomains="true">secure.example.com</domain>
        </domain-config>
    </domain-config>
</network-security-config>

αž—αžΆαžšαž€αž·αž…αŸ’αž…αŸ– αž€αŸ†αžŽαžαŸ‹αž›αž‘αŸ’αž’αž•αž›αžŠαŸ„αž™αžˆαŸ’αž˜αŸ„αŸ‡αž―αž€αžŸαžΆαžš/αž•αŸ’αž›αžΌαžœ

αž‡αžΆαžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™: αž“αŸ…αž€αŸ’αž“αž»αž„αž‚αž˜αŸ’αžšαŸ„αž„αž’αŸ†αž˜αž½αž™αž‘αžΆαž€αŸ‹αž‘αž„αž“αžΉαž„αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‘αžΌαžšαžŸαŸαž–αŸ’αž‘αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Android αž™αžΎαž„αž”αžΆαž“αž‡αž½αž”αž”αŸ’αžšαž‘αŸ‡αž—αžΆαž–αžœαž·αž‡αŸ’αž‡αž˜αžΆαž“αž˜αž·αž“αž–αž·αžαž“αŸƒαž…αŸ’αž”αžΆαž”αŸ‹αžŠαŸ‚αž›αž€αŸ†αžŽαžαŸ‹αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž—αžΆαž–αž…αŸ’αžšαž”αžΌαž€αž…αŸ’αžšαž”αž›αŸ‹αŸ” αž€αžΆαžšαž–αž·αžαž‚αžΊαžαžΆαž…αŸ’αž”αžΆαž”αŸ‹αž…αŸαž‰αž–αžΈαž”αŸ’αžšαž’αž”αŸ‹αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžš build.gradle αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžŠαŸ‚αž›αž‘αž‘αž½αž›αžαž»αžŸαžαŸ’αžšαžΌαžœαž…αŸ†αž–αŸ„αŸ‡αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž…αŸ’αž”αžΆαž”αŸ‹αž“αŸƒαž€αžΆαžšαž”αŸ†αž—αžΆαž“αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αŸ†αžŽαŸ‚αž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαŸ”

αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž“αŸ…αž€αŸ’αž“αž»αž„αž‚αž˜αŸ’αžšαŸ„αž„αž’αŸ† αŸ— αž‡αž½αž“αž€αžΆαž›αž˜αžΆαž“αž―αž€αžŸαžΆαžšαž€αž»αž˜αžΆαžš build.gradleαžŠαŸ‚αž›αžŸαŸ†αžŠαŸ…αž›αžΎαž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžŠαŸ‚αž›αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž€αŸ’αž“αž»αž„αž‚αž˜αŸ’αžšαŸ„αž„αŸ” αž—αžΆαž–αž–αž·αžŸαŸαžŸαž“αŸ„αŸ‡αž‚αžΊαžαžΆ αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαž―αž€αžŸαžΆαžšαž‘αžΆαŸ†αž„αž“αŸαŸ‡αž˜αž·αž“αž”αž„αŸ’αž αžΆαž‰αž–αžΈαžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž”αŸ†αž—αžΆαž“αŸ‹αž€αŸαžŠαŸ„αž™ αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž“αŸƒαž―αž€αžŸαžΆαžšαžŠαŸ†αž‘αžΎαž„αž˜αŸαž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαž€αŸ†αž‘αž»αž„αž–αŸαž›αž…αž„αž€αŸ’αžšαž„αŸ”

αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αž—αžΆαžšαž€αž·αž…αŸ’αž…αž‚αžΊαž€αžΆαžαŸ‹αž•αŸ’αžαžΆαž…αŸ‹αž‚αž“αŸ’αž›αžΉαŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžšαž€αžΌαž“αžŠαŸ‚αž›αž‡αžΆαž€αž˜αŸ’αž˜αžŸαž·αž‘αŸ’αž’αž·αžšαž”αžŸαŸ‹αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αŸ” αž–αž½αž€αž‚αŸαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αž’αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆαžŽαžŠαŸ„αž™αžœαžαŸ’αžαž˜αžΆαž“αž“αŸƒαž”αž“αŸ’αž‘αžΆαžαŸ‹ apply 'com.android.library'.

αž€αžΌαžŠαž§αž‘αžΆαž αžšαžŽαŸαž–αžΈαž―αž€αžŸαžΆαžš build.gradleαžŠαŸ‚αž›αž€αŸ†αžŽαžαŸ‹αžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž™αž›αŸ‹αž…αŸ’αžšαž‘αŸ†αŸ–

apply plugin: 'com.android.application'

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.2"
    defaultConfig {
        ...
    }

    buildTypes {
        release {
            minifyEnabled true
            ...
        }
    }
}

dependencies {
  ...
}

αž―αž€αžŸαžΆαžšαž§αž‘αžΆαž αžšαžŽαŸ build.gradle αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžŠαŸ‚αž›αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž€αŸ’αž“αž»αž„αž‚αž˜αŸ’αžšαŸ„αž„αžŠαŸ‚αž›αž˜αž·αž“αž˜αžΆαž“αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž“αŸαŸ‡αŸ–

apply plugin: 'android-library'

dependencies {
  compile 'com.android.support:support-v4:18.0.+'
}

android {
  compileSdkVersion 14
  buildToolsVersion '17.0.0'
  ...
}

αž“αž·αž„αž…αŸ’αž”αžΆαž”αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Checkmarx:

ProGuardObfuscationNotInUse

// Поиск ΠΌΠ΅Ρ‚ΠΎΠ΄Π° release срСди всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π² Gradle Ρ„Π°ΠΉΠ»Π°Ρ…
CxList releaseMethod = Find_Gradle_Method("release");

// ВсС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ² build.gradle
CxList gradleBuildObjects = Find_Gradle_Build_Objects();

// Поиск Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ находится Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° "release" срСди всСх ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ² build.gradle
CxList methodInvokesUnderRelease = gradleBuildObjects.FindByType(typeof(MethodInvokeExpr)).GetByAncs(releaseMethod);

// Π˜Ρ‰Π΅ΠΌ Π²Π½ΡƒΡ‚Ρ€ΠΈ gradle-Ρ„Π°ΠΉΠ»ΠΎΠ² строку "com.android.library" - это Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» относится ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ ΠΈ Π΅Π³ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΈΠ· ΠΏΡ€Π°Π²ΠΈΠ»Π°
CxList android_library = gradleBuildObjects.FindByName("com.android.library");

// Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ пустого массива
List<string> libraries_path = new List<string> {};

// ΠŸΡ€ΠΎΡ…ΠΎΠ΄ΠΈΠΌ Ρ‡Π΅Ρ€Π΅Π· всС Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Π΅ "Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅" Ρ„Π°ΠΉΠ»Ρ‹
foreach(CxList library in android_library)
{
    // ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΏΡƒΡ‚ΡŒ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ Ρ„Π°ΠΉΠ»Ρƒ
	string file_name_library = library.GetFirstGraph().LinePragma.FileName;
    
    // ДобавляСм Π΅Π³ΠΎ Π² наш массив
	libraries_path.Add(file_name_library);
}

// Π˜Ρ‰Π΅ΠΌ всС Π²Ρ‹Π·ΠΎΠ²Ρ‹ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ обфускации Π² Ρ€Π΅Π»ΠΈΠ·Π½Ρ‹Ρ… настройках
CxList minifyEnabled = methodInvokesUnderRelease.FindByShortName("minifyEnabled");

// ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ этих Π²Ρ‹Π·ΠΎΠ²ΠΎΠ²
CxList minifyValue = gradleBuildObjects.GetParameters(minifyEnabled, 0);

// Π˜Ρ‰Π΅ΠΌ срСди Π½ΠΈΡ… Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅
CxList minifyValueTrue = minifyValue.FindByShortName("true");

// НСмного ΠΌΠ°Π³ΠΈΠΈ, Ссли Π½Π΅ нашли стандартным способом :D
if (minifyValueTrue.Count == 0) {
	minifyValue = minifyValue.FindByAbstractValue(abstractValue => abstractValue is TrueAbstractValue);
} else {
    // А Ссли всё-Ρ‚Π°ΠΊΠΈ нашли, Ρ‚ΠΎ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΈ оставляСм
	minifyValue = minifyValueTrue;	
}

// Если Π½Π΅ нашлось Ρ‚Π°ΠΊΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²
if (minifyValue.Count == 0)
{
    // Для Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ отобраТСния мСста срабатывания Π² Ρ„Π°ΠΉΠ»Π΅ ΠΈΡ‰Π΅ΠΌ ΠΈΠ»ΠΈ buildTypes ΠΈΠ»ΠΈ android
	CxList tempResult = All.NewCxList();
	CxList buildTypes = Find_Gradle_Method("buildTypes");
	if (buildTypes.Count > 0) {
		tempResult = buildTypes;
	} else {
		tempResult = Find_Gradle_Method("android");
	}
	
	// Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Ρ… мСст срабатывания ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΠΌ ΠΈ опрСдСляСм, Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ ΠΈΠ»ΠΈ основной Ρ„Π°ΠΉΠ»Ρ‹ сборки
	foreach(CxList res in tempResult)
	{
        // ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌ, Π² ΠΊΠ°ΠΊΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ Π±Ρ‹Π» Π½Π°ΠΉΠ΄Π΅Π½ buildType ΠΈΠ»ΠΈ android ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹
		string file_name_result = res.GetFirstGraph().LinePragma.FileName;
        
        // Если Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° Π½Π΅Ρ‚ Π² нашСм спискС "Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ…" Ρ„Π°ΠΉΠ»ΠΎΠ² - Π·Π½Π°Ρ‡ΠΈΡ‚ это основной Ρ„Π°ΠΉΠ» ΠΈ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚
		if (libraries_path.Contains(file_name_result) == false){
			result.Add(res);
		}
	}
}

αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž“αŸαŸ‡αž’αžΆαž…αž˜αžΆαž“αž›αž€αŸ’αžαžŽαŸˆαž‡αžΆαžŸαž€αž› αž“αž·αž„αž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž˜αž·αž“αžαŸ’αžšαžΉαž˜αžαŸ‚αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ Android αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžœαžΆαž€αŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžšαžŽαžΈαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž•αž„αžŠαŸ‚αžš αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž€αŸ†αžŽαžαŸ‹αžαžΆαžαžΎαž›αž‘αŸ’αž’αž•αž›αž‡αžΆαž€αž˜αŸ’αž˜αžŸαž·αž‘αŸ’αž’αž·αžšαž”αžŸαŸ‹αž―αž€αžŸαžΆαžšαž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αžŠαŸ‚αžšαž¬αž‘αŸαŸ”

αž—αžΆαžšαž€αž·αž…αŸ’αž…αŸ– αž”αž“αŸ’αžαŸ‚αž˜αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αž—αžΆαž‚αžΈαž‘αžΈαž”αžΈ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαžœαžΆαž€αŸ’αž™αžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αžΆαŸ†αž‘αŸ’αžšαž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„

αž‡αžΆαžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™: αž…αŸ†αž“αž½αž“αž“αŸƒαž€αŸ’αžšαž”αžαŸαžŽαŸ’αžŒαž•αŸ’αžŸαŸαž„αŸ—αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž€αŸ’αž“αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸƒαž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αžΌαžŠαž‚αžΊαž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž…αŸαž‰αž–αžΈαžαžΆαžšαžΆαž„αŸ” αž‡αžΆαž€αžΆαžšαž–αž·αžαžŽαžΆαžŸαŸ‹ Checkmarx αž˜αž·αž“αžαŸ‚αž„αžαŸ‚αžŠαžΉαž„αž’αŸ†αž–αžΈαž’αžαŸ’αžαž·αž—αžΆαž–αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαž‘αŸ αž αžΎαž™αž—αžΆαžšαž€αž·αž…αŸ’αž…αžšαž”αžŸαŸ‹αž™αžΎαž„αž‚αžΊαž”αž„αŸ’αžšαŸ€αž“αžœαžΆαž±αŸ’αž™αž™αž›αŸ‹αžαžΆαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž‡αžΆαž€αž˜αŸ’αž˜αžŸαž·αž‘αŸ’αž’αž·αžšαž”αžŸαŸ‹αž€αŸ’αžšαž”αžαŸαžŽαŸ’αžŒαž“αŸαŸ‡αŸ” αž–αŸαž›αžαŸ’αž›αŸ‡αžœαžΆαž˜αžΆαž“αž—αžΆαž–αžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰αžŠαŸ„αž™αž€αžΆαžšαž–αž·αžαžŠαŸ‚αž›αžαžΆαž€αŸ’αžšαž”αžαŸαžŽαŸ’αžŒαž”αŸ’αžšαžΎαžˆαŸ’αž˜αŸ„αŸ‡αž˜αž»αžαž„αžΆαžšαžŠαŸ‚αž›αž‡αžΆαžšαžΏαž„αž’αž˜αŸ’αž˜αžαžΆαž”αŸ†αž•αž»αžαž αžΎαž™αžœαžΆαž˜αž·αž“αž’αžΆαž…αž‘αŸ…αžšαž½αž…αž‘αŸαž€αŸ’αž“αž»αž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžŠαŸ„αž™αž˜αž·αž“αž…αŸ’αž”αžΆαžŸαŸ‹αž›αžΆαžŸαŸ‹αž“αžΌαžœαž‘αŸ†αž“αžΆαž€αŸ‹αž‘αŸ†αž“αž„αž“αŸƒαž€αžΆαžšαž αŸ…αž‘αŸ…αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž˜αž½αž™αŸ”

αž€αžΆαžšαž›αŸ†αž”αžΆαž€αž‚αžΊαžαžΆαžœαžΆαž€αŸ’αž™αžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž“αŸƒαž”αžŽαŸ’αžŽαžΆαž›αŸαž™αž”αŸ‚αž”αž“αŸαŸ‡αž˜αž·αž“αžαŸ‚αž„αžαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αž‘αž½αž›αžŸαŸ’αž‚αžΆαž›αŸ‹αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαž‘αŸαž αžΎαž™αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž–αž·αžŸαŸ„αž’αž“αŸαžŠαžΎαž˜αŸ’αž”αžΈαž‡αŸ€αžŸαžœαžΆαž„αž€αžΆαžšαž‘αž‘αž½αž›αž”αžΆαž“αž…αŸ†αž“αž½αž“αžŠαŸαž…αŸ’αžšαžΎαž“αž“αŸƒαžœαž·αž‡αŸ’αž‡αž˜αžΆαž“αž˜αž·αž“αž–αž·αžαŸ” αž˜αžΆαž“αž‡αž˜αŸ’αžšαžΎαžŸαž‡αžΆαž…αŸ’αžšαžΎαž“αžŠαžΎαž˜αŸ’αž”αžΈαž€αŸ‚αž›αž˜αŸ’αž’αž—αžΆαž–αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαž“αŸƒαž€αžΆαžšαžŸαŸ’αž€αŸαž“ αž“αž·αž„αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αž‰αŸ’αž αžΆαŸ–

  • αž‡αž˜αŸ’αžšαžΎαžŸαž‘αžΈαž˜αž½αž™ αž™αžΎαž„αžŠαžΉαž„αž…αŸ’αž”αžΆαžŸαŸ‹αžαžΆαž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž€αŸ’αž“αž»αž„αž‚αž˜αŸ’αžšαŸ„αž„αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž˜αž½αž™ αž αžΎαž™αž’αžΆαž…αž’αž“αž»αžœαžαŸ’αžαž…αŸ’αž”αžΆαž”αŸ‹αž“αŸ…αž€αž˜αŸ’αžšαž·αžαž€αŸ’αžšαž»αž˜αŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž€αŸ’αžšαž»αž˜αžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαž™αž€αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž•αŸ’αžŸαŸαž„ αž¬αž”αŸ’αžšαžΎαž”αžŽαŸ’αžŽαžΆαž›αŸαž™αž‡αžΆαž…αŸ’αžšαžΎαž“αžŠαŸ‚αž›αžˆαŸ’αž˜αŸ„αŸ‡αž˜αž»αžαž„αžΆαžšαžαŸ’αžšαž½αžαž›αžΎαž‚αŸ’αž“αžΆαž“αŸ„αŸ‡ αž™αžΎαž„αž’αžΆαž…αž‘αž‘αž½αž›αž”αžΆαž“αžšαžΌαž”αž—αžΆαž–αž˜αž·αž“αž–αž·αžαž“αŸƒαžœαž·αž‡αŸ’αž‡αž˜αžΆαž“αž˜αž·αž“αž–αž·αžαž‡αžΆαž…αŸ’αžšαžΎαž“

  • αž‡αž˜αŸ’αžšαžΎαžŸαž‘αžΈαž–αžΈαžšαž‚αžΊαžŸαŸ’αžœαŸ‚αž„αžšαž€αž―αž€αžŸαžΆαžšαžŠαŸ‚αž›αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž“αžΆαŸ†αž…αžΌαž›αž™αŸ‰αžΆαž„αž…αŸ’αž”αžΆαžŸαŸ‹αŸ” αž‡αžΆαž˜αž½αž™αž“αžΉαž„αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž“αŸαŸ‡ αž™αžΎαž„αž’αžΆαž…αž”αŸ’αžšαžΆαž€αžŠαžαžΆαž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžŠαŸ‚αž›αž™αžΎαž„αžαŸ’αžšαžΌαžœαž€αžΆαžšαž‚αžΊαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž™αŸ‰αžΆαž„αž–αž·αžαž”αŸ’αžšαžΆαž€αžŠαž“αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžšαž“αŸαŸ‡αŸ”

  • αž αžΎαž™αž‡αž˜αŸ’αžšαžΎαžŸαž‘αžΈαž”αžΈαž‚αžΊαžαŸ’αžšαžΌαžœαž”αŸ’αžšαžΎαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž‘αžΆαŸ†αž„αž–αžΈαžšαžαžΆαž„αž›αžΎαž‡αžΆαž˜αž½αž™αž‚αŸ’αž“αžΆαŸ”

αž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸ αžŸαžΌαž˜αž€αŸ’αžšαž‘αŸαž€αž˜αžΎαž›αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžŠαŸ‚αž›αž›αŸ’αž”αžΈαž€αŸ’αž“αž»αž„αžšαž„αŸ’αžœαž„αŸ‹αžαžΌαž…αž…αž„αŸ’αž’αŸ€αž αžšαž’αž·αž› αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž—αžΆαžŸαžΆαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ Scala αž‚αžΊαž˜αž»αžαž„αžΆαžš αž€αžΆαžšαž”αŸ†αž”αŸ‚αž€αžαž˜αŸ’αž›αŸƒαž–αŸ’αž™αž‰αŸ’αž‡αž“αŸˆ. αž‡αžΆαž‘αžΌαž‘αŸ… αžŠαžΎαž˜αŸ’αž”αžΈαž”αž‰αŸ’αž‡αžΌαž“αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž‘αŸ…αžŸαŸ†αžŽαž½αžš SQL αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαžαŸ‚αž”αŸ’αžšαžΎαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžš $αžŠαŸ‚αž›αž‡αŸ†αž“αž½αžŸαž‘αž·αž“αŸ’αž“αž“αŸαž™αž‘αŸ…αž€αŸ’αž“αž»αž„αžŸαŸ†αžŽαž½αžš SQL αžŠαŸ‚αž›αž”αžΆαž“αž’αŸ’αžœαžΎαž‘αž»αž€αž‡αžΆαž˜αž»αž“αŸ” αž“αŸ„αŸ‡β€‹αž‚αžΊβ€‹αžαžΆαž˜β€‹αž–αž·αžβ€‹αž‘αŸ… αžœαžΆβ€‹αž‚αžΊβ€‹αž‡αžΆ analogue αž•αŸ’αž‘αžΆαž›αŸ‹β€‹αž“αŸƒβ€‹αžŸαŸαž…αž€αŸ’αžαžΈβ€‹αžαŸ’αž›αŸ‚αž„αž€αžΆαžšαžŽαŸβ€‹αžŠαŸ‚αž›β€‹αž”αžΆαž“β€‹αžšαŸ€αž”αž…αŸ†β€‹αž“αŸ…β€‹αž€αŸ’αž“αž»αž„ Java αŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž€αžΆαžšαž”αž„αŸ’αž€αžΎαž SQL query αžαžΆαž˜αžœαž“αŸ’αž αž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž€αžΆαžšαž†αŸ’αž›αž„αž€αžΆαžαŸ‹αžˆαŸ’αž˜αŸ„αŸ‡αžαžΆαžšαžΆαž„ αž’αŸ’αž“αž€αž’αžΆαž…αž”αŸ’αžšαžΎ operator #$αžŠαŸ‚αž›αž“αžΉαž„αž‡αŸ†αž“αž½αžŸαž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ„αž™αž•αŸ’αž‘αžΆαž›αŸ‹αž‘αŸ…αž€αŸ’αž“αž»αž„αžŸαŸ†αžŽαž½αžš (αžŸαŸ’αž‘αžΎαžšαžαŸ‚αžŠαžΌαž…αž‡αžΆαž€αžΆαžšαž—αŸ’αž‡αžΆαž”αŸ‹αžαŸ’αžŸαŸ‚αž’αž€αŸ’αžŸαžš)αŸ”

αž€αžΌαžŠαž‚αŸ†αžšαžΌαŸ–

// Π’ ΠΎΠ±Ρ‰Π΅ΠΌ случаС - значСния, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ
val table = "coffees"
sql"select * from #$table where name = $name".as[Coffee].headOption

Checkmarx αž˜αž·αž“αž‘αžΆαž“αŸ‹αžŠαžΉαž„αž–αžΈαžšαž”αŸ€αž”αžšαž€αžƒαžΎαž‰αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ Splicing Literal Values β€‹β€‹αž“αž·αž„αžšαŸ†αž›αž„αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžš #$αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αž…αžΌαžšαž™αžΎαž„αž–αŸ’αž™αžΆαž™αžΆαž˜αž”αž„αŸ’αžšαŸ€αž“αžœαžΆαž±αŸ’αž™αž€αŸ†αžŽαžαŸ‹αž’αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆαžŽαž€αžΆαžšαž…αžΆαž€αŸ‹ SQL αžŠαŸ‚αž›αž˜αžΆαž“αžŸαž€αŸ’αžαžΆαž“αž»αž–αž› αž“αž·αž„αžšαŸ†αž›αŸαž…αž€αž“αŸ’αž›αŸ‚αž„αžŠαŸ‚αž›αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΌαžŠαŸ–

// Находим всС ΠΈΠΌΠΏΠΎΡ€Ρ‚Ρ‹
CxList imports = All.FindByType(typeof(Import));

// Π˜Ρ‰Π΅ΠΌ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ, Π΅ΡΡ‚ΡŒ Π»ΠΈ Π² ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°Ρ… slick
CxList slick = imports.FindByShortName("slick");

// НСкоторый Ρ„Π»Π°Π³, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠΉ, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π² ΠΊΠΎΠ΄Π΅ присутствуСт
// Для Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ опрСдСлСния - ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ с ΠΈΠΌΠ΅Π½Π΅ΠΌ Ρ„Π°ΠΉΠ»Π°
bool not_empty_list = false;
foreach (CxList r in slick)
{
    // Если встрСтили ΠΈΠΌΠΏΠΎΡ€Ρ‚, считаСм, Ρ‡Ρ‚ΠΎ slick ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ
	not_empty_list = true;
}

if (not_empty_list) {
    // Π˜Ρ‰Π΅ΠΌ Π²Ρ‹Π·ΠΎΠ²Ρ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ пСрСдаСтся SQL-строка
	CxList sql = All.FindByShortName("sql");
	sql.Add(All.FindByShortName("sqlu"));
	
	// ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ Π² эти Π²Ρ‹Π·ΠΎΠ²Ρ‹
	CxList data_sql = All.DataInfluencingOn(sql);
	
	// Π’Π°ΠΊ ΠΊΠ°ΠΊ синтакис Π½Π΅ поддСрТиваСтся, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ с рСгулярными выраТСниями
	// RegExp стоит ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΡ€Π°ΠΉΠ½Π΅ остороТно ΠΈ Π½Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π΅Π³ΠΎ Π½Π° большом количСствС Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это ΠΌΠΎΠΆΠ΅Ρ‚ сильно ΠΏΠΎΠ²Π»ΠΈΡΡ‚ΡŒ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ
	CxList find_possible_inj = data_sql.FindByRegex(@"#$", true, true, true);

    // ИзбавляСмся ΠΎΡ‚ Π»ΠΈΡˆΠ½ΠΈΡ… срабатываний, Ссли ΠΎΠ½ΠΈ Π΅ΡΡ‚ΡŒ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚
	result = find_possible_inj.FindByType(typeof(BinaryExpr));
}

αž—αžΆαžšαž€αž·αž…αŸ’αž…αŸ– αžŸαŸ’αžœαŸ‚αž„αžšαž€αž˜αž»αžαž„αžΆαžšαžŠαŸ‚αž›αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡αžŠαŸ‚αž›αž”αžΆαž“αž”αŸ’αžšαžΎαž“αŸ…αž€αŸ’αž“αž»αž„αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αž”αŸ’αžšαž—αž–αž”αžΎαž€αž…αŸ†αž 

αž‡αžΆαžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™: αž€αŸ’αžšαž»αž˜αž αŸŠαž»αž“αž‡αžΆαž…αŸ’αžšαžΎαž“αž”αŸ’αžšαžΎαž§αž”αž€αžšαžŽαŸαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž”αŸ’αžšαž—αž–αž”αžΎαž€αž…αŸ†αž  (αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αž OSA) αžŠαžΎαž˜αŸ’αž”αžΈαžšαž€αž˜αžΎαž›αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž€αŸ†αžŽαŸ‚αžŠαŸ‚αž›αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡αž“αŸƒαž”αžŽαŸ’αžŽαžΆαž›αŸαž™αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαŸ” αž–αŸαž›αžαŸ’αž›αŸ‡αžœαžΆαž˜αž·αž“αž’αžΆαž…αž’αŸ’αžœαžΎαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αž”αŸ‚αž”αž“αŸαŸ‡αž‘αŸ…αž‡αžΆαž€αŸ†αžŽαŸ‚αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αž”αžΆαž“αž‘αŸαŸ” αž€αŸ’αž“αž»αž„β€‹αž€αžšαžŽαžΈβ€‹αžαŸ’αž›αŸ‡β€‹αž˜αžΆαž“β€‹αž€αž˜αŸ’αžšαž·αžβ€‹αž˜αž»αžαž„αžΆαžš αž αžΎαž™β€‹αžαŸ’αž›αŸ‡β€‹αž‘αŸ€αžβ€‹αž˜αž·αž“β€‹αž˜αžΆαž“β€‹αž€αŸ†αžŽαŸ‚β€‹αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–β€‹αž‘αžΆαž›αŸ‹β€‹αžαŸ‚β€‹αžŸαŸ„αŸ‡αŸ” αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸαŸ‡ αž€αžΆαžšαžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž‚αŸ’αž“αžΆαž“αŸƒαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αž SAST αž“αž·αž„ OSA αž“αžΉαž„αž‡αž½αž™αž€αŸ†αžŽαžαŸ‹αžαžΆαž˜αž»αžαž„αžΆαžšαžŠαŸ‚αž›αž“αžΆαŸ†αž‘αŸ…αžŠαž›αŸ‹αž€αžΆαžšαž€αŸαž„αž”αŸ’αžšαžœαŸαž‰αŸ’αž…αž“αŸƒαž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΌαžŠαž“αŸ„αŸ‡αž‘αŸαŸ”

αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž–αŸαž›αžαŸ’αž›αŸ‡ αž‡αžΆαž–αž·αžŸαŸαžŸαž“αŸ…αž–αŸαž›αž–αž·αž…αžΆαžšαžŽαžΆ JavaScript αž“αŸαŸ‡αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž€αž·αž…αŸ’αž…αž€αžΆαžšαžαžΌαž…αžαžΆαž…αž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„αž“αŸ„αŸ‡αž‘αŸαŸ” αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž“αŸαŸ‡αž‚αžΊαž‡αžΆαžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™ αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαž˜αž·αž“αžŸαž˜αž αŸαžαž»αž•αž›αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž‘αŸ„αŸ‡αž‡αžΆαž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαŸ„αž™αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž§αž‘αžΆαž αžšαžŽαŸαž“αŸƒαž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαž˜αžΆαžŸαž’αžΆαžαž» lodash αž“αŸ…αž€αŸ’αž“αž»αž„αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αž template ΠΈ *set.

αž§αž‘αžΆαž αžšαžŽαŸαž“αŸƒαž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαž€αžΌαžŠαžŠαŸ‚αž›αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžš JSαŸ–

/**
 * Template example
 */

'use strict';
var _ = require("./node_modules/lodash.js");


// Use the "interpolate" delimiter to create a compiled template.
var compiled = _.template('hello <%= js %>!');
console.log(compiled({ 'js': 'lodash' }));
// => 'hello lodash!'

// Use the internal `print` function in "evaluate" delimiters.

var compiled = _.template('<% print("hello " + js); %>!');
console.log(compiled({ 'js': 'lodash' }));
// => 'hello lodash!'

αž αžΎαž™αž“αŸ…αž–αŸαž›αž—αŸ’αž‡αžΆαž”αŸ‹αžŠαŸ„αž™αž•αŸ’αž‘αžΆαž›αŸ‹αž€αŸ’αž“αž»αž„ htmlαŸ–

<!DOCTYPE html>
<html>
<head>
    <title>Lodash Tutorial</title>
    <script src="./node_modules/lodash.js"></script>
    <script type="text/javascript">
  // Lodash chunking array
        nums = [1, 2, 3, 4, 5, 6, 7, 8, 9];

        let c1 = _.template('<% print("hello " + js); %>!');
        console.log(c1);

        let c2 = _.template('<% print("hello " + js); %>!');
        console.log(c2);
    </script>
</head>
<body></body>
</html>

αž™αžΎαž„αž€αŸ†αž–αž»αž„αžŸαŸ’αžœαŸ‚αž„αžšαž€αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαžŠαŸ‚αž›αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžšαž”αžŸαŸ‹αž™αžΎαž„ αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαžΆαž™αž€αŸ’αž“αž»αž„αž”αž‰αŸ’αž‡αžΈαž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡αŸ–

// Π˜Ρ‰Π΅ΠΌ всС строки: Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… встрСчаСтся строка lodash (ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ это объявлСниС ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ
CxList lodash_strings = Find_String_Literal().FindByShortName("*lodash*");

// Π˜Ρ‰Π΅ΠΌ всС Π΄Π°Π½Π½Ρ‹Π΅: ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ с этими строками
CxList data_on_lodash = All.InfluencedBy(lodash_strings);


// Π—Π°Π΄Π°Π΅ΠΌ список уязвимых ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²
List<string> vulnerable_methods = new List<string> {"template", "*set"};

// Π˜Ρ‰Π΅ΠΌ всС наши уязвимыС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ пСрСчислСнны Π² уязвимостях ΠΈ ΠΎΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Ρ‹Π²Π°Π΅ΠΌ ΠΈΡ… Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π°ΠΌ, Π³Π΄Π΅ ΠΎΠ½ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π»ΠΈΡΡŒ
CxList vulnerableMethods = All.FindByShortNames(vulnerable_methods).FindByType(typeof(MethodInvokeExpr));

//Находим всС Π΄Π°Π½Π½Ρ‹Π΅: ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ
CxList vulnFlow = All.InfluencedBy(vulnerableMethods);

// Если Π΅ΡΡ‚ΡŒ пСрСсСчСниС ΠΏΠΎ этим Π΄Π°Π½Π½Ρ‹ΠΌ - ΠΊΠ»Π°Π΄Π΅ΠΌ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚
result = vulnFlow * data_on_lodash;

// Π€ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅ΠΌ список ΠΏΡƒΡ‚Π΅ΠΉ ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΡ‹ ΡƒΠΆΠ΅ ΠΏΡ€ΠΎΡˆΠ»ΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒ Π² дальнСйшСм Π΄ΡƒΠ±Π»ΠΈ
List<string> lodash_result_path = new List<string> {};

foreach(CxList lodash_result in result)
{
    // ΠžΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ Ρ€Π°Π· ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΏΡƒΡ‚ΠΈ ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ
	string file_name = lodash_result.GetFirstGraph().LinePragma.FileName;
	lodash_result_path.Add(file_name);
}

// Π”Π°Π»ΡŒΡˆΠ΅ ΠΈΠ΄Π΅Ρ‚ Ρ‡Π°ΡΡ‚ΡŒ относящаяся ΠΊ html Ρ„Π°ΠΉΠ»Π°ΠΌ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² Π½ΠΈΡ… ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΎΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ ΠΎΡ‚ΠΊΡƒΠ΄Π° ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΈΠ΄Π΅Ρ‚ Π²Ρ‹Π·ΠΎΠ²
// Π€ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅ΠΌ массив ΠΏΡƒΡ‚Π΅ΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΌΠΈ, Ρ‡Ρ‚ΠΎ срабатывания уязвимых ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π±Ρ‹Π»ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ Π² Ρ‚Π΅Ρ… Ρ„Π°ΠΉΠ»Π°Ρ…, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… объявлСн lodash
List<string> lodash_path = new List<string> {};
foreach(CxList string_lodash in lodash_strings)
{
	string file_name = string_lodash.GetFirstGraph().LinePragma.FileName;
	lodash_path.Add(file_name);
}

// ΠŸΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅ΠΌ всС уязвимыС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ убСТдаСмся, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π²Ρ‹Π·Π²Π°Π½Ρ‹ Π² Ρ‚Π΅Ρ… ΠΆΠ΅ Ρ„Π°ΠΉΠ»Π°Ρ…, Ρ‡Ρ‚ΠΎ ΠΈ объявлСниС/Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ lodash
foreach(CxList method in vulnerableMethods)
{
	string file_name_method = method.GetFirstGraph().LinePragma.FileName;
	if (lodash_path.Contains(file_name_method) == true && lodash_result_path.Contains(file_name_method) == false){
		result.Add(method);
	}
}

// Π£Π±ΠΈΡ€Π°Π΅ΠΌ всС UknownReferences ΠΈ оставляСм самый "Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ" ΠΈΠ· ΠΏΡƒΡ‚Π΅ΠΉ, Ссли Ρ‚Π°ΠΊΠΈΠ΅ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ
result = result.ReduceFlow(CxList.ReduceFlowType.ReduceSmallFlow) - result.FindByType(typeof(UnknownReference));

αž—αžΆαžšαž€αž·αž…αŸ’αž…αŸ– αž€αŸ†αž–αž»αž„αžŸαŸ’αžœαŸ‚αž„αžšαž€αžœαž·αž‰αŸ’αž‰αžΆαž”αž“αž”αžαŸ’αžšαžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ’αž€αž”αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ

αž‡αžΆαžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™: αžœαžΆαž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαžšαžΏαž„αž…αž˜αŸ’αž›αŸ‚αž€αž‘αŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αž‡αžΆαž–αž·αžŸαŸαžŸαž‘αžΌαžšαžŸαž–αŸ’αž‘αžŠαŸƒ αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αŸ’αžšαžΎαžœαž·αž‰αŸ’αž‰αžΆαž”αž“αž”αžαŸ’αžš αž¬αžŸαŸ„αžŠαžΎαž˜αŸ’αž”αžΈαž…αžΌαž›αž”αŸ’αžšαžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž•αŸ’αžŸαŸαž„αŸ— αž¬αž•αŸ’αž‘αŸ€αž„αž•αŸ’αž‘αžΆαžαŸ‹ SSL-PinningαŸ” αžαžΆαž˜αž‘αžŸαŸ’αžŸαž“αŸˆαžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž– αž€αžΆαžšαžšαž€αŸ’αžŸαžΆαž‘αž»αž€αžšαž”αžŸαŸ‹αž”αŸ‚αž”αž“αŸαŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΌαžŠαž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž›αŸ’αž’αž”αŸ†αž•αž»αžαž“αŸ„αŸ‡αž‘αŸαŸ” αžαŸ„αŸ‡αž–αŸ’αž™αžΆαž™αžΆαž˜αžŸαžšαžŸαŸαžšαž…αŸ’αž”αžΆαž”αŸ‹αžŠαŸ‚αž›αž“αžΉαž„αžŸαŸ’αžœαŸ‚αž„αžšαž€αž―αž€αžŸαžΆαžšαžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆαž“αŸ…αž€αŸ’αž“αž»αž„αžƒαŸ’αž›αžΆαŸ†αž„αŸ–

// НайдСм всС сСртификаты ΠΏΠΎ маскС Ρ„Π°ΠΉΠ»Π°
CxList find_certs = All.FindByShortNames(new List<string> {"*.der", "*.cer", "*.pem", "*.key"}, false);

// ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ, Π³Π΄Π΅ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ
CxList data_used_certs = All.DataInfluencedBy(find_certs);

// И для ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ - ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Π³Π΄Π΅ вызываСтся Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ сСртификатов
// Для Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹
CxList methods = All.FindByMemberAccess("*.getAssets");

// ΠŸΠ΅Ρ€Π΅ΡΠ΅Ρ‡Π΅Π½ΠΈΠ΅ мноТСств даст Π½Π°ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΠΎ использованию Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… сСртификатов Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ
result = methods * data_used_certs;

αž—αžΆαžšαž€αž·αž…αŸ’αž…αŸ– αžŸαŸ’αžœαŸ‚αž„αžšαž€αžŸαž‰αŸ’αž‰αžΆαžŸαž˜αŸ’αž„αžΆαžαŸ‹αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαž˜αŸ’αžšαž”αžŸαž˜αŸ’αžšαž½αž›αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ

αž‡αžΆαžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™: αž‡αžΆαžšαžΏαž™αŸ— αžœαžΆαž…αžΆαŸ†αž”αžΆαž…αŸ‹αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŠαž€αž αžΌαžαžαžΌαžαžΉαž“αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαž˜αŸ’αžšαž”αžŸαž˜αŸ’αžšαž½αž› αž¬αž–αŸαžαŸŒαž˜αžΆαž“αžŸαŸ†αžαžΆαž“αŸ‹αŸ—αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαžŠαŸ‚αž›αž˜αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΌαžŠαŸ” αž‡αžΆαž€αžΆαžšαž–αž·αžαžŽαžΆαžŸαŸ‹ αž€αžΆαžšαžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž–αž½αž€αžœαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΌαžŠαž”αŸ’αžšαž—αž–αž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž‚αŸ†αž“αž·αžαž›αŸ’αž’αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžŸαŸ’αžαžΆαž“αž—αžΆαž–αž”αŸ’αžšαŸ‚αž”αŸ’αžšαž½αž›αŸ” αžŸαžΌαž˜αž’αžšαž‚αž»αžŽαž…αŸ†αž–αŸ„αŸ‡αžŸαŸ†αžŽαž½αžš CxQL αž€αžΆαžšαžŸαŸ’αžœαŸ‚αž„αžšαž€αžšαžΏαž„αžŠαžΌαž…αž“αŸαŸ‡αž‚αžΊαž„αžΆαž™αžŸαŸ’αžšαž½αž›αžŽαžΆαžŸαŸ‹αŸ–

// ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ всС строки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ содСрТатся Π² ΠΊΠΎΠ΄Π΅
CxList strings = base.Find_Strings();

// Π˜Ρ‰Π΅ΠΌ срСди всСх строк Π½ΡƒΠΆΠ½ΠΎΠ΅ Π½Π°ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ‚ΠΎΠΊΠ΅Π½ Π² Π²ΠΈΠ΄Π΅ строки "qwerty12345"
result = strings.FindByShortName("qwerty12345");

αžŸαŸαž…αž€αŸ’αžαžΈαžŸαž“αŸ’αž“αž·αžŠαŸ’αž‹αžΆαž“

αžαŸ’αž‰αž»αŸ†αžŸαž„αŸ’αžƒαžΉαž˜αžαžΆαž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡αž“αžΉαž„αž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αžŠαŸ‚αž›αž€αŸ†αž–αž»αž„αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžŸαŸ’αž‚αžΆαž›αŸ‹αž‚αŸ’αž“αžΆαž‡αžΆαž˜αž½αž™αž§αž”αž€αžšαžŽαŸ Checkmarx αŸ” αž”αŸ’αžšαž αŸ‚αž›β€‹αž‡αžΆβ€‹αž’αŸ’αž“αž€β€‹αžŠαŸ‚αž›β€‹αž”αžΆαž“β€‹αžŸαžšαžŸαŸαžšβ€‹αž…αŸ’αž”αžΆαž”αŸ‹β€‹αž•αŸ’αž‘αžΆαž›αŸ‹β€‹αžαŸ’αž›αž½αž“β€‹αž‡αžΆβ€‹αž™αžΌαžšβ€‹αž˜αž€β€‹αž αžΎαž™β€‹αž€αŸβ€‹αž“αžΉαž„β€‹αžšαž€β€‹αžƒαžΎαž‰β€‹αž’αŸ’αžœαžΈβ€‹αžŠαŸ‚αž›β€‹αž˜αžΆαž“β€‹αž”αŸ’αžšαž™αŸ„αž‡αž“αŸβ€‹αž€αŸ’αž“αž»αž„β€‹αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†β€‹αž“αŸαŸ‡β€‹αžŠαŸ‚αžšαŸ”

αž‡αžΆαž’αž€αž»αžŸαž› αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž˜αžΆαž“αž€αžΆαžšαžαŸ’αžœαŸ‡αžαžΆαžαž’αž“αž’αžΆαž“ αžŠαŸ‚αž›αž‚αŸ†αž“αž·αžαžαŸ’αž˜αžΈαŸ—αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαž˜αžΌαž›αž€αŸ’αž“αž»αž„αž’αŸ†αž‘αž»αž„αž–αŸαž›αž”αž„αŸ’αž€αžΎαžαž…αŸ’αž”αžΆαž”αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Checkmarx αŸ” αž“αŸ„αŸ‡αž αžΎαž™αž‡αžΆαž˜αžΌαž›αž αŸαžαž»αžŠαŸ‚αž›αž™αžΎαž„αž”αžΆαž“αž”αž„αŸ’αž€αžΎαž αžƒαŸ’αž›αžΆαŸ†αž„αž“αŸ…αž›αžΎ GithubαžŠαŸ‚αž›αž‡αžΆαž€αž“αŸ’αž›αŸ‚αž„αžŠαŸ‚αž›αž™αžΎαž„αž“αžΉαž„αž”αž„αŸ’αž αŸ„αŸ‡αž€αžΆαžšαž„αžΆαžšαžšαž”αžŸαŸ‹αž™αžΎαž„αžŠαžΎαž˜αŸ’αž”αžΈαž±αŸ’αž™αž’αŸ’αž“αž€αžšαžΆαž›αŸ‹αž‚αŸ’αž“αžΆαžŠαŸ‚αž›αž”αŸ’αžšαžΎ CxQL αž’αžΆαž…αžŸαŸ’αžœαŸ‚αž„αžšαž€αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž“αŸ…αž€αŸ’αž“αž»αž„αžœαžΆ αž αžΎαž™αž€αŸαž˜αžΆαž“αž±αž€αžΆαžŸαž…αŸ‚αž€αžšαŸ†αž›αŸ‚αž€αž€αžΆαžšαž„αžΆαžšαžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαž‡αžΆαž˜αž½αž™αžŸαž αž‚αž˜αž“αŸαž•αž„αžŠαŸ‚αžšαŸ” αžƒαŸ’αž›αžΆαŸ†αž„αž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž”αŸ†αž–αŸαž‰ αž“αž·αž„αžšαŸ€αž”αž…αŸ†αžαŸ’αž›αžΉαž˜αžŸαžΆαžš αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž’αŸ’αž“αž€αžšαž½αž˜αž…αŸ†αžŽαŸ‚αž€αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαŸ’αžœαžΆαž‚αž˜αž“αŸ!

αžŸαžΌαž˜αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›!

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹