Како написати ΠΏΡ€Π°Π²ΠΈΠ»Π° Π·Π° ЦхСцкмаркс Π° Π΄Π° Π½Π΅ ΠΏΠΎΠ»ΡƒΠ΄ΠΈΡ‚Π΅

Π₯Сј Π₯Π°Π±Ρ€!

Π£ свом Ρ€Π°Π΄Ρƒ наша компанија сС Π²Ρ€Π»ΠΎ чСсто Π±Π°Π²ΠΈ Ρ€Π°Π·Π½ΠΈΠΌ Π°Π»Π°Ρ‚ΠΈΠΌΠ° Π·Π° Π°Π½Π°Π»ΠΈΠ·Ρƒ статичког ΠΊΠΎΠ΄Π° (БАБВ). Изван ΠΊΡƒΡ‚ΠΈΡ˜Π΅ сви Ρ€Π°Π΄Π΅ просСчно. Наравно, свС зависи ΠΎΠ΄ ΠΏΡ€ΠΎΡ˜Π΅ΠΊΡ‚Π° ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡ˜Π° којС сС Ρƒ ΡšΠ΅ΠΌΡƒ користС, ΠΊΠ°ΠΎ ΠΈ ΠΎΠ΄ Ρ‚ΠΎΠ³Π° ΠΊΠΎΠ»ΠΈΠΊΠΎ су Ρ‚Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡ˜Π΅ ΠΏΠΎΠΊΡ€ΠΈΠ²Π΅Π½Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΈΠΌΠ° Π°Π½Π°Π»ΠΈΠ·Π΅. По ΠΌΠΎΠΌ ΠΌΠΈΡˆΡ™Π΅ΡšΡƒ, јСдан ΠΎΠ΄ Π½Π°Ρ˜Π²Π°ΠΆΠ½ΠΈΡ˜ΠΈΡ… ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΡ˜ΡƒΠΌΠ° ΠΏΡ€ΠΈ ΠΎΠ΄Π°Π±ΠΈΡ€Ρƒ БАБВ Π°Π»Π°Ρ‚Π° јС могућност Π΄Π° Π³Π° ΠΏΡ€ΠΈΠ»Π°Π³ΠΎΠ΄ΠΈΡ‚Π΅ спСцифичностима Π²Π°ΡˆΠΈΡ… Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°, односно ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΠΈ ΠΌΠ΅ΡšΠ°Ρ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π°Π½Π°Π»ΠΈΠ·Π΅ ΠΈΠ»ΠΈ, ΠΊΠ°ΠΊΠΎ ΠΈΡ… Ρ‡Π΅ΡˆΡ›Π΅ Π·ΠΎΠ²Ρƒ, ΠΏΡ€ΠΈΠ»Π°Π³ΠΎΡ’Π΅Π½ΠΈ ΡƒΠΏΠΈΡ‚ΠΈ.

Како написати ΠΏΡ€Π°Π²ΠΈΠ»Π° Π·Π° ЦхСцкмаркс Π° Π΄Π° Π½Π΅ ΠΏΠΎΠ»ΡƒΠ΄ΠΈΡ‚Π΅

ΠΠ°Ρ˜Ρ‡Π΅ΡˆΡ›Π΅ користимо Π¦Ρ…Π΅Ρ†ΠΊΠΌΠ°Ρ€ΠΊ - Π²Π΅ΠΎΠΌΠ° Π·Π°Π½ΠΈΠΌΡ™ΠΈΠ² ΠΈ ΠΌΠΎΡ›Π°Π½ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ ΠΊΠΎΠ΄Π°. Π£ ΠΎΠ²ΠΎΠΌ Ρ‡Π»Π°Π½ΠΊΡƒ Ρ›Ρƒ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΠΈ ΠΎ свом искуству писања ΠΏΡ€Π°Π²ΠΈΠ»Π° Π°Π½Π°Π»ΠΈΠ·Π΅ Π·Π° Ρ‚ΠΎ.

ΠŸΡ€Π΅Π³Π»Π΅Π΄ ΡΠ°Π΄Ρ€ΠΆΠ°Ρ˜Π°

Π£Π»Π°Π·Π°ΠΊ

Π—Π° ΠΏΠΎΡ‡Π΅Ρ‚Π°ΠΊ, ΠΆΠ΅Π»Π΅ΠΎ Π±ΠΈΡ… Π΄Π° ΠΏΡ€Π΅ΠΏΠΎΡ€ΡƒΡ‡ΠΈΠΌ јСдан ΠΎΠ΄ Ρ€Π΅Ρ‚ΠΊΠΈΡ… Ρ‡Π»Π°Π½Π°ΠΊΠ° Π½Π° руском ΠΎ карактСристикама писања ΡƒΠΏΠΈΡ‚Π° Π·Π° Π¦Ρ…Π΅Ρ†ΠΊΠΌΠ°Ρ€ΠΊ. ΠžΠ±Ρ˜Π°Π²Ρ™Π΅Π½ΠΎ јС Π½Π° Π₯Π°Π±Ρ€Π΅Ρƒ ΠΊΡ€Π°Ρ˜Π΅ΠΌ 2019. Π³ΠΎΠ΄ΠΈΠ½Π΅ ΠΏΠΎΠ΄ насловом: "Π—Π΄Ρ€Π°Π²ΠΎ, ЧСкмаркс!" Како написати Π¦Ρ…Π΅Ρ†ΠΊΠΌΠ°Ρ€ΠΊ БАБВ ΡƒΠΏΠΈΡ‚ ΠΈ ΠΏΡ€ΠΎΠ½Π°Ρ›ΠΈ сјајнС Ρ€Π°ΡšΠΈΠ²ΠΎΡΡ‚ΠΈ.

Он Π΄Π΅Ρ‚Π°Ρ™Π½ΠΎ ΠΈΡΠΏΠΈΡ‚ΡƒΡ˜Π΅ ΠΊΠ°ΠΊΠΎ написати ΠΏΡ€Π²Π΅ ΡƒΠΏΠΈΡ‚Π΅ Ρƒ Π¦ΠΊΠšΠ›-Ρƒ (Π¦Ρ…Π΅Ρ†ΠΊΠΌΠ°Ρ€ΠΊ ΠšΡƒΠ΅Ρ€ΠΈ Π›Π°Π½Π³ΡƒΠ°Π³Π΅) Π·Π° Π½Π΅ΠΊΡƒ тСстну Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Ρƒ ΠΈ ΠΏΠΎΠΊΠ°Π·ΡƒΡ˜Π΅ основнС ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅ ΠΊΠ°ΠΊΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π°Π½Π°Π»ΠΈΠ·Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡˆΡƒ.

НСћу ΠΏΠΎΠ½Π°Π²Ρ™Π°Ρ‚ΠΈ ΠΎΠ½ΠΎ ΡˆΡ‚ΠΎ јС Ρƒ ΡšΠ΅ΠΌΡƒ описано, ΠΈΠ°ΠΊΠΎ Ρ›Π΅ Π½Π΅ΠΊΠ΅ раскрсницС ΠΈΠΏΠ°ΠΊ Π±ΠΈΡ‚ΠΈ присутнС. Π£ свом Ρ‡Π»Π°Π½ΠΊΡƒ ΠΏΠΎΠΊΡƒΡˆΠ°Ρ›Ρƒ Π΄Π° саставим Π½Π΅ΠΊΡƒ врсту β€žΠ·Π±ΠΈΡ€ΠΊΠ΅ Ρ€Π΅Ρ†Π΅ΠΏΠ°Ρ‚Π°β€œ, списак Ρ€Π΅ΡˆΠ΅ΡšΠ° спСцифичних ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° са којима сам сС сусрСо Ρ‚ΠΎΠΊΠΎΠΌ Ρ€Π°Π΄Π° са Π¦Ρ…Π΅Ρ†ΠΊΠΌΠ°Ρ€ΠΊ-ΠΎΠΌ. ΠœΠΎΡ€Π°ΠΎ сам Π΄Π° сС Ρ€Π°Π·Π±ΠΈΡ˜Π΅ΠΌ Π·Π±ΠΎΠ³ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΎΠ΄ ΠΎΠ²ΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°. ПонСкад нијС Π±ΠΈΠ»ΠΎ Π΄ΠΎΠ²ΠΎΡ™Π½ΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ˜Π° Ρƒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜ΠΈ, Π° ΠΏΠΎΠ½Π΅ΠΊΠ°Π΄ јС Π±ΠΈΠ»ΠΎ Ρ‡Π°ΠΊ ΠΈ Ρ‚Π΅ΡˆΠΊΠΎ Ρ€Π°Π·ΡƒΠΌΠ΅Ρ‚ΠΈ ΠΊΠ°ΠΊΠΎ Π΄Π° сС ΡƒΡ€Π°Π΄ΠΈ ΠΎΠ½ΠΎ ΡˆΡ‚ΠΎ сС Ρ‚Ρ€Π°ΠΆΠΈ. Надам сС Π΄Π° мојС искуство ΠΈ нСпроспаванС Π½ΠΎΡ›ΠΈ Π½Π΅Ρ›Π΅ Π±ΠΈΡ‚ΠΈ ΡƒΠ·Π°Π»ΡƒΠ΄Π½ΠΈ, Π° ΠΎΠ²Π° β€žΠΊΠΎΠ»Π΅ΠΊΡ†ΠΈΡ˜Π° Ρ€Π΅Ρ†Π΅ΠΏΠ°Ρ‚Π° ΠΏΡ€ΠΈΠ»Π°Π³ΠΎΡ’Π΅Π½ΠΈΡ… ΡƒΠΏΠΈΡ‚Π°β€œ Ρ›Π΅ Π²Π°ΠΌ ΡƒΡˆΡ‚Π΅Π΄Π΅Ρ‚ΠΈ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ сати ΠΈΠ»ΠΈ ΠΏΠ°Ρ€ Π½Π΅Ρ€Π²Π½ΠΈΡ… Ρ›Π΅Π»ΠΈΡ˜Π°. Π”Π°ΠΊΠ»Π΅, ΠΏΠΎΡ‡Π½ΠΈΠΌΠΎ!

ΠžΠΏΡˆΡ‚Π΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ˜Π΅ ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΠΈΠΌΠ°

ΠŸΡ€Π²ΠΎ, поглСдајмо Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ основних ΠΊΠΎΠ½Ρ†Π΅ΠΏΠ°Ρ‚Π° ΠΈ процСс Ρ€Π°Π΄Π° са ΠΏΡ€Π°Π²ΠΈΠ»ΠΈΠΌΠ°, Π΄Π° бисмо Π±ΠΎΡ™Π΅ Ρ€Π°Π·ΡƒΠΌΠ΅Π»ΠΈ ΡˆΡ‚Π° Ρ›Π΅ сС слСдСћС дСсити. И Π·Π°Ρ‚ΠΎ ΡˆΡ‚ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° Π½Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈ Π½ΠΈΡˆΡ‚Π° ΠΎ Ρ‚ΠΎΠΌΠ΅ ΠΈΠ»ΠΈ јС Π²Π΅ΠΎΠΌΠ° Ρ€Π°ΡˆΠΈΡ€Π΅Π½Π° Ρƒ структури, ΡˆΡ‚ΠΎ нијС баш Π·Π³ΠΎΠ΄Π½ΠΎ.

  1. ΠŸΡ€Π°Π²ΠΈΠ»Π° сС ΠΏΡ€ΠΈΠΌΠ΅ΡšΡƒΡ˜Ρƒ Ρ‚ΠΎΠΊΠΎΠΌ ΡΠΊΠ΅Π½ΠΈΡ€Π°ΡšΠ° Ρƒ зависности ΠΎΠ΄ ΡƒΠ½Π°ΠΏΡ€Π΅Π΄ ΠΎΠ΄Π°Π±Ρ€Π°Π½Π΅ поставкС Π½Π° ΠΏΠΎΡ‡Π΅Ρ‚ΠΊΡƒ (скуп Π°ΠΊΡ‚ΠΈΠ²Π½ΠΈΡ… ΠΏΡ€Π°Π²ΠΈΠ»Π°). ΠœΠΎΠΆΠ΅Ρ‚Π΅ ΠΊΡ€Π΅ΠΈΡ€Π°Ρ‚ΠΈ Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ Π±Ρ€ΠΎΡ˜ ΡƒΠ½Π°ΠΏΡ€Π΅Π΄ ΠΏΠΎΠ΄Π΅ΡˆΠ΅Π½ΠΈΡ… врСдности, Π° ΠΊΠ°ΠΊΠΎ Ρ‚Π°Ρ‡Π½ΠΎ Π΄Π° ΠΈΡ… структуриратС зависи ΠΎΠ΄ спСцифичности вашСг процСса. ΠœΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡ… груписати ΠΏΠΎ Ρ˜Π΅Π·ΠΈΠΊΡƒ ΠΈΠ»ΠΈ ΠΎΠ΄Π°Π±Ρ€Π°Ρ‚ΠΈ ΡƒΠ½Π°ΠΏΡ€Π΅Π΄ подСшСнС поставкС Π·Π° сваки ΠΏΡ€ΠΎΡ˜Π΅ΠΊΠ°Ρ‚. Π‘Ρ€ΠΎΡ˜ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΈΡ… ΠΏΡ€Π°Π²ΠΈΠ»Π° ΡƒΡ‚ΠΈΡ‡Π΅ Π½Π° Π±Ρ€Π·ΠΈΠ½Ρƒ ΠΈ тачност ΡΠΊΠ΅Π½ΠΈΡ€Π°ΡšΠ°.

    Како написати ΠΏΡ€Π°Π²ΠΈΠ»Π° Π·Π° ЦхСцкмаркс Π° Π΄Π° Π½Π΅ ΠΏΠΎΠ»ΡƒΠ΄ΠΈΡ‚Π΅ΠŸΠΎΠ΄Π΅ΡˆΠ°Π²Π°ΡšΠ΅ ΡƒΠ½Π°ΠΏΡ€Π΅Π΄ подСшСног Ρƒ Π¦Ρ…Π΅Ρ†ΠΊΠΌΠ°Ρ€ΠΊ ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜ΡΡƒ

  2. ΠŸΡ€Π°Π²ΠΈΠ»Π° сС ΡƒΡ€Π΅Ρ’ΡƒΡ˜Ρƒ Ρƒ посСбном Π°Π»Π°Ρ‚Ρƒ који сС Π·ΠΎΠ²Π΅ ЦкАудитор. Ово јС дСсктоп Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° која сС ΠΏΠΎΠ²Π΅Π·ΡƒΡ˜Π΅ са сСрвСром Π½Π° ΠΊΠΎΠΌΠ΅ Ρ€Π°Π΄ΠΈ Π¦Ρ…Π΅Ρ†ΠΊΠΌΠ°Ρ€ΠΊ. Овај Π°Π»Π°Ρ‚ ΠΈΠΌΠ° Π΄Π²Π° Π½Π°Ρ‡ΠΈΠ½Π° Ρ€Π°Π΄Π°: ΡƒΡ€Π΅Ρ’ΠΈΠ²Π°ΡšΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΈ Π°Π½Π°Π»ΠΈΠ·Π° Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚Π° Π²Π΅Ρ› ΠΎΠ±Π°Π²Ρ™Π΅Π½ΠΎΠ³ ΡΠΊΠ΅Π½ΠΈΡ€Π°ΡšΠ°.

    Како написати ΠΏΡ€Π°Π²ΠΈΠ»Π° Π·Π° ЦхСцкмаркс Π° Π΄Π° Π½Π΅ полудитСЦкАудит ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜Ρ

  3. ΠŸΡ€Π°Π²ΠΈΠ»Π° Ρƒ Π¦Ρ…Π΅Ρ†ΠΊΠΌΠ°Ρ€ΠΊ-Ρƒ су ΠΏΠΎΠ΄Π΅Ρ™Π΅Π½Π° ΠΏΠΎ Ρ˜Π΅Π·ΠΈΠΊΡƒ, односно сваки јСзик ΠΈΠΌΠ° свој скуп ΡƒΠΏΠΈΡ‚Π°. ΠŸΠΎΡΡ‚ΠΎΡ˜Π΅ ΠΈ Π½Π΅ΠΊΠ° ΠΎΠΏΡˆΡ‚Π° ΠΏΡ€Π°Π²ΠΈΠ»Π° која Π²Π°ΠΆΠ΅ Π±Π΅Π· ΠΎΠ±Π·ΠΈΡ€Π° Π½Π° јСзик, Ρ‚ΠΎ су Ρ‚Π°ΠΊΠΎΠ·Π²Π°Π½ΠΈ основни ΡƒΠΏΠΈΡ‚ΠΈ. Π£Π³Π»Π°Π²Π½ΠΎΠΌ, основни ΡƒΠΏΠΈΡ‚ΠΈ ΡƒΠΊΡ™ΡƒΡ‡ΡƒΡ˜Ρƒ Ρ‚Ρ€Π°ΠΆΠ΅ΡšΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ˜Π° којС користС Π΄Ρ€ΡƒΠ³Π° ΠΏΡ€Π°Π²ΠΈΠ»Π°.

    Како написати ΠΏΡ€Π°Π²ΠΈΠ»Π° Π·Π° ЦхСцкмаркс Π° Π΄Π° Π½Π΅ ΠΏΠΎΠ»ΡƒΠ΄ΠΈΡ‚Π΅ΠŸΠΎΠ΄Π΅Π»Π° ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΏΠΎ Ρ˜Π΅Π·ΠΈΠΊΡƒ

  4. ΠŸΡ€Π°Π²ΠΈΠ»Π° су β€žΠΈΠ·Π²Ρ€ΡˆΠ½Π°β€ ΠΈ β€žΠ½Π΅ΠΈΠ·Π²Ρ€ΡˆΠ½Π°β€ (ΠΈΠ·Π²Ρ€ΡˆΠ΅Π½Π° ΠΈ Π½Π΅ΠΈΠ·Π²Ρ€ΡˆΠ΅Π½Π°). По ΠΌΠΎΠΌ ΠΌΠΈΡˆΡ™Π΅ΡšΡƒ нијС баш Ρ‚Π°Ρ‡Π°Π½ Π½Π°Π·ΠΈΠ², Π°Π»ΠΈ Ρ‚ΠΎ јС ΠΎΠ½ΠΎ ΡˆΡ‚ΠΎ Ρ˜Π΅ΡΡ‚Π΅. Π‘ΡƒΡˆΡ‚ΠΈΠ½Π° јС Π΄Π° Ρ›Π΅ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ ΠΈΠ·Π²Ρ€ΡˆΠ°Π²Π°ΡšΠ° β€žΠ˜Π·Π²Ρ€ΡˆΠ½ΠΈΡ…β€œ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π±ΠΈΡ‚ΠΈ ΠΏΡ€ΠΈΠΊΠ°Π·Π°Π½ Ρƒ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΠΌΠ° ΡΠΊΠ΅Π½ΠΈΡ€Π°ΡšΠ° Ρƒ корисничком ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜ΡΡƒ, Π° β€žΠΠΎΠ½-Π•ΠΊΠ΅Ρ†ΡƒΡ‚Π°Π±Π»Π΅β€œ ΠΏΡ€Π°Π²ΠΈΠ»Π° су ΠΏΠΎΡ‚Ρ€Π΅Π±Π½Π° само Π΄Π° Π±ΠΈ користили својС Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚Π΅ Ρƒ Π΄Ρ€ΡƒΠ³ΠΈΠΌ Π·Π°Ρ…Ρ‚Π΅Π²ΠΈΠΌΠ° (Ρƒ ΡΡƒΡˆΡ‚ΠΈΠ½ΠΈ, само Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π°).

    Како написати ΠΏΡ€Π°Π²ΠΈΠ»Π° Π·Π° ЦхСцкмаркс Π° Π΄Π° Π½Π΅ ΠΏΠΎΠ»ΡƒΠ΄ΠΈΡ‚Π΅ΠžΠ΄Ρ€Π΅Ρ’ΠΈΠ²Π°ΡšΠ΅ Ρ‚ΠΈΠΏΠ° ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΏΡ€ΠΈΠ»ΠΈΠΊΠΎΠΌ ΠΊΡ€Π΅ΠΈΡ€Π°ΡšΠ°

  5. ΠœΠΎΠΆΠ΅Ρ‚Π΅ ΠΊΡ€Π΅ΠΈΡ€Π°Ρ‚ΠΈ Π½ΠΎΠ²Π° ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΈΠ»ΠΈ Π΄ΠΎΠΏΡƒΠ½ΠΈΡ‚ΠΈ/прСписати ΠΏΠΎΡΡ‚ΠΎΡ˜Π΅Ρ›Π°. Π”Π° бистС ΠΏΠΎΠ½ΠΎΠ²ΠΎ написали ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎ јС Π΄Π° Π³Π° ΠΏΡ€ΠΎΠ½Π°Ρ’Π΅Ρ‚Π΅ Ρƒ стаблу, ΠΊΠ»ΠΈΠΊΠ½Π΅Ρ‚Π΅ дСсним тастСром миша ΠΈ ΠΈΠ·Π°Π±Π΅Ρ€Π΅Ρ‚Π΅ β€žΠžΠ²Π΅Ρ€Ρ€ΠΈΠ΄Π΅β€œ ΠΈΠ· ΠΏΠ°Π΄Π°Ρ˜ΡƒΡ›Π΅Π³ мСнија. ОвдС јС Π²Π°ΠΆΠ½ΠΎ Π·Π°ΠΏΠ°ΠΌΡ‚ΠΈΡ‚ΠΈ Π΄Π° Π½ΠΎΠ²Π° ΠΏΡ€Π°Π²ΠΈΠ»Π° нису ΠΈΠ½ΠΈΡ†ΠΈΡ˜Π°Π»Π½ΠΎ ΡƒΠΊΡ™ΡƒΡ‡Π΅Π½Π° Ρƒ ΡƒΠ½Π°ΠΏΡ€Π΅Π΄ подСшСна подСшавања ΠΈ нису Π°ΠΊΡ‚ΠΈΠ²Π½Π°. Π”Π° бистС ΠΏΠΎΡ‡Π΅Π»ΠΈ Π΄Π° ΠΈΡ… користитС ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎ јС Π΄Π° ΠΈΡ… Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚Π΅ Ρƒ ΠΌΠ΅Π½ΠΈΡ˜Ρƒ β€žΠŸΡ€Π΅ΡΠ΅Ρ‚ ΠœΠ°Π½Π°Π³Π΅Ρ€β€œ Ρƒ инструмСнту. ΠŸΡ€Π΅ΠΏΠΈΡΠ°Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»Π° Π·Π°Π΄Ρ€ΠΆΠ°Π²Π°Ρ˜Ρƒ своја подСшавања, односно Π°ΠΊΠΎ јС ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π±ΠΈΠ»ΠΎ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ, остаћС Ρ‚Π°ΠΊΠΎ ΠΈ ΠΎΠ΄ΠΌΠ°Ρ… Ρ›Π΅ сС ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΠΈ.

    Како написати ΠΏΡ€Π°Π²ΠΈΠ»Π° Π·Π° ЦхСцкмаркс Π° Π΄Π° Π½Π΅ ΠΏΠΎΠ»ΡƒΠ΄ΠΈΡ‚Π΅ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π½ΠΎΠ²ΠΎΠ³ ΠΏΡ€Π°Π²ΠΈΠ»Π° Ρƒ ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜ΡΡƒ ΠŸΡ€Π΅ΡΠ΅Ρ‚ ΠœΠ°Π½Π°Π³Π΅Ρ€

  6. Π’ΠΎΠΊΠΎΠΌ ΠΈΠ·Π²Ρ€ΡˆΠ°Π²Π°ΡšΠ° Π³Ρ€Π°Π΄ΠΈ сС β€žΠ΄Ρ€Π²ΠΎβ€œ Π·Π°Ρ…Ρ‚Π΅Π²Π°, ΡˆΡ‚ΠΎ зависи ΠΎΠ΄ Ρ‡Π΅Π³Π°. ΠŸΡ€Π²ΠΎ сС ΠΈΠ·Π²Ρ€ΡˆΠ°Π²Π°Ρ˜Ρƒ ΠΏΡ€Π°Π²ΠΈΠ»Π° која ΠΏΡ€ΠΈΠΊΡƒΠΏΡ™Π°Ρ˜Ρƒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ˜Π΅, Π° Π΄Ρ€ΡƒΠ³ΠΈ ΠΎΠ½ΠΈ који ΠΈΡ… користС. Π Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ ΠΈΠ·Π²Ρ€ΡˆΠ΅ΡšΠ° јС ΠΊΠ΅ΡˆΠΈΡ€Π°Π½, Ρ‚Π°ΠΊΠΎ Π΄Π° Π°ΠΊΠΎ јС ΠΌΠΎΠ³ΡƒΡ›Π΅ користити Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚Π΅ ΠΏΠΎΡΡ‚ΠΎΡ˜Π΅Ρ›Π΅Π³ ΠΏΡ€Π°Π²ΠΈΠ»Π°, ΠΎΠ½Π΄Π° јС Π±ΠΎΡ™Π΅ Ρ‚ΠΎ ΡƒΡ‡ΠΈΠ½ΠΈΡ‚ΠΈ, Ρ‚ΠΎ Ρ›Π΅ ΡΠΌΠ°ΡšΠΈΡ‚ΠΈ Π²Ρ€Π΅ΠΌΠ΅ ΡΠΊΠ΅Π½ΠΈΡ€Π°ΡšΠ°.

  7. ΠŸΡ€Π°Π²ΠΈΠ»Π° сС ΠΌΠΎΠ³Ρƒ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΠΈ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΡ‚ΠΈΠΌ Π½ΠΈΠ²ΠΎΠΈΠΌΠ°:

  • Π—Π° Ρ†Π΅ΠΎ систСм - користићС сС Π·Π° Π±ΠΈΠ»ΠΎ којС ΡΠΊΠ΅Π½ΠΈΡ€Π°ΡšΠ΅ Π±ΠΈΠ»ΠΎ ΠΊΠΎΠ³ ΠΏΡ€ΠΎΡ˜Π΅ΠΊΡ‚Π°

  • На Π½ΠΈΠ²ΠΎΡƒ Ρ‚ΠΈΠΌΠ° (Π’ΠΈΠΌ) - користићС сС само Π·Π° ΡΠΊΠ΅Π½ΠΈΡ€Π°ΡšΠ΅ ΠΏΡ€ΠΎΡ˜Π΅ΠΊΠ°Ρ‚Π° Ρƒ ΠΈΠ·Π°Π±Ρ€Π°Π½ΠΎΠΌ Ρ‚ΠΈΠΌΡƒ.

  • На Π½ΠΈΠ²ΠΎΡƒ ΠΏΡ€ΠΎΡ˜Π΅ΠΊΡ‚Π° - Π‘ΠΈΡ›Π΅ ΠΏΡ€ΠΈΠΌΠ΅ΡšΠ΅Π½ΠΎ Ρƒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ ΠΏΡ€ΠΎΡ˜Π΅ΠΊΡ‚Ρƒ

    Како написати ΠΏΡ€Π°Π²ΠΈΠ»Π° Π·Π° ЦхСцкмаркс Π° Π΄Π° Π½Π΅ ΠΏΠΎΠ»ΡƒΠ΄ΠΈΡ‚Π΅ΠžΠ΄Ρ€Π΅Ρ’ΠΈΠ²Π°ΡšΠ΅ Π½ΠΈΠ²ΠΎΠ° Π½Π° којСм Ρ›Π΅ сС ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΠΏΡ€ΠΈΠΌΠ΅ΡšΠΈΠ²Π°Ρ‚ΠΈ

"Π Π΅Ρ‡Π½ΠΈΠΊ" Π·Π° ΠΏΠΎΡ‡Π΅Ρ‚Π½ΠΈΠΊΠ΅

И ΠΏΠΎΡ‡Π΅Ρ›Ρƒ са Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ ствари којС су ΠΌΠΈ ΠΈΠ·Π°Π·Π²Π°Π»Π΅ ΠΏΠΈΡ‚Π°ΡšΠ°, Π° ΠΏΠΎΠΊΠ°Π·Π°Ρ›Ρƒ ΠΈ Π±Ρ€ΠΎΡ˜Π½Π΅ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ΅ којС Ρ›Π΅ Π·Π½Π°Ρ‡Π°Ρ˜Π½ΠΎ ΠΏΠΎΡ˜Π΅Π΄Π½ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΠΈ ΠΆΠΈΠ²ΠΎΡ‚.

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ˜Π΅ са листама

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

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

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

Π‘Π²ΠΈ ΠΏΡ€ΠΎΠ½Π°Ρ’Π΅Π½ΠΈ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ΠΈ

Π£Π½ΡƒΡ‚Π°Ρ€ скСнираног јСзика ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±ΠΈΡ‚ΠΈ листу апсолутно свих Π΅Π»Π΅ΠΌΠ΅Π½Π°Ρ‚Π° којС јС Π¦Ρ…Π΅Ρ†ΠΊΠΌΠ°Ρ€ΠΊ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠΎΠ²Π°ΠΎ (стрингови, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π΅, класС, ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ ΠΈΡ‚Π΄.). Ово јС Π½Π΅ΠΊΠΈ простор ΠΎΠ±Ρ˜Π΅ΠΊΠ°Ρ‚Π° ΠΊΡ€ΠΎΠ· који сС ΠΌΠΎΠΆΠ΅ приступити All. Π’ΠΎ Ρ˜Π΅ΡΡ‚, Π΄Π° Ρ‚Ρ€Π°ΠΆΠΈΡ‚Π΅ ΠΎΠ±Ρ˜Π΅ΠΊΠ°Ρ‚ са ΠΎΠ΄Ρ€Π΅Ρ’Π΅Π½ΠΈΠΌ ΠΈΠΌΠ΅Π½ΠΎΠΌ searchMe, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€Π΅Ρ‚Ρ€Π°ΠΆΠΈΠ²Π°Ρ‚ΠΈ, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎ ΠΈΠΌΠ΅Π½Ρƒ свих ΠΏΡ€ΠΎΠ½Π°Ρ’Π΅Π½ΠΈΡ… ΠΎΠ±Ρ˜Π΅ΠΊΠ°Ρ‚Π°:

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

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

Али, Π°ΠΊΠΎ Ρ‚Ρ€Π΅Π±Π° Π΄Π° ΠΏΡ€Π΅Ρ‚Ρ€Π°ΠΆΡƒΡ˜Π΅Ρ‚Π΅ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ Ρ˜Π΅Π·ΠΈΠΊΡƒ који ΠΈΠ· Π½Π΅ΠΊΠΎΠ³ Ρ€Π°Π·Π»ΠΎΠ³Π° нијС ΡƒΠΊΡ™ΡƒΡ‡Π΅Π½ Ρƒ ΡΠΊΠ΅Π½ΠΈΡ€Π°ΡšΠ΅ (Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π³Ρ€ΠΎΠΎΠ²ΠΈ Ρƒ Андроид ΠΏΡ€ΠΎΡ˜Π΅ΠΊΡ‚Ρƒ), ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡˆΠΈΡ€ΠΈΡ‚ΠΈ простор нашСг ΠΎΠ±Ρ˜Π΅ΠΊΡ‚Π° ΠΊΡ€ΠΎΠ· ΠΏΡ€ΠΎΠΌΠ΅Π½Ρ™ΠΈΠ²Ρƒ:

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

Π€ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π΅ Π·Π° Π°Π½Π°Π»ΠΈΠ·Ρƒ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠ°

ОвС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π΅ сС користС Ρƒ ΠΌΠ½ΠΎΠ³ΠΈΠΌ ΠΏΡ€Π°Π²ΠΈΠ»ΠΈΠΌΠ°, Π° Π΅Π²ΠΎ ΠΌΠ°Π»Π΅ Π²Π°Ρ€Π°Π»ΠΈΡ†Π΅ ΡˆΡ‚Π° ΠΎΠ½Π΅ Π·Π½Π°Ρ‡Π΅:

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

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

Π”ΠΎΠ±ΠΈΡ˜Π°ΡšΠ΅ ΠΈΠΌΠ΅Π½Π°/ΠΏΡƒΡ‚Π°ΡšΠ° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ΅

ΠŸΠΎΡΡ‚ΠΎΡ˜ΠΈ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° који сС ΠΌΠΎΠ³Ρƒ Π΄ΠΎΠ±ΠΈΡ‚ΠΈ ΠΈΠ· Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚Π° ΡƒΠΏΠΈΡ‚Π° (ΠΈΠΌΠ΅ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ΅ Ρƒ којој јС унос ΠΏΡ€ΠΎΠ½Π°Ρ’Π΅Π½, стринг, ΠΈΡ‚Π΄.), Π°Π»ΠΈ Ρƒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜ΠΈ Π½Π΅ пишС ΠΊΠ°ΠΊΠΎ Π΄Π° ΠΈΡ… Π΄ΠΎΠ±ΠΈΡ˜Π΅Ρ‚Π΅ ΠΈ користитС. Π”Π°ΠΊΠ»Π΅, Π΄Π° бистС Ρ‚ΠΎ ΡƒΡ€Π°Π΄ΠΈΠ»ΠΈ, ΠΌΠΎΡ€Π°Ρ‚Π΅ Π΄Π° приступитС ΡΠ²ΠΎΡ˜ΡΡ‚Π²Ρƒ Π›ΠΈΠ½Π΅ΠŸΡ€Π°Π³ΠΌΠ° ΠΈ ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ΠΈ који су Π½Π°ΠΌ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈ Π±ΠΈΡ›Π΅ ΡΠΌΠ΅ΡˆΡ‚Π΅Π½ΠΈ ΡƒΠ½ΡƒΡ‚Π°Ρ€ њСга:

// Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π½Π°ΠΉΠ΄Π΅ΠΌ всС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹
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.

Π Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ ΠΈΠ·Π²Ρ€ΡˆΠ΅ΡšΠ°

ΠŸΠΎΡΡ‚ΠΎΡ˜ΠΈ посСбна ΠΏΡ€ΠΎΠΌΠ΅Π½Ρ™ΠΈΠ²Π° ΡƒΠ½ΡƒΡ‚Π°Ρ€ Π¦ΠΊΠšΠ›-Π° result, који Π²Ρ€Π°Ρ›Π° Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ ΠΈΠ·Π²Ρ€ΡˆΠ°Π²Π°ΡšΠ° вашСг писаног ΠΏΡ€Π°Π²ΠΈΠ»Π°. ΠžΠ΄ΠΌΠ°Ρ… сС ΠΈΠ½ΠΈΡ†ΠΈΡ˜Π°Π»ΠΈΠ·ΡƒΡ˜Π΅ ΠΈ Ρƒ њСга ΠΌΠΎΠΆΠ΅Ρ‚Π΅ уписати ΠΌΠ΅Ρ’ΡƒΡ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚Π΅, ΠΌΠ΅ΡšΠ°Ρ˜ΡƒΡ›ΠΈ ΠΈΡ… ΠΈ ΡƒΡΠ°Π²Ρ€ΡˆΠ°Π²Π°Ρ˜ΡƒΡ›ΠΈ ΠΈΡ… Π΄ΠΎΠΊ Ρ€Π°Π΄ΠΈΡ‚Π΅. Али, Π°ΠΊΠΎ Π½Π΅ ΠΏΠΎΡΡ‚ΠΎΡ˜ΠΈ Π΄ΠΎΠ΄Π΅Π»Π° овој ΠΏΡ€ΠΎΠΌΠ΅Π½Ρ™ΠΈΠ²ΠΎΡ˜ ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜ΠΈ ΡƒΠ½ΡƒΡ‚Π°Ρ€ ΠΏΡ€Π°Π²ΠΈΠ»Π° returnβ€” Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ ΠΈΠ·Π²Ρ€ΡˆΠ΅ΡšΠ° Ρ›Π΅ ΡƒΠ²Π΅ΠΊ Π±ΠΈΡ‚ΠΈ Π½ΡƒΠ»Π°.

Π‘Π»Π΅Π΄Π΅Ρ›ΠΈ ΡƒΠΏΠΈΡ‚ Π½Π°ΠΌ Π½Π΅Ρ›Π΅ Π²Ρ€Π°Ρ‚ΠΈΡ‚ΠΈ Π½ΠΈΡˆΡ‚Π° ΠΊΠ°ΠΎ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ ΠΈΠ·Π²Ρ€ΡˆΠ΅ΡšΠ° ΠΈ ΡƒΠ²Π΅ΠΊ Ρ›Π΅ Π±ΠΈΡ‚ΠΈ ΠΏΡ€Π°Π·Π°Π½:

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

Али, Π½Π°ΠΊΠΎΠ½ ΡˆΡ‚ΠΎ смо Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ ΠΈΠ·Π²Ρ€ΡˆΠ΅ΡšΠ° Π΄ΠΎΠ΄Π΅Π»ΠΈΠ»ΠΈ ΠΌΠ°Π³ΠΈΡ‡Π½ΠΎΡ˜ ΠΏΡ€ΠΎΠΌΠ΅Π½Ρ™ΠΈΠ²ΠΎΡ˜ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚Ρƒ, Π²ΠΈΠ΄Π΅Ρ›Π΅ΠΌΠΎ ΡˆΡ‚Π° Π½Π°ΠΌ овај ΠΏΠΎΠ·ΠΈΠ² Π²Ρ€Π°Ρ›Π°:

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

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

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

ΠšΠΎΡ€ΠΈΡΡ‚Π΅Ρ›ΠΈ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚Π΅ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€Π°Π²ΠΈΠ»Π°

ΠŸΡ€Π°Π²ΠΈΠ»Π° Ρƒ Π¦Ρ…Π΅Ρ†ΠΊΠΌΠ°Ρ€ΠΊ-Ρƒ сС ΠΌΠΎΠ³Ρƒ Π½Π°Π·Π²Π°Ρ‚ΠΈ Π°Π½Π°Π»ΠΎΠ³Π½ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π°ΠΌΠ° Ρƒ Ρ€Π΅Π΄ΠΎΠ²Π½ΠΎΠΌ програмском Ρ˜Π΅Π·ΠΈΠΊΡƒ. Када ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ користити Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚Π΅ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΡƒΠΏΠΈΡ‚Π°. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π΅ΠΌΠ° ΠΏΠΎΡ‚Ρ€Π΅Π±Π΅ Π΄Π° Ρ‚Ρ€Π°ΠΆΠΈΡ‚Π΅ свС ΠΏΠΎΠ·ΠΈΠ²Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Ρƒ ΠΊΠΎΠ΄Ρƒ сваки ΠΏΡƒΡ‚, само ΠΏΠΎΠ·ΠΎΠ²ΠΈΡ‚Π΅ ΠΆΠ΅Ρ™Π΅Π½ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ:

// ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π°
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 ΠΈΠ»ΠΈ Ρ˜Π΅Π΄Π½ΠΎΡΡ‚Π°Π²Π½ΠΎ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΡˆΠΈΡ‚Π΅ ΠΊΠΎΠ΄ испод. Или ΠΌΠΎΠΆΠ΅Ρ‚Π΅, ΠΊΠ°ΠΎ ја, Π΄Π° Π·Π°Π±ΠΎΡ€Π°Π²ΠΈΡ‚Π΅ Π΄Π° ΡƒΠΊΠ»ΠΎΠ½ΠΈΡ‚Π΅ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ Ρ‚Π°ΠΊΠ²ΠΈΡ… ΠΏΠΎΠ·ΠΈΠ²Π° ΠΈΠ· Π³ΠΎΡ‚ΠΎΠ²ΠΎΠ³ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΈ Π·Π°ΠΏΠΈΡ‚Π°Ρ‚Π΅ сС Π·Π°ΡˆΡ‚ΠΎ Π½ΠΈΡˆΡ‚Π° Π½Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡˆΠ΅.

Погоднији Π½Π°Ρ‡ΠΈΠ½ јС позивањС ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ return са Ρ‚Ρ€Π°ΠΆΠ΅Π½ΠΈΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ. Π£ ΠΎΠ²ΠΎΠΌ ΡΠ»ΡƒΡ‡Π°Ρ˜Ρƒ, ΠΈΠ·Π²Ρ€ΡˆΠ΅ΡšΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° Ρ›Π΅ сС Π·Π°Π²Ρ€ΡˆΠΈΡ‚ΠΈ ΠΈ ΠΌΠΎΡ›ΠΈ Ρ›Π΅ΠΌΠΎ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌΠΎ ΡˆΡ‚Π° сС дСсило ΠΊΠ°ΠΎ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ ΠΎΠ½ΠΎΠ³Π° ΡˆΡ‚ΠΎ смо написали:

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

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

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

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌ са ΠΏΡ€ΠΈΡ˜Π°Π²ΠΎΠΌ

ΠŸΠΎΡΡ‚ΠΎΡ˜Π΅ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡ˜Π΅ ΠΊΠ°Π΄Π° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° приступитС Π°Π»Π°Ρ‚ΠΊΠΈ ЦкАудит (која сС користи Π·Π° писањС ΠΏΡ€Π°Π²ΠΈΠ»Π°). Π—Π° Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π±ΠΈΡ‚ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π»ΠΎΠ³Π°, ΡƒΠΊΡ™ΡƒΡ‡ΡƒΡ˜ΡƒΡ›ΠΈ Ρ€ΡƒΡˆΠ΅ΡšΠ°, ΠΈΠ·Π½Π΅Π½Π°Π΄Π½Π° Π°ΠΆΡƒΡ€ΠΈΡ€Π°ΡšΠ° Виндовс-Π°, Π‘Π‘ΠžΠ” ΠΈ Π΄Ρ€ΡƒΠ³Π΅ Π½Π΅ΠΏΡ€Π΅Π΄Π²ΠΈΡ’Π΅Π½Π΅ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡ˜Π΅ којС су Π²Π°Π½ нашС ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅. Π£ ΠΎΠ²ΠΎΠΌ ΡΠ»ΡƒΡ‡Π°Ρ˜Ρƒ, ΠΏΠΎΠ½Π΅ΠΊΠ°Π΄ ΠΏΠΎΡΡ‚ΠΎΡ˜ΠΈ Π½Π΅Π΄ΠΎΠ²Ρ€ΡˆΠ΅Π½Π° сСсија Ρƒ Π±Π°Π·ΠΈ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ°, ΡˆΡ‚ΠΎ вас спрСчава Π΄Π° сС ΠΏΠΎΠ½ΠΎΠ²ΠΎ ΠΏΡ€ΠΈΡ˜Π°Π²ΠΈΡ‚Π΅. Π”Π° бистС Ρ‚ΠΎ ΠΏΠΎΠΏΡ€Π°Π²ΠΈΠ»ΠΈ, ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎ јС Π΄Π° ΠΏΠΎΠΊΡ€Π΅Π½Π΅Ρ‚Π΅ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ ΡƒΠΏΠΈΡ‚Π°:

Π—Π° ЦхСцкмаркс ΠΏΡ€Π΅ 8.6:

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

Π—Π° ЦхСцкмаркс послС 8.6:

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

ΠŸΡ€Π°Π²ΠΈΠ»Π° писања

Π‘Π°Π΄Π° Π΄ΠΎΠ»Π°Π·ΠΈΠΌΠΎ Π΄ΠΎ Π½Π°Ρ˜ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΠ°Π½Ρ‚Π½ΠΈΡ˜Π΅Π³ Π΄Π΅Π»Π°. Када ΠΏΠΎΡ‡Π½Π΅Ρ‚Π΅ Π΄Π° ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° Ρƒ Π¦ΠΊΠšΠ›-Ρƒ, ΠΎΠ½ΠΎ ΡˆΡ‚ΠΎ Π²Π°ΠΌ чСсто Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ˜Π΅ нијС Ρ‚ΠΎΠ»ΠΈΠΊΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° ΠΊΠΎΠ»ΠΈΠΊΠΎ Π½Π΅ΠΊΠΈ ΠΆΠΈΠ²ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ Ρ€Π΅ΡˆΠ°Π²Π°ΡšΠ° ΠΎΠ΄Ρ€Π΅Ρ’Π΅Π½ΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΈ описивањС процСса ΠΊΠ°ΠΊΠΎ ΡƒΠΏΠΈΡ‚ΠΈ ΡƒΠΎΠΏΡˆΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡˆΡƒ.

ΠŸΠΎΠΊΡƒΡˆΠ°Ρ›Ρƒ Π΄Π° ΠΌΠ°Π»ΠΎ олакшам ΠΆΠΈΠ²ΠΎΡ‚ ΠΎΠ½ΠΈΠΌΠ° који ΠΏΠΎΡ‡ΠΈΡšΡƒ Π΄Π° Π·Π°Ρ€Π°ΡšΠ°Ρ˜Ρƒ Ρƒ јСзик ΡƒΠΏΠΈΡ‚Π° ΠΈ Π΄Π°Ρ›Ρƒ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΊΠΎΡ€ΠΈΡˆΡ›Π΅ΡšΠ° ΠΏΡ€ΠΈΠ»Π°Π³ΠΎΡ’Π΅Π½ΠΈΡ… ΡƒΠΏΠΈΡ‚Π° Π·Π° Ρ€Π΅ΡˆΠ°Π²Π°ΡšΠ΅ ΠΎΠ΄Ρ€Π΅Ρ’Π΅Π½ΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°. НСки ΠΎΠ΄ ΡšΠΈΡ… су ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½ΠΎ ΠΎΠΏΡˆΡ‚ΠΈ ΠΈ ΠΌΠΎΠ³Ρƒ сС користити Ρƒ вашој компанији ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π½ΠΎ Π±Π΅Π· ΠΏΡ€ΠΎΠΌΠ΅Π½Π°, Π΄Ρ€ΡƒΠ³ΠΈ су ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΈΡ˜ΠΈ, Π°Π»ΠΈ сС ΠΌΠΎΠ³Ρƒ користити ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΎΠΌ ΠΊΠΎΠ΄Π° ΠΊΠ°ΠΊΠΎ Π±ΠΈ ΠΎΠ΄Π³ΠΎΠ²Π°Ρ€Π°Π»ΠΈ спСцифичностима Π²Π°ΡˆΠΈΡ… Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°.

Π”Π°ΠΊΠ»Π΅, Π΅Π²ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° са којима смо сС Π½Π°Ρ˜Ρ‡Π΅ΡˆΡ›Π΅ сусрСли:

Π—Π°Π΄Π°Ρ‚Π°ΠΊ: ΠŸΠΎΡΡ‚ΠΎΡ˜ΠΈ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ Ρ‚ΠΎΠΊΠΎΠ²Π° Ρƒ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΠΌΠ° ΠΈΠ·Π²Ρ€ΡˆΠ°Π²Π°ΡšΠ° ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΈ јСдан ΠΎΠ΄ ΡšΠΈΡ… јС ΡƒΠ³Π½Π΅ΠΆΡ’Π΅ΡšΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ³, ΠΌΠΎΡ€Π°Ρ‚Π΅ напустити јСдан ΠΎΠ΄ ΡšΠΈΡ….

reΕ‘enje: Заиста, ΠΏΠΎΠ½Π΅ΠΊΠ°Π΄ Π¦Ρ…Π΅Ρ†ΠΊΠΌΠ°Ρ€ΠΊ ΠΏΡ€ΠΈΠΊΠ°Π·ΡƒΡ˜Π΅ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ Ρ‚ΠΎΠΊΠΎΠ²Π° ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° који сС ΠΌΠΎΠ³Ρƒ ΠΏΡ€Π΅ΠΊΠ»Π°ΠΏΠ°Ρ‚ΠΈ ΠΈ Π±ΠΈΡ‚ΠΈ скраћСна Π²Π΅Ρ€Π·ΠΈΡ˜Π° Π΄Ρ€ΡƒΠ³ΠΈΡ…. Π—Π° Ρ‚Π°ΠΊΠ²Π΅ ΡΠ»ΡƒΡ‡Π°Ρ˜Π΅Π²Π΅ ΠΏΠΎΡΡ‚ΠΎΡ˜ΠΈ посСбан ΠΌΠ΅Ρ‚ΠΎΠ΄ Π Π΅Π΄ΡƒΡ†Π΅Π€Π»ΠΎΠ². Π£ зависности ΠΎΠ΄ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, Π±ΠΈΡ€Π°Ρ›Π΅ Π½Π°Ρ˜ΠΊΡ€Π°Ρ›ΠΈ ΠΈΠ»ΠΈ Π½Π°Ρ˜Π΄ΡƒΠΆΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊ:

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

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

Π—Π°Π΄Π°Ρ‚Π°ΠΊ: ΠŸΡ€ΠΎΡˆΠΈΡ€ΠΈΡ‚Π΅ листу осСтљивих ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° Π½Π° којС Π°Π»Π°Ρ‚ Ρ€Π΅Π°Π³ΡƒΡ˜Π΅

reΕ‘enje: ЦхСцкмаркс ΠΈΠΌΠ° основна ΠΏΡ€Π°Π²ΠΈΠ»Π°, Ρ‡ΠΈΡ˜Π΅ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚Π΅ користС ΠΌΠ½ΠΎΠ³ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ ΡƒΠΏΠΈΡ‚ΠΈ. Π”ΠΎΠΏΡƒΠ½ΠΎΠΌ Π½Π΅ΠΊΠΈΡ… ΠΎΠ΄ ΠΎΠ²ΠΈΡ… ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΏΠΎΠ΄Π°Ρ†ΠΈΠΌΠ° спСцифичним Π·Π° Π²Π°ΡˆΡƒ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Ρƒ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ΄ΠΌΠ°Ρ… ΠΏΠΎΠ±ΠΎΡ™ΡˆΠ°Ρ‚ΠΈ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚Π΅ ΡΠΊΠ΅Π½ΠΈΡ€Π°ΡšΠ°. Испод јС ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π·Π° ΠΏΠΎΡ‡Π΅Ρ‚Π°ΠΊ:

Π“Π΅Π½Π΅Ρ€Π°Π»_ΠΏΡ€ΠΈΠ²Π°Ρ†ΠΈ_Π²ΠΈΠΎΠ»Π°Ρ‚ΠΈΠΎΠ½_лист

Π₯ајдС Π΄Π° Π΄ΠΎΠ΄Π°ΠΌΠΎ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ ΠΏΡ€ΠΎΠΌΠ΅Π½Ρ™ΠΈΠ²ΠΈΡ… којС сС користС Ρƒ нашој Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜ΠΈ Π·Π° ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅ΡšΠ΅ осСтљивих ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ˜Π°:

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

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

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

Π—Π°Π΄Π°Ρ‚Π°ΠΊ: ΠŸΡ€ΠΎΡˆΠΈΡ€ΠΈΡ‚Π΅ листу ΠΏΡ€ΠΎΠΌΠ΅Π½Ρ™ΠΈΠ²ΠΈΡ… са Π»ΠΎΠ·ΠΈΠ½ΠΊΠ°ΠΌΠ°

reΕ‘enje: ΠŸΡ€Π΅ΠΏΠΎΡ€ΡƒΡ‡ΠΈΠΎ Π±ΠΈΡ… Π²Π°ΠΌ Π΄Π° ΠΎΠ΄ΠΌΠ°Ρ… ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ ΠΏΠ°ΠΆΡšΡƒ Π½Π° основно ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π·Π° Π΄Π΅Ρ„ΠΈΠ½ΠΈΡΠ°ΡšΠ΅ Π»ΠΎΠ·ΠΈΠ½ΠΊΠΈ Ρƒ ΠΊΠΎΠ΄Ρƒ ΠΈ Π΄Π° ΠΌΡƒ Π΄ΠΎΠ΄Π°Ρ‚Π΅ листу Π½Π°Π·ΠΈΠ²Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Ρ™ΠΈΠ²ΠΈΡ… који сС ΠΎΠ±ΠΈΡ‡Π½ΠΎ користС Ρƒ вашој компанији.

ΠŸΠ°ΡΡΠ²ΠΎΡ€Π΄_ΠΏΡ€ΠΈΠ²Π°Ρ†ΠΈ_Π²ΠΈΠΎΠ»Π°Ρ‚ΠΈΠΎΠ½_лист

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);
	}
}

Π—Π°Π΄Π°Ρ‚Π°ΠΊ: Π”ΠΎΠ΄Π°Ρ˜Ρ‚Π΅ ΠΊΠΎΡ€ΠΈΡˆΡ›Π΅Π½Π΅ ΠΎΠΊΠ²ΠΈΡ€Π΅ којС Π¦Ρ…Π΅Ρ†ΠΊΠΌΠ°Ρ€ΠΊΠΊ Π½Π΅ ΠΏΠΎΠ΄Ρ€ΠΆΠ°Π²Π°

reΕ‘enje: Π‘Π²ΠΈ ΡƒΠΏΠΈΡ‚ΠΈ Ρƒ Π¦Ρ…Π΅Ρ†ΠΊΠΌΠ°Ρ€ΠΊ-Ρƒ су ΠΏΠΎΠ΄Π΅Ρ™Π΅Π½ΠΈ ΠΏΠΎ Ρ˜Π΅Π·ΠΈΠΊΡƒ, Ρ‚Π°ΠΊΠΎ Π΄Π° ΠΌΠΎΡ€Π°Ρ‚Π΅ Π΄Π° Π΄ΠΎΠ΄Π°Ρ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π·Π° сваки јСзик. Испод су Π½Π΅ΠΊΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ Ρ‚Π°ΠΊΠ²ΠΈΡ… ΠΏΡ€Π°Π²ΠΈΠ»Π°.

Ако сС користС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ којС Π΄ΠΎΠΏΡƒΡšΡƒΡ˜Ρƒ ΠΈΠ»ΠΈ Π·Π°ΠΌΠ΅ΡšΡƒΡ˜Ρƒ стандардну функционалност, ΠΎΠ½Π΅ сС Π»Π°ΠΊΠΎ ΠΌΠΎΠ³Ρƒ Π΄ΠΎΠ΄Π°Ρ‚ΠΈ основном ΠΏΡ€Π°Π²ΠΈΠ»Ρƒ. Π’Π°Π΄Π° Ρ›Π΅ сви који Π³Π° користС ΠΎΠ΄ΠΌΠ°Ρ… сазнати Π·Π° Π½ΠΎΠ²Π΅ ΡƒΠ²ΠΎΠ΄Π΅. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Π·Π° ΠΏΡ€ΠΈΡ˜Π°Π²Ρ™ΠΈΠ²Π°ΡšΠ΅ Ρƒ Андроид су Π’ΠΈΠΌΠ±Π΅Ρ€ ΠΈ Π›ΠΎΠ³Π³ΠΈ. Π£ основном ΠΏΠ°ΠΊΠ΅Ρ‚Ρƒ Π½Π΅ ΠΏΠΎΡΡ‚ΠΎΡ˜Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π·Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ˜Ρƒ нСсистСмских ΠΏΠΎΠ·ΠΈΠ²Π°, Ρ‚Π°ΠΊΠΎ Π΄Π° Π°ΠΊΠΎ Π»ΠΎΠ·ΠΈΠ½ΠΊΠ° ΠΈΠ»ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ сСсијС ΡƒΡ’Ρƒ Ρƒ Π΅Π²ΠΈΠ΄Π΅Π½Ρ†ΠΈΡ˜Ρƒ, Π½Π΅Ρ›Π΅ΠΌΠΎ Π·Π½Π°Ρ‚ΠΈ Π·Π° Ρ‚ΠΎ. ΠŸΠΎΠΊΡƒΡˆΠ°Ρ˜ΠΌΠΎ Π΄Π° Π΄ΠΎΠ΄Π°ΠΌΠΎ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ†ΠΈΡ˜Π΅ Ρ‚Π°ΠΊΠ²ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Ρƒ ЦхСцкмаркс ΠΏΡ€Π°Π²ΠΈΠ»Π°.

ВСстни ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° који користи Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Π’ΠΈΠΌΠ±Π΅Ρ€ Π·Π° Π΅Π²ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ€Π°ΡšΠ΅:

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");
    }
}

А Π΅Π²ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π·Π°Ρ…Ρ‚Π΅Π²Π° Π·Π° Π¦Ρ…Π΅Ρ†ΠΊΠΌΠ°Ρ€ΠΊ, који Ρ›Π΅ Π²Π°ΠΌ ΠΎΠΌΠΎΠ³ΡƒΡ›ΠΈΡ‚ΠΈ Π΄Π° Π΄ΠΎΠ΄Π°Ρ‚Π΅ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ†ΠΈΡ˜Ρƒ позивања Π’ΠΈΠΌΠ±Π΅Ρ€ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΊΠ°ΠΎ ΠΈΠ·Π»Π°Π·Π½Π΅ Ρ‚Π°Ρ‡ΠΊΠ΅ Π·Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΊΠ΅ ΠΈΠ· Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅:

Π€ΠΈΠ½Π΄ΠΠ½Π΄Ρ€ΠΎΠΈΠ΄ΠžΡƒΡ‚ΠΏΡƒΡ‚Ρ

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

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

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

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ΄Π°Ρ‚ΠΈ ΠΈ сусСдно ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π°Π»ΠΈ ΠΎΠ²ΠΎ сС односи Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π½Π° ΠΏΡ€ΠΈΡ˜Π°Π²Ρ™ΠΈΠ²Π°ΡšΠ΅ Π½Π° Андроид:

ЀиндАндроидЛог_ΠžΡƒΡ‚ΠΏΡƒΡ‚Ρ

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

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

Π’Π°ΠΊΠΎΡ’Π΅, Π°ΠΊΠΎ Андроид Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ користС Π’ΠΎΡ€ΠΊΠœΠ°Π½Π°Π³Π΅Ρ€ Π·Π° асинхрони Ρ€Π°Π΄, Π΄ΠΎΠ±Ρ€Π° јС идСја Π΄Π° ΠΎ Ρ‚ΠΎΠΌΠ΅ Π΄ΠΎΠ΄Π°Ρ‚Π½ΠΎ обавСститС Π¦Ρ…Π΅Ρ†ΠΊΠΌΠ°Ρ€ΠΊ додавањСм ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ Π·Π° добијањС ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° ΠΈΠ· Π·Π°Π΄Π°Ρ‚ΠΊΠ° getInputData:

ЀиндАндроидРСад

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

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

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

Π—Π°Π΄Π°Ρ‚Π°ΠΊ: Π’Ρ€Π°ΠΆΠ΅ΡšΠ΅ осСтљивих ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° Ρƒ плист Π·Π° иОБ ΠΏΡ€ΠΎΡ˜Π΅ΠΊΡ‚Π΅

reΕ‘enje: иОБ чСсто користи посСбнС Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ΅ са Π΅ΠΊΡΡ‚Π΅Π½Π·ΠΈΡ˜ΠΎΠΌ .плист Π·Π° ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅ΡšΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΡ‚ΠΈΡ… ΠΏΡ€ΠΎΠΌΠ΅Π½Ρ™ΠΈΠ²ΠΈΡ… ΠΈ врСдности. Π§ΡƒΠ²Π°ΡšΠ΅ Π»ΠΎΠ·ΠΈΠ½ΠΊΠΈ, Ρ‚ΠΎΠΊΠ΅Π½Π°, ΠΊΡ™ΡƒΡ‡Π΅Π²Π° ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… осСтљивих ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° Ρƒ ΠΎΠ²ΠΈΠΌ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°ΠΌΠ° сС Π½Π΅ ΠΏΡ€Π΅ΠΏΠΎΡ€ΡƒΡ‡ΡƒΡ˜Π΅, Ρ˜Π΅Ρ€ сС ΠΌΠΎΠ³Ρƒ Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΈΠ·Π²ΡƒΡ›ΠΈ са ΡƒΡ€Π΅Ρ’Π°Ρ˜Π°.

ΠŸΠ»ΠΈΡΡ‚ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ΅ ΠΈΠΌΠ°Ρ˜Ρƒ карактСристикС којС нису ΠΎΡ‡ΠΈΠ³Π»Π΅Π΄Π½Π΅ Π³ΠΎΠ»ΠΈΠΌ ΠΎΠΊΠΎΠΌ, Π°Π»ΠΈ су Π²Π°ΠΆΠ½Π΅ Π·Π° Π¦Ρ…Π΅Ρ†ΠΊΠΌΠ°Ρ€ΠΊ. Π₯ајдС Π΄Π° напишСмо ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ којС Ρ›Π΅ Ρ‚Ρ€Π°ΠΆΠΈΡ‚ΠΈ ΠΏΠΎΠ΄Π°Ρ‚ΠΊΠ΅ који су Π½Π°ΠΌ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈ ΠΈ Ρ€Π΅Ρ›ΠΈ Π½Π°ΠΌ Π΄Π° Π»ΠΈ сС Π½Π΅Π³Π΄Π΅ ΠΏΠΎΠΌΠΈΡšΡƒ Π»ΠΎΠ·ΠΈΠ½ΠΊΠ΅ ΠΈΠ»ΠΈ Ρ‚ΠΎΠΊΠ΅Π½ΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚Π°ΠΊΠ²Π΅ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ΅, која садрТи Ρ‚ΠΎΠΊΠ΅Π½ Π·Π° ΠΊΠΎΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΡ˜Ρƒ са позадинском услугом:

<?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>

И ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π·Π° Π¦Ρ…Π΅Ρ†ΠΊΠΌΠ°Ρ€ΠΊ, којС ΠΈΠΌΠ° Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ нијанси којС Ρ‚Ρ€Π΅Π±Π° ΡƒΠ·Π΅Ρ‚ΠΈ Ρƒ ΠΎΠ±Π·ΠΈΡ€ ΠΏΡ€ΠΈΠ»ΠΈΠΊΠΎΠΌ писања:

// Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΏΠΎ поиску Ρ„Π°ΠΉΠ»ΠΎΠ² 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);

Π—Π°Π΄Π°Ρ‚Π°ΠΊ: ΠŸΡ€ΠΎΠ½Π°Π»Π°ΠΆΠ΅ΡšΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ˜Π° Ρƒ ΠšΠ‘ΠœΠ›-Ρƒ

reΕ‘enje: Π¦Ρ…Π΅Ρ†ΠΊΠΌΠ°Ρ€ΠΊ ΠΈΠΌΠ° Π²Π΅ΠΎΠΌΠ° Π·Π³ΠΎΠ΄Π½Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π΅ Π·Π° Ρ€Π°Π΄ са ΠšΠ‘ΠœΠ›-ΠΎΠΌ ΠΈ Ρ‚Ρ€Π°ΠΆΠ΅ΡšΠ΅ врСдности, ΠΎΠ·Π½Π°ΠΊΠ°, Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΈ још ΠΌΠ½ΠΎΠ³ΠΎ Ρ‚ΠΎΠ³Π°. Али, наТалост, дошло јС Π΄ΠΎ Π³Ρ€Π΅ΡˆΠΊΠ΅ Ρƒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜ΠΈ Π·Π±ΠΎΠ³ којС Π½ΠΈ јСдан ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡˆΠ΅. Упркос Ρ‡ΠΈΡšΠ΅Π½ΠΈΡ†ΠΈ Π΄Π° јС овај нСдостатак Слиминисан Ρƒ најновијој Π²Π΅Ρ€Π·ΠΈΡ˜ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π΅, Π±ΡƒΠ΄ΠΈΡ‚Π΅ ΠΎΠΏΡ€Π΅Π·Π½ΠΈ Π°ΠΊΠΎ користитС Ρ€Π°Π½ΠΈΡ˜Π΅ Π²Π΅Ρ€Π·ΠΈΡ˜Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Π°Ρ‚Π°.

Π•Π²ΠΎ Π½Π΅Ρ‚Π°Ρ‡Π½ΠΎΠ³ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΈΠ· Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π΅:

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

Као Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ ΠΏΠΎΠΊΡƒΡˆΠ°Ρ˜Π° ΠΈΠ·Π²Ρ€ΡˆΠ΅ΡšΠ°, Π΄ΠΎΠ±ΠΈΡ›Π΅ΠΌΠΎ Π³Ρ€Π΅ΡˆΠΊΡƒ која All Π½Π΅ ΠΏΠΎΡΡ‚ΠΎΡ˜ΠΈ Ρ‚Π°ΠΊΠ°Π² ΠΌΠ΅Ρ‚ΠΎΠ΄... И Ρ‚ΠΎ јС Ρ‚Π°Ρ‡Π½ΠΎ, ΠΏΠΎΡˆΡ‚ΠΎ ΠΏΠΎΡΡ‚ΠΎΡ˜ΠΈ посСбан, одвојСн простор Π·Π° ΠΎΠ±Ρ˜Π΅ΠΊΡ‚Π΅ Π·Π° ΠΊΠΎΡ€ΠΈΡˆΡ›Π΅ΡšΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π° Π·Π° Ρ€Π°Π΄ са ΠšΠ‘ΠœΠ›-ΠΎΠΌ - cxXPath. Овако ΠΈΠ·Π³Π»Π΅Π΄Π° исправан ΡƒΠΏΠΈΡ‚ Π·Π° ΠΏΡ€ΠΎΠ½Π°Π»Π°ΠΆΠ΅ΡšΠ΅ подСшавања Ρƒ Андроид-Ρƒ којС Π΄ΠΎΠ·Π²ΠΎΡ™Π°Π²Π° ΠΊΠΎΡ€ΠΈΡˆΡ›Π΅ΡšΠ΅ Π₯ВВП ΡΠ°ΠΎΠ±Ρ€Π°Ρ›Π°Ρ˜Π°:

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

Π₯ајдС Π΄Π° Ρ‚ΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π°ΠΌΠΎ ΠΌΠ°Π»ΠΎ Π΄Π΅Ρ‚Π°Ρ™Π½ΠΈΡ˜Π΅, ΠΏΠΎΡˆΡ‚ΠΎ јС синтакса Π·Π° свС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π΅ слична, Π½Π°ΠΊΠΎΠ½ ΡˆΡ‚ΠΎ стС схватили Ρ˜Π΅Π΄Π½Ρƒ, ΠΎΠ½Π΄Π° само Ρ‚Ρ€Π΅Π±Π° Π΄Π° ΠΈΠ·Π°Π±Π΅Ρ€Π΅Ρ‚Π΅ ΠΎΠ½Ρƒ која Π²Π°ΠΌ јС ΠΏΠΎΡ‚Ρ€Π΅Π±Π½Π°. Π”Π°ΠΊΠ»Π΅, узастопно ΠΏΡ€Π΅ΠΌΠ° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠΌΠ°:

  • "*.xml"β€” маска Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° којС Ρ‚Ρ€Π΅Π±Π° ΠΏΡ€Π΅Ρ‚Ρ€Π°ΠΆΠΈΠ²Π°Ρ‚ΠΈ

  • 8 β€” ΠΈΠ΄ јСзика Π·Π° који сС ΠΏΡ€ΠΈΠΌΠ΅ΡšΡƒΡ˜Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ

  • "cleartextTrafficPermitted"β€” ΠΈΠΌΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° Ρƒ ΠΊΠΌΠ»

  • "true" β€” врСдност ΠΎΠ²ΠΎΠ³ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°

  • false β€” ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π° Ρ€Π΅Π³ΡƒΠ»Π°Ρ€Π½ΠΎΠ³ ΠΈΠ·Ρ€Π°Π·Π° ΠΏΡ€ΠΈ ΠΏΡ€Π΅Ρ‚Ρ€Π°ΠΆΠΈΠ²Π°ΡšΡƒ

  • true β€” Π·Π½Π°Ρ‡ΠΈ Π΄Π° Ρ›Π΅ ΠΏΡ€Π΅Ρ‚Ρ€Π°Π³Π° Π±ΠΈΡ‚ΠΈ ΠΎΠ±Π°Π²Ρ™Π΅Π½Π° Π·Π°Π½Π΅ΠΌΠ°Ρ€ΡƒΡ˜ΡƒΡ›ΠΈ Π²Π΅Π»ΠΈΠΊΠ° ΠΈ ΠΌΠ°Π»Π° слова, Ρ‚ΠΎ Ρ˜Π΅ΡΡ‚, Π±Π΅Π· ΠΎΠ±Π·ΠΈΡ€Π° Π½Π° Π²Π΅Π»ΠΈΠΊΠ° ΠΈ ΠΌΠ°Π»Π° слова

Као ΠΏΡ€ΠΈΠΌΠ΅Ρ€, користили смо ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ којС ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΡƒΡ˜Π΅ Π½Π΅Ρ‚Π°Ρ‡Π½Π°, са бСзбСдноснС Ρ‚Π°Ρ‡ΠΊΠ΅ Π³Π»Π΅Π΄ΠΈΡˆΡ‚Π°, подСшавања ΠΌΡ€Π΅ΠΆΠ½Π΅ Π²Π΅Π·Π΅ Ρƒ Андроид-Ρƒ која ΠΎΠΌΠΎΠ³ΡƒΡ›Π°Π²Π°Ρ˜Ρƒ ΠΊΠΎΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΡ˜Ρƒ са сСрвСром ΠΏΡ€Π΅ΠΊΠΎ Π₯ВВП ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ поставкС која садрТи Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ 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>

Π—Π°Π΄Π°Ρ‚Π°ΠΊ: ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚Π΅ ΠΏΡ€Π΅ΠΌΠ° ΠΈΠΌΠ΅Π½Ρƒ/ΠΏΡƒΡ‚Π°ΡšΡƒ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ΅

reΕ‘enje: Π£ јСдном ΠΎΠ΄ Π²Π΅Π»ΠΈΠΊΠΈΡ… ΠΏΡ€ΠΎΡ˜Π΅ΠΊΠ°Ρ‚Π° Π²Π΅Π·Π°Π½ΠΈΡ… Π·Π° Ρ€Π°Π·Π²ΠΎΡ˜ ΠΌΠΎΠ±ΠΈΠ»Π½Π΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ Π·Π° Андроид, наишли смо Π½Π° Π»Π°ΠΆΠ½Π΅ ΠΏΠΎΠ·ΠΈΡ‚ΠΈΠ²Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° којС ΠΎΠ΄Ρ€Π΅Ρ’ΡƒΡ˜Π΅ поставку Π·Π°ΠΌΠ°Π³Ρ™ΠΈΠ²Π°ΡšΠ°. Π§ΠΈΡšΠ΅Π½ΠΈΡ†Π° јС Π΄Π° ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π²Π°Π½ ΠΎΠΊΠ²ΠΈΡ€Π° Ρ‚Ρ€Π°ΠΆΠΈ Ρƒ Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ†ΠΈ 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'
  ...
}

И ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π·Π° Π¦Ρ…Π΅Ρ†ΠΊΠΌΠ°Ρ€ΠΊ:

ΠŸΡ€ΠΎΠ“ΡƒΠ°Ρ€Π΄ΠžΠ±Ρ„ΡƒΡΡ†Π°Ρ‚ΠΈΠΎΠ½ΠΠΎΡ‚Π˜Π½Π£ΡΠ΅

// Поиск ΠΌΠ΅Ρ‚ΠΎΠ΄Π° 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);
		}
	}
}

Овај приступ ΠΌΠΎΠΆΠ΅ Π±ΠΈΡ‚ΠΈ ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½ΠΎ ΡƒΠ½ΠΈΠ²Π΅Ρ€Π·Π°Π»Π°Π½ ΠΈ користан Π½Π΅ само Π·Π° Андроид Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅, Π²Π΅Ρ› ΠΈ Π·Π° Π΄Ρ€ΡƒΠ³Π΅ ΡΠ»ΡƒΡ‡Π°Ρ˜Π΅Π²Π΅ ΠΊΠ°Π΄Π° Ρ‚Ρ€Π΅Π±Π° Π΄Π° ΡƒΡ‚Π²Ρ€Π΄ΠΈΡ‚Π΅ Π΄Π° Π»ΠΈ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ ΠΏΡ€ΠΈΠΏΠ°Π΄Π° ΠΎΠ΄Ρ€Π΅Ρ’Π΅Π½ΠΎΡ˜ Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ†ΠΈ.

Π—Π°Π΄Π°Ρ‚Π°ΠΊ: Π”ΠΎΠ΄Π°Ρ˜Ρ‚Π΅ ΠΏΠΎΠ΄Ρ€ΡˆΠΊΡƒ Π·Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Ρ‚Ρ€Π΅Ρ›Π΅ странС Π°ΠΊΠΎ синтакса нијС Ρƒ потпуности ΠΏΠΎΠ΄Ρ€ΠΆΠ°Π½Π°

reΕ‘enje: Π‘Ρ€ΠΎΡ˜ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΡ‚ΠΈΡ… ΠΎΠΊΠ²ΠΈΡ€Π° који сС користС Ρƒ процСсу писања ΠΊΠΎΠ΄Π° јС Ρ˜Π΅Π΄Π½ΠΎΡΡ‚Π°Π²Π½ΠΎ Π²Π°Π½ Π³Ρ€Π°Π½ΠΈΡ†Π°. Наравно, ЦхСцкмаркс Π½Π΅ Π·Π½Π° ΡƒΠ²Π΅ΠΊ Π·Π° ΡšΠΈΡ…ΠΎΠ²ΠΎ ΠΏΠΎΡΡ‚ΠΎΡ˜Π°ΡšΠ΅, Π° наш Π·Π°Π΄Π°Ρ‚Π°ΠΊ јС Π΄Π° Π³Π° Π½Π°ΡƒΡ‡ΠΈΠΌΠΎ Π΄Π° схвати Π΄Π° ΠΎΠ΄Ρ€Π΅Ρ’Π΅Π½Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ ΠΏΡ€ΠΈΠΏΠ°Π΄Π°Ρ˜Ρƒ ΡƒΠΏΡ€Π°Π²ΠΎ ΠΎΠ²ΠΎΠΌ ΠΎΠΊΠ²ΠΈΡ€Ρƒ. ПонСкад јС ΠΎΠ²ΠΎ ΠΊΠΎΠΌΠΏΠ»ΠΈΠΊΠΎΠ²Π°Π½ΠΎ Ρ‡ΠΈΡšΠ΅Π½ΠΈΡ†ΠΎΠΌ Π΄Π° ΠΎΠΊΠ²ΠΈΡ€ΠΈ користС ΠΈΠΌΠ΅Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π° која су Π²Ρ€Π»ΠΎ чСста ΠΈ Π½Π΅ΠΌΠΎΠ³ΡƒΡ›Π΅ јС нСдвосмислСно ΠΎΠ΄Ρ€Π΅Π΄ΠΈΡ‚ΠΈ однос ΠΎΠ΄Ρ€Π΅Ρ’Π΅Π½ΠΎΠ³ ΠΏΠΎΠ·ΠΈΠ²Π° ΠΏΡ€Π΅ΠΌΠ° ΠΎΠ΄Ρ€Π΅Ρ’Π΅Π½ΠΎΡ˜ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ†ΠΈ.

ΠŸΠΎΡ‚Π΅ΡˆΠΊΠΎΡ›Π° јС Ρƒ Ρ‚ΠΎΠΌΠ΅ ΡˆΡ‚ΠΎ синтакса Ρ‚Π°ΠΊΠ²ΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° нијС ΡƒΠ²Π΅ΠΊ исправно ΠΏΡ€Π΅ΠΏΠΎΠ·Π½Π°Ρ‚Π° ΠΈ ΠΌΠΎΡ€Π°Ρ‚Π΅ СкспСримСнтисати Π΄Π° бистС ΠΈΠ·Π±Π΅Π³Π»ΠΈ Π²Π΅Π»ΠΈΠΊΠΈ Π±Ρ€ΠΎΡ˜ Π»Π°ΠΆΠ½ΠΈΡ… ΠΏΠΎΠ·ΠΈΡ‚ΠΈΠ²Π½ΠΈΡ… Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚Π°. ΠŸΠΎΡΡ‚ΠΎΡ˜ΠΈ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ ΠΎΠΏΡ†ΠΈΡ˜Π° Π·Π° ΠΏΠΎΠ±ΠΎΡ™ΡˆΠ°ΡšΠ΅ тачности ΡΠΊΠ΅Π½ΠΈΡ€Π°ΡšΠ° ΠΈ Ρ€Π΅ΡˆΠ°Π²Π°ΡšΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°:

  • ΠŸΡ€Π²Π° ΠΎΠΏΡ†ΠΈΡ˜Π°, ΠΏΠΎΡƒΠ·Π΄Π°Π½ΠΎ Π·Π½Π°ΠΌΠΎ Π΄Π° сС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° користи Ρƒ ΠΎΠ΄Ρ€Π΅Ρ’Π΅Π½ΠΎΠΌ ΠΏΡ€ΠΎΡ˜Π΅ΠΊΡ‚Ρƒ ΠΈ ΠΌΠΎΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π½Π° Π½ΠΈΠ²ΠΎΡƒ Ρ‚ΠΈΠΌΠ°. Али Π°ΠΊΠΎ Ρ‚ΠΈΠΌ ΠΎΠ΄Π»ΡƒΡ‡ΠΈ Π΄Π° Π·Π°ΡƒΠ·ΠΌΠ΅ Π΄Ρ€ΡƒΠ³Π°Ρ‡ΠΈΡ˜ΠΈ приступ ΠΈΠ»ΠΈ користи Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Ρƒ којима сС ΠΈΠΌΠ΅Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π° ΠΏΡ€Π΅ΠΊΠ»Π°ΠΏΠ°Ρ˜Ρƒ, ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π΄ΠΎΠ±ΠΈΡ‚ΠΈ Π½Π΅ баш ΠΏΡ€ΠΈΡ˜Π°Ρ‚Π½Ρƒ слику Π±Ρ€ΠΎΡ˜Π½ΠΈΡ… Π»Π°ΠΆΠ½ΠΈΡ… ΠΏΠΎΠ·ΠΈΡ‚ΠΈΠ²Π½ΠΈΡ… Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚Π°

  • Π”Ρ€ΡƒΠ³Π° ΠΎΠΏΡ†ΠΈΡ˜Π° јС Ρ‚Ρ€Π°ΠΆΠ΅ΡšΠ΅ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° Ρƒ којима јС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° јасно ΡƒΠ²Π΅Π·Π΅Π½Π°. Овим приступом ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π±ΠΈΡ‚ΠΈ сигурни Π΄Π° сС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° која Π½Π°ΠΌ јС ΠΏΠΎΡ‚Ρ€Π΅Π±Π½Π° Ρ‚Π°Ρ‡Π½ΠΎ користи Ρƒ овој Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ†ΠΈ.

  • И Ρ‚Ρ€Π΅Ρ›Π° ΠΎΠΏΡ†ΠΈΡ˜Π° јС Π΄Π° сС Π΄Π²Π° Π³ΠΎΡ€ΡšΠ° приступа користС зајСдно.

Као ΠΏΡ€ΠΈΠΌΠ΅Ρ€, поглСдајмо Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Π΄ΠΎΠ±Ρ€ΠΎ ΠΏΠΎΠ·Π½Π°Ρ‚Ρƒ Ρƒ уским ΠΊΡ€ΡƒΠ³ΠΎΠ²ΠΈΠΌΠ° Π³Π»Π°Π΄Π°ΠΊ Π·Π° програмски јСзик Π‘Ρ†Π°Π»Π°, Π½Π°ΠΈΠΌΠ΅, функционалност БпајањС Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π½ΠΈΡ… врСдности. Π“Π΅Π½Π΅Ρ€Π°Π»Π½ΠΎ, Π΄Π° бистС прослСдили ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ Π‘ΠšΠ› ΡƒΠΏΠΈΡ‚Ρƒ, ΠΌΠΎΡ€Π°Ρ‚Π΅ користити ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ $, који Π·Π°ΠΌΠ΅ΡšΡƒΡ˜Π΅ ΠΏΠΎΠ΄Π°Ρ‚ΠΊΠ΅ Ρƒ ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΎ Ρ„ΠΎΡ€ΠΌΠΈΡ€Π°Π½ΠΈ Π‘ΠšΠ› ΡƒΠΏΠΈΡ‚. Π’ΠΎ јС, Ρƒ ствари, Π΄ΠΈΡ€Π΅ΠΊΡ‚Π°Π½ Π°Π½Π°Π»ΠΎΠ³ ΠŸΡ€Π΅ΠΏΠ°Ρ€Π΅Π΄ Π‘Ρ‚Π°Ρ‚Π΅ΠΌΠ΅Π½Ρ‚-Π° Ρƒ Јави. Али, Π°ΠΊΠΎ Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡ΠΊΠΈ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΈΡˆΠ΅Ρ‚Π΅ Π‘ΠšΠ› ΡƒΠΏΠΈΡ‚, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π°ΠΊΠΎ Ρ‚Ρ€Π΅Π±Π° Π΄Π° прослСдитС ΠΈΠΌΠ΅Π½Π° Ρ‚Π°Π±Π΅Π»Π°, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ користити ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ #$, који Ρ›Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΠΈ ΠΏΠΎΠ΄Π°Ρ‚ΠΊΠ΅ Ρƒ ΡƒΠΏΠΈΡ‚Ρƒ (скоро ΠΊΠ°ΠΎ ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΡ˜Π° стрингова).

Primer koda:

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

Π¦Ρ…Π΅Ρ†ΠΊΠΌΠ°Ρ€ΠΊ још ΡƒΠ²Π΅ΠΊ Π½Π΅ Π·Π½Π° ΠΊΠ°ΠΊΠΎ Π΄Π° ΠΎΡ‚ΠΊΡ€ΠΈΡ˜Π΅ ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Ρƒ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π½ΠΈΡ… врСдности спајања ΠΈ прСскачС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ #$, ΠΏΠ° ΠΏΠΎΠΊΡƒΡˆΠ°Ρ˜ΠΌΠΎ Π΄Π° Π³Π° Π½Π°ΡƒΡ‡ΠΈΠΌΠΎ Π΄Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΡƒΡ˜Π΅ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΡ˜Π°Π»Π½Π΅ Π‘ΠšΠ› ΠΈΡšΠ΅ΠΊΡ†ΠΈΡ˜Π΅ ΠΈ истакнС ΠΏΡ€Π°Π²Π° мСста Ρƒ ΠΊΠΎΠ΄Ρƒ:

// Находим всС ΠΈΠΌΠΏΠΎΡ€Ρ‚Ρ‹
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));
}

Π—Π°Π΄Π°Ρ‚Π°ΠΊ: ΠŸΠΎΡ‚Ρ€Π°ΠΆΠΈΡ‚Π΅ ΠΊΠΎΡ€ΠΈΡˆΡ›Π΅Π½Π΅ Ρ€Π°ΡšΠΈΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π΅ Ρƒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠ° ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ΠΎΠ³ ΠΊΠΎΠ΄Π°

reΕ‘enje: МногС компанијС користС Π°Π»Π°Ρ‚Π΅ Π·Π° ΠΏΡ€Π°Ρ›Π΅ΡšΠ΅ ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ΠΎΠ³ ΠΊΠΎΠ΄Π° (ОБА пракса) Π΄Π° ΠΎΡ‚ΠΊΡ€ΠΈΡ˜Ρƒ ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Ρƒ Ρ€Π°ΡšΠΈΠ²ΠΈΡ… Π²Π΅Ρ€Π·ΠΈΡ˜Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Ρƒ Ρ€Π°Π·Π²ΠΈΡ˜Π΅Π½ΠΈΠΌ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°ΠΌΠ°. ПонСкад нијС ΠΌΠΎΠ³ΡƒΡ›Π΅ Π°ΠΆΡƒΡ€ΠΈΡ€Π°Ρ‚ΠΈ Ρ‚Π°ΠΊΠ²Ρƒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Π½Π° Π±Π΅Π·Π±Π΅Π΄Π½Ρƒ Π²Π΅Ρ€Π·ΠΈΡ˜Ρƒ. Π£ Π½Π΅ΠΊΠΈΠΌ ΡΠ»ΡƒΡ‡Π°Ρ˜Π΅Π²ΠΈΠΌΠ° ΠΏΠΎΡΡ‚ΠΎΡ˜Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π½Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅ΡšΠ°, Ρƒ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠ° ΡƒΠΎΠΏΡˆΡ‚Π΅ Π½Π΅ ΠΏΠΎΡΡ‚ΠΎΡ˜ΠΈ сигурна Π²Π΅Ρ€Π·ΠΈΡ˜Π°. Π£ ΠΎΠ²ΠΎΠΌ ΡΠ»ΡƒΡ‡Π°Ρ˜Ρƒ, ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡ˜Π° БАБВ ΠΈ ОБА пракси Ρ›Π΅ ΠΏΠΎΠΌΠΎΡ›ΠΈ Π΄Π° сС ΡƒΡ‚Π²Ρ€Π΄ΠΈ Π΄Π° сС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π΅ којС Π΄ΠΎΠ²ΠΎΠ΄Π΅ Π΄ΠΎ ΠΈΡΠΊΠΎΡ€ΠΈΡˆΡ›Π°Π²Π°ΡšΠ° Ρ€Π°ΡšΠΈΠ²ΠΎΡΡ‚ΠΈ Π½Π΅ користС Ρƒ ΠΊΠΎΠ΄Ρƒ.

Али ΠΏΠΎΠ½Π΅ΠΊΠ°Π΄, посСбно ΠΊΠ°Π΄Π° сС Ρ€Π°Π·ΠΌΠ°Ρ‚Ρ€Π° ΠˆΠ°Π²Π°Π‘Ρ†Ρ€ΠΈΠΏΡ‚, ΠΎΠ²ΠΎ ΠΌΠΎΠΆΠ΄Π° нијС сасвим Ρ‚Ρ€ΠΈΠ²ΠΈΡ˜Π°Π»Π°Π½ Π·Π°Π΄Π°Ρ‚Π°ΠΊ. Испод јС Ρ€Π΅ΡˆΠ΅ΡšΠ΅, ΠΌΠΎΠΆΠ΄Π° Π½Π΅ ΠΈΠ΄Π΅Π°Π»Π½ΠΎ, Π°Π»ΠΈ ΠΈΠΏΠ°ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π½ΠΎ, користСћи ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°ΡšΠΈΠ²ΠΎΡΡ‚ΠΈ Ρƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ lodash Ρƒ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠ° template ΠΈ *set.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΈ Ρ‚Π΅ΡΡ‚ΠΈΡ€Π°ΡšΠ° ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΡ˜Π°Π»Π½ΠΎ Ρ€Π°ΡšΠΈΠ²ΠΎΠ³ ΠΊΠΎΠ΄Π° Ρƒ ЈБ Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ†ΠΈ:

/**
 * 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!'

И ΠΊΠ°Π΄Π° сС ΠΏΠΎΠ²Π΅Π·ΡƒΡ˜Π΅Ρ‚Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Ρƒ Ρ…Ρ‚ΠΌΠ»-Ρƒ:

<!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));

Π—Π°Π΄Π°Ρ‚Π°ΠΊ: Π’Ρ€Π°ΠΆΠ΅ΡšΠ΅ сСртификата ΡƒΠ³Ρ€Π°Ρ’Π΅Π½ΠΈΡ… Ρƒ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Ρƒ

reΕ‘enje: НијС Π½Π΅ΡƒΠΎΠ±ΠΈΡ‡Π°Ρ˜Π΅Π½ΠΎ Π΄Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅, посСбно ΠΌΠΎΠ±ΠΈΠ»Π½Π΅, користС сСртификатС ΠΈΠ»ΠΈ ΠΊΡ™ΡƒΡ‡Π΅Π²Π΅ Π·Π° приступ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΡ‚ΠΈΠΌ сСрвСрима ΠΈΠ»ΠΈ Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ˜Ρƒ Π‘Π‘Π›-ΠΏΠΈΠ½ΠΈΠ½Π³Π°. Из бСзбСдноснС пСрспСктивС, Ρ‡ΡƒΠ²Π°ΡšΠ΅ Ρ‚Π°ΠΊΠ²ΠΈΡ… ствари Ρƒ ΠΊΠΎΠ΄Ρƒ нијС Π½Π°Ρ˜Π±ΠΎΡ™Π° пракса. Π₯ајдС Π΄Π° ΠΏΠΎΠΊΡƒΡˆΠ°ΠΌΠΎ Π΄Π° напишСмо ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ којС Ρ›Π΅ Ρ‚Ρ€Π°ΠΆΠΈΡ‚ΠΈ сличнС Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ΅ Ρƒ ΡΠΏΡ€Π΅ΠΌΠΈΡˆΡ‚Ρƒ:

// НайдСм всС сСртификаты ΠΏΠΎ маскС Ρ„Π°ΠΉΠ»Π°
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;

Π—Π°Π΄Π°Ρ‚Π°ΠΊ: ΠŸΡ€ΠΎΠ½Π°Π»Π°ΠΆΠ΅ΡšΠ΅ ΠΊΠΎΠΌΠΏΡ€ΠΎΠΌΠΈΡ‚ΠΎΠ²Π°Π½ΠΈΡ… Ρ‚ΠΎΠΊΠ΅Π½Π° Ρƒ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜ΠΈ

reΕ‘enje: ЧСсто јС ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎ ΠΎΠΏΠΎΠ·Π²Π°Ρ‚ΠΈ ΠΊΠΎΠΌΠΏΡ€ΠΎΠΌΠΈΡ‚ΠΎΠ²Π°Π½Π΅ Ρ‚ΠΎΠΊΠ΅Π½Π΅ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³Π΅ Π²Π°ΠΆΠ½Π΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ˜Π΅ којС су присутнС Ρƒ ΠΊΠΎΠ΄Ρƒ. Наравно, ΡšΠΈΡ…ΠΎΠ²ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅ΡšΠ΅ Ρƒ ΠΈΠ·Π²ΠΎΡ€Π½ΠΎΠΌ ΠΊΠΎΠ΄Ρƒ нијС Π΄ΠΎΠ±Ρ€Π° идСја, Π°Π»ΠΈ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡ˜Π΅ сС Ρ€Π°Π·Π»ΠΈΠΊΡƒΡ˜Ρƒ. Π—Π°Ρ…Π²Π°Ρ™ΡƒΡ˜ΡƒΡ›ΠΈ Π¦ΠΊΠšΠ› ΡƒΠΏΠΈΡ‚ΠΈΠΌΠ°, ΠΏΡ€ΠΎΠ½Π°Π»Π°ΠΆΠ΅ΡšΠ΅ ΠΎΠ²Π°ΠΊΠ²ΠΈΡ… ствари јС ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½ΠΎ Π»Π°ΠΊΠΎ:

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

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

Π—Π°ΠΊΡ™ΡƒΡ‡Π°ΠΊ

Надам сС Π΄Π° Ρ›Π΅ овај Ρ‡Π»Π°Π½Π°ΠΊ Π±ΠΈΡ‚ΠΈ користан ΠΎΠ½ΠΈΠΌΠ° који ΠΏΠΎΡ‡ΠΈΡšΡƒ својС ΡƒΠΏΠΎΠ·Π½Π°Π²Π°ΡšΠ΅ са Π°Π»Π°Ρ‚ΠΎΠΌ Π¦Ρ…Π΅Ρ†ΠΊΠΌΠ°Ρ€ΠΊ. МоТда Ρ›Π΅ ΠΈ ΠΎΠ½ΠΈ који Π²Π΅Ρ› Π΄ΡƒΠ³ΠΎ ΠΏΠΈΡˆΡƒ своја ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΏΡ€ΠΎΠ½Π°Ρ›ΠΈ Π½Π΅ΡˆΡ‚ΠΎ корисно Ρƒ ΠΎΠ²ΠΎΠΌ Π²ΠΎΠ΄ΠΈΡ‡Ρƒ.

НаТалост, Ρ‚Ρ€Π΅Π½ΡƒΡ‚Π½ΠΎ ΠΏΠΎΡΡ‚ΠΎΡ˜ΠΈ нСдостатак рСсурса Π³Π΄Π΅ Π±ΠΈ сС ΠΌΠΎΠ³Π»Π΅ ΠΏΡ€ΠΈΠΊΡƒΠΏΠΈΡ‚ΠΈ Π½ΠΎΠ²Π΅ идСјС Ρ‚ΠΎΠΊΠΎΠΌ Ρ€Π°Π·Π²ΠΎΡ˜Π° ΠΏΡ€Π°Π²ΠΈΠ»Π° Π·Π° Π¦Ρ…Π΅Ρ†ΠΊΠΌΠ°Ρ€ΠΊ. Π—Π°Ρ‚ΠΎ смо ΠΈ створили ΡΠΏΡ€Π΅ΠΌΠΈΡˆΡ‚Π΅ Π½Π° Π“ΠΈΡ‚Ρ…ΡƒΠ±-Ρƒ, Π³Π΄Π΅ Ρ›Π΅ΠΌΠΎ ΠΎΠ±Ρ˜Π°Π²ΠΈΡ‚ΠΈ нашС Ρ€Π°Π΄ΠΎΠ²Π΅ ΠΊΠ°ΠΊΠΎ Π±ΠΈ сви који користС Π¦ΠΊΠšΠ› ΠΌΠΎΠ³Π»ΠΈ Π΄Π° ΠΏΡ€ΠΎΠ½Π°Ρ’Ρƒ Π½Π΅ΡˆΡ‚ΠΎ корисно Ρƒ ΡšΠ΅ΠΌΡƒ, Π° Ρ‚Π°ΠΊΠΎΡ’Π΅ ΠΈΠΌΠ°Ρ˜Ρƒ ΠΏΡ€ΠΈΠ»ΠΈΠΊΡƒ Π΄Π° ΠΏΠΎΠ΄Π΅Π»Π΅ свој Ρ€Π°Π΄ са Π·Π°Ρ˜Π΅Π΄Π½ΠΈΡ†ΠΎΠΌ. Π Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΡ˜ΡƒΠΌ јС Ρƒ процСсу ΠΏΠΎΠΏΡƒΡšΠ°Π²Π°ΡšΠ° ΠΈ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€Π°ΡšΠ° ΡΠ°Π΄Ρ€ΠΆΠ°Ρ˜Π°, Ρ‚Π°ΠΊΠΎ Π΄Π° су сарадници Π΄ΠΎΠ±Ρ€ΠΎΠ΄ΠΎΡˆΠ»ΠΈ!

Бпасибо за вниманиС!

Π˜Π·Π²ΠΎΡ€: Π²Π²Π².Ρ…Π°Π±Ρ€.Ρ†ΠΎΠΌ

Π”ΠΎΠ΄Π°Ρ˜ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€