เจฌเจฟเจจเจพเจ‚ เจชเจพเจ—เจฒ เจนเฉ‹เจ เจšเฉˆเฉฑเจ•เจฎเจพเจฐเจ•เจธ เจฒเจˆ เจจเจฟเจฏเจฎ เจ•เจฟเจตเฉ‡เจ‚ เจฒเจฟเจ–เจฃเฉ‡ เจนเจจ

เจนเฉ‡ เจนเจฌเจฐ!

เจธเจพเจกเฉ‡ เจ•เฉฐเจฎ เจตเจฟเฉฑเจš, เจธเจพเจกเฉ€ เจ•เฉฐเจชเจจเฉ€ เจ…เจ•เจธเจฐ เจตเฉฑเจ–-เจตเฉฑเจ– เจธเจฅเจฟเจฐ เจ•เฉ‹เจก เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจŸเฉ‚เจฒเจธ (SAST) เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจฆเฉ€ เจนเฉˆเฅค เจฌเจพเจ•เจธ เจฆเฉ‡ เจฌเจพเจนเจฐ เจ‰เจน เจธเจพเจฐเฉ‡ เจ”เจธเจค เจ•เฉฐเจฎ เจ•เจฐเจฆเฉ‡ เจนเจจ. เจฌเฉ‡เจธเจผเฉฑเจ•, เจ‡เจน เจธเจญ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจ…เจคเฉ‡ เจ‡เจธ เจตเจฟเฉฑเจš เจตเจฐเจคเฉ€เจ†เจ‚ เจ—เจˆเจ†เจ‚ เจคเจ•เจจเจพเจฒเฉ‹เจœเฉ€เจ†เจ‚ 'เจคเฉ‡ เจจเจฟเจฐเจญเจฐ เจ•เจฐเจฆเจพ เจนเฉˆ, เจจเจพเจฒ เจนเฉ€ เจ‡เจน เจคเจ•เจจเจพเจฒเฉ‹เจœเฉ€ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจฆเฉ‡ เจจเจฟเจฏเจฎเจพเจ‚ เจฆเฉเจ†เจฐเจพ เจ•เจฟเฉฐเจจเฉ€ เจšเฉฐเจ—เฉ€ เจคเจฐเฉเจนเจพเจ‚ เจ•เจตเจฐ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ. เจฎเฉ‡เจฐเฉ€ เจฐเจพเจ เจตเจฟเฉฑเจš, เจ‡เฉฑเจ• SAST เจŸเฉ‚เจฒ เจฆเฉ€ เจšเฉ‹เจฃ เจ•เจฐเจจ เจตเฉ‡เจฒเฉ‡ เจธเจญ เจคเฉ‹เจ‚ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจฎเจพเจชเจฆเฉฐเจกเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• เจนเฉˆ เจ‡เจธเจจเฉ‚เฉฐ เจคเฉเจนเจพเจกเฉ€เจ†เจ‚ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจฆเฉ€เจ†เจ‚ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจฆเฉ‡ เจ…เจจเฉเจธเจพเจฐ เจ…เจจเฉเจ•เฉ‚เจฒเจฟเจค เจ•เจฐเจจ เจฆเฉ€ เจฏเฉ‹เจ—เจคเจพ, เจ…เจฐเจฅเจพเจค, เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจจเจฟเจฏเจฎเจพเจ‚ เจจเฉ‚เฉฐ เจฒเจฟเจ–เจฃเจพ เจ…เจคเฉ‡ เจฌเจฆเจฒเจฃเจพ เจœเจพเจ‚, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ…เจ•เจธเจฐ เจ•เจฟเจนเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจ•เจธเจŸเจฎ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ›เจพเจ‚เฅค

เจฌเจฟเจจเจพเจ‚ เจชเจพเจ—เจฒ เจนเฉ‹เจ เจšเฉˆเฉฑเจ•เจฎเจพเจฐเจ•เจธ เจฒเจˆ เจจเจฟเจฏเจฎ เจ•เจฟเจตเฉ‡เจ‚ เจฒเจฟเจ–เจฃเฉ‡ เจนเจจ

เจ…เจธเฉ€เจ‚ เจ…เจ•เจธเจฐ เจšเฉˆเฉฑเจ•เจฎเจพเจฐเจ•เจธ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ - เจ‡เฉฑเจ• เจฌเจนเฉเจค เจนเฉ€ เจฆเจฟเจฒเจšเจธเจช เจ…เจคเฉ‡ เจธเจผเจ•เจคเฉ€เจธเจผเจพเจฒเฉ€ เจ•เฉ‹เจก เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจ•เฅค เจ‡เจธ เจฒเฉ‡เจ– เจตเจฟเฉฑเจš เจฎเฉˆเจ‚ เจ‡เจธเจฆเฉ‡ เจฒเจˆ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจจเจฟเจฏเจฎเจพเจ‚ เจจเฉ‚เฉฐ เจฒเจฟเจ–เจฃ เจฆเฉ‡ เจ†เจชเจฃเฉ‡ เจ…เจจเฉเจญเจต เจฌเจพเจฐเฉ‡ เจ—เฉฑเจฒ เจ•เจฐเจพเจ‚เจ—เจพเฅค

เจตเจฟเจธเจผเจพ-เจธเฉ‚เจšเฉ€

เจ‡เฉฐเจฆเจฐเจพเจœเจผ

เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจจ เจฒเจˆ, เจฎเฉˆเจ‚ เจšเฉˆเฉฑเจ•เจฎเจพเจฐเจ•เจธ เจฒเจˆ เจชเฉเจฐเจธเจผเจจ เจฒเจฟเจ–เจฃ เจฆเฉ€เจ†เจ‚ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจฌเจพเจฐเฉ‡ เจฐเฉ‚เจธเฉ€ เจตเจฟเฉฑเจš เจ•เฉเจ เจฒเฉ‡เจ–เจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• เจฆเฉ€ เจธเจฟเจซเจพเจฐเจธเจผ เจ•เจฐเจจเจพ เจšเจพเจนเจพเจ‚เจ—เจพเฅค เจ‡เจน เจธเจฟเจฐเจฒเฉ‡เจ– เจนเฉ‡เจ  2019 เจฆเฉ‡ เจ…เฉฐเจค เจตเจฟเฉฑเจš เจนเฉˆเจฌเจฐเฉ‡ เจ‰เฉฑเจคเฉ‡ เจชเฉเจฐเจ•เจพเจธเจผเจฟเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€: "เจนเฉˆเจฒเฉ‹, เจšเฉˆเฉฑเจ•เจฎเจพเจฐเจ•เจธ!" เจšเฉˆเฉฑเจ•เจฎเจพเจฐเจ•เจธ SAST เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจ•เจฟเจตเฉ‡เจ‚ เจฒเจฟเจ–เจฃเฉ€ เจนเฉˆ เจ…เจคเฉ‡ เจธเจผเจพเจจเจฆเจพเจฐ เจ•เจฎเจœเจผเฉ‹เจฐเฉ€เจ†เจ‚ เจฆเจพ เจชเจคเจพ เจฒเจ—เจพเจ‰เจฃเจพ เจนเฉˆ.

เจ‡เจน เจตเจฟเจธเจคเจพเจฐ เจตเจฟเฉฑเจš เจœเจพเจ‚เจš เจ•เจฐเจฆเจพ เจนเฉˆ เจ•เจฟ เจ•เฉเจ เจŸเฉˆเจธเจŸ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฒเจˆ CxQL (เจšเฉˆเฉฑเจ•เจฎเจพเจฐเจ•เจธ เจ•เจฟเจŠเจฐเฉ€ เจฒเฉˆเจ‚เจ—เฉ‚เจเจœ) เจตเจฟเฉฑเจš เจชเจนเจฟเจฒเฉ€เจ†เจ‚ เจธเจตเจพเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจฒเจฟเจ–เจฃเจพ เจนเฉˆ เจ…เจคเฉ‡ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจจเจฟเจฏเจฎ เจ•เจฟเจตเฉ‡เจ‚ เจ•เฉฐเจฎ เจ•เจฐเจฆเฉ‡ เจนเจจ เจฆเฉ‡ เจฎเฉ‚เจฒ เจธเจฟเจงเจพเจ‚เจค เจฆเจฟเจ–เจพเจ‰เจ‚เจฆเจพ เจนเฉˆเฅค

เจฎเฉˆเจ‚ เจ‡เจธ เจตเจฟเฉฑเจš เจตเจฐเจฃเจจ เจ•เฉ€เจคเฉ‡ เจ—เจ เจธเจผเจฌเจฆเจพเจ‚ เจจเฉ‚เฉฐ เจจเจนเฉ€เจ‚ เจฆเฉเจนเจฐเจพเจตเจพเจ‚เจ—เจพ, เจนเจพเจฒเจพเจ‚เจ•เจฟ เจ•เฉเจ เจ‡เฉฐเจŸเจฐเจธเฉˆเจ•เจธเจผเจจ เจ…เจœเฉ‡ เจตเฉ€ เจฎเฉŒเจœเฉ‚เจฆ เจนเฉ‹เจฃเจ—เฉ‡. เจฎเฉ‡เจฐเฉ‡ เจฒเฉ‡เจ– เจตเจฟเฉฑเจš เจฎเฉˆเจ‚ "เจชเจ•เจตเจพเจจเจพเจ‚ เจฆเจพ เจธเฉฐเจ—เฉเจฐเจนเจฟ" เจฆเฉ€ เจ‡เฉฑเจ• เจ•เจฟเจธเจฎ เจจเฉ‚เฉฐ เจ•เฉฐเจชเจพเจ‡เจฒ เจ•เจฐเจจ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐเจพเจ‚เจ—เจพ, เจ–เจพเจธ เจธเจฎเฉฑเจธเจฟเจ†เจตเจพเจ‚ เจฆเฉ‡ เจนเฉฑเจฒเจพเจ‚ เจฆเฉ€ เจ‡เฉฑเจ• เจธเฉ‚เจšเฉ€ เจœเฉ‹ เจฎเฉˆเจ‚ เจšเฉˆเฉฑเจ•เจฎเจพเจฐเจ•เจธ เจฆเฉ‡ เจจเจพเจฒ เจฎเฉ‡เจฐเฉ‡ เจ•เฉฐเจฎ เจฆเฉŒเจฐเจพเจจ เจ†เจˆเจ†เจ‚ เจนเจจเฅค เจฎเฉˆเจจเฉ‚เฉฐ เจ‡เจนเจจเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจฌเจนเฉเจค เจธเจพเจฐเฉ€เจ†เจ‚ เจธเจฎเฉฑเจธเจฟเจ†เจตเจพเจ‚ 'เจคเฉ‡ เจ†เจชเจฃเฉ‡ เจฆเจฟเจฎเจพเจ— เจจเฉ‚เฉฐ เจฐเฉˆเจ• เจ•เจฐเจจเจพ เจชเจฟเจ†. เจ•เจˆ เจตเจพเจฐ เจฆเจธเจคเจพเจตเฉ‡เจœเจผเจพเจ‚ เจตเจฟเฉฑเจš เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ€ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจจเจนเฉ€เจ‚ เจนเฉเฉฐเจฆเฉ€ เจธเฉ€, เจ…เจคเฉ‡ เจ•เจˆ เจตเจพเจฐ เจ‡เจน เจธเจฎเจเจฃเจพ เจตเฉ€ เจฎเฉเจธเจผเจ•เจฒ เจนเฉเฉฐเจฆเจพ เจธเฉ€ เจ•เจฟ เจ•เฉ€ เจ•เจฐเจจเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆเฅค เจฎเฉˆเจจเฉ‚เฉฐ เจ‰เจฎเฉ€เจฆ เจนเฉˆ เจ•เจฟ เจฎเฉ‡เจฐเจพ เจคเจœเจฐเจฌเจพ เจ…เจคเฉ‡ เจจเฉ€เจ‚เจฆ เจฆเฉ€เจ†เจ‚ เจฐเจพเจคเจพเจ‚ เจตเจฟเจ…เจฐเจฅ เจจเจนเฉ€เจ‚ เจœเจพเจฃเจ—เฉ€เจ†เจ‚, เจ…เจคเฉ‡ เจ‡เจน "เจ•เจธเจŸเจฎ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ›เจพเจ‚ เจฆเฉ‡ เจชเจ•เจตเจพเจจเจพเจ‚ เจฆเจพ เจธเฉฐเจ—เฉเจฐเจนเจฟ" เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ•เฉเจ เจ˜เฉฐเจŸเจฟเจ†เจ‚ เจœเจพเจ‚ เจ•เฉเจ เจจเจฐเจต เจธเฉˆเฉฑเจฒเจพเจ‚ เจฆเฉ€ เจฌเจšเจค เจ•เจฐเฉ‡เจ—เจพเฅค เจ‡เจธ เจฒเจˆ, เจ†เจ“ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเฉ€เจ!

เจจเจฟเจฏเจฎเจพเจ‚ เจฌเจพเจฐเฉ‡ เจ†เจฎ เจœเจพเจฃเจ•เจพเจฐเฉ€

เจชเจนเจฟเจฒเจพเจ‚, เจ†เจ“ เจ…เฉฑเจ—เฉ‡ เจ•เฉ€ เจนเฉ‹เจตเฉ‡เจ—เจพ, เจ‡เจธ เจฆเฉ€ เจฌเจฟเจนเจคเจฐ เจธเจฎเจ เจฒเจˆ, เจ•เฉเจ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจงเจพเจฐเจจเจพเจตเจพเจ‚ เจ…เจคเฉ‡ เจจเจฟเจฏเจฎเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฆเฉ€ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจจเฉ‚เฉฐ เจตเฉ‡เจ–เฉ€เจเฅค เจ…เจคเฉ‡ เจ‡เจน เจตเฉ€ เจ•เจฟเจ‰เจ‚เจ•เจฟ เจฆเจธเจคเจพเจตเฉ‡เจœเจผ เจ‡เจธ เจฌเจพเจฐเฉ‡ เจ•เฉเจ เจจเจนเฉ€เจ‚ เจ•เจนเจฟเฉฐเจฆเฉ‡ เจนเจจ เจœเจพเจ‚ เจขเจพเจ‚เจšเฉ‡ เจตเจฟเฉฑเจš เจฌเจนเฉเจค เจซเฉˆเจฒเจฟเจ† เจนเฉ‹เจ‡เจ† เจนเฉˆ, เจœเฉ‹ เจ•เจฟ เจฌเจนเฉเจค เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจจเจนเฉ€เจ‚ เจนเฉˆเฅค

  1. เจจเจฟเจฏเจฎ เจธเจผเฉเจฐเฉ‚ เจตเจฟเฉฑเจš เจšเฉเจฃเฉ‡ เจ—เจ เจชเฉเจฐเฉ€เจธเฉˆเจŸ (เจธเจฐเจ—เจฐเจฎ เจจเจฟเจฏเจฎเจพเจ‚ เจฆเจพ เจ‡เฉฑเจ• เจธเจฎเฉ‚เจน) เจฆเฉ‡ เจ…เจงเจพเจฐ เจคเฉ‡ เจธเจ•เฉˆเจจเจฟเฉฐเจ— เจฆเฉŒเจฐเจพเจจ เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจเฅค เจคเฉเจธเฉ€เจ‚ เจ…เจฃเจ—เจฟเจฃเจค เจชเฉเจฐเฉ€เจธเฉˆเจŸเจธ เจฌเจฃเจพ เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจฆเฉ€ เจฌเจฃเจคเจฐ เจ•เจฟเจตเฉ‡เจ‚ เจ•เจฐเจจเฉ€ เจนเฉˆ เจ‡เจน เจคเฉเจนเจพเจกเฉ€ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจฆเฉ€เจ†เจ‚ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ 'เจคเฉ‡ เจจเจฟเจฐเจญเจฐ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจคเฉเจธเฉ€เจ‚ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจญเจพเจธเจผเจพ เจฆเฉเจ†เจฐเจพ เจธเจฎเฉ‚เจน เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจœเจพเจ‚ เจนเจฐเฉ‡เจ• เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฒเจˆ เจชเฉเจฐเฉ€เจธเฉˆเฉฑเจŸ เจšเฉเจฃ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค เจ•เจฟเจฐเจฟเจ†เจธเจผเฉ€เจฒ เจจเจฟเจฏเจฎเจพเจ‚ เจฆเฉ€ เจ—เจฟเจฃเจคเฉ€ เจธเจ•เฉˆเจจเจฟเฉฐเจ— เจฆเฉ€ เจ—เจคเฉ€ เจ…เจคเฉ‡ เจธเจผเฉเฉฑเจงเจคเจพ เจจเฉ‚เฉฐ เจชเฉเจฐเจญเจพเจตเจฟเจค เจ•เจฐเจฆเฉ€ เจนเฉˆเฅค

    เจฌเจฟเจจเจพเจ‚ เจชเจพเจ—เจฒ เจนเฉ‹เจ เจšเฉˆเฉฑเจ•เจฎเจพเจฐเจ•เจธ เจฒเจˆ เจจเจฟเจฏเจฎ เจ•เจฟเจตเฉ‡เจ‚ เจฒเจฟเจ–เจฃเฉ‡ เจนเจจเจšเฉˆเฉฑเจ•เจฎเจพเจฐเจ•เจธ เจ‡เฉฐเจŸเจฐเจซเฉ‡เจธ เจตเจฟเฉฑเจš เจชเฉเจฐเฉ€เจธเฉˆเจŸ เจธเฉˆเจŸ เจ…เจช เจ•เจฐเจจเจพ

  2. เจจเจฟเจฏเจฎ CxAuditor เจจเจพเจฎเจ• เจ‡เฉฑเจ• เจตเจฟเจธเจผเฉ‡เจธเจผ เจŸเฉ‚เจฒ เจตเจฟเฉฑเจš เจธเฉฐเจชเจพเจฆเจฟเจค เจ•เฉ€เจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจเฅค เจ‡เจน เจ‡เฉฑเจ• เจกเฉˆเจธเจ•เจŸเจพเจช เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจนเฉˆ เจœเฉ‹ เจšเฉˆเจ•เจฎเจพเจฐเจ•เจธ เจšเจฒเจพเจ‰เจฃ เจตเจพเจฒเฉ‡ เจธเจฐเจตเจฐ เจจเจพเจฒ เจœเฉเฉœเจฆเฉ€ เจนเฉˆเฅค เจ‡เจธ เจŸเฉ‚เจฒ เจตเจฟเฉฑเจš เจ•เฉฐเจฎ เจ•เจฐเจจ เจฆเฉ‡ เจฆเฉ‹ เจขเฉฐเจ— เจนเจจ: เจจเจฟเจฏเจฎเจพเจ‚ เจจเฉ‚เฉฐ เจธเฉฐเจชเจพเจฆเจฟเจค เจ•เจฐเจจเจพ เจ…เจคเฉ‡ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจ•เฉ€เจคเฉ‡ เจ—เจ เจธเจ•เฉˆเจจ เจฆเฉ‡ เจจเจคเฉ€เจœเจฟเจ†เจ‚ เจฆเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจ•เจฐเจจเจพเฅค

    เจฌเจฟเจจเจพเจ‚ เจชเจพเจ—เจฒ เจนเฉ‹เจ เจšเฉˆเฉฑเจ•เจฎเจพเจฐเจ•เจธ เจฒเจˆ เจจเจฟเจฏเจฎ เจ•เจฟเจตเฉ‡เจ‚ เจฒเจฟเจ–เจฃเฉ‡ เจนเจจCxAudit เจ‡เฉฐเจŸเจฐเจซเฉ‡เจธ

  3. เจšเฉˆเฉฑเจ•เจฎเจพเจฐเจ•เจธ เจตเจฟเฉฑเจš เจจเจฟเจฏเจฎเจพเจ‚ เจจเฉ‚เฉฐ เจญเจพเจธเจผเจพ เจฆเฉเจ†เจฐเจพ เจตเฉฐเจกเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจญเจพเจต, เจนเจฐเฉ‡เจ• เจญเจพเจธเจผเจพ เจฆเฉ‡ เจ†เจชเจฃเฉ‡ เจธเจตเจพเจฒเจพเจ‚ เจฆเจพ เจธเฉˆเฉฑเจŸ เจนเฉเฉฐเจฆเจพ เจนเฉˆเฅค เจ•เฉเจ เจ†เจฎ เจจเจฟเจฏเจฎ เจตเฉ€ เจนเจจ เจœเฉ‹ เจญเจพเจธเจผเจพ เจฆเฉ€ เจชเจฐเจตเจพเจน เจ•เฉ€เจคเฉ‡ เจฌเจฟเจจเจพเจ‚ เจฒเจพเจ—เฉ‚ เจนเฉเฉฐเจฆเฉ‡ เจนเจจ, เจ‡เจน เจ…เจ–เฉŒเจคเฉ€ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจธเจตเจพเจฒ เจนเจจเฅค เจœเจผเจฟเจ†เจฆเจพเจคเจฐ เจนเจฟเฉฑเจธเฉ‡ เจฒเจˆ, เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจธเจตเจพเจฒเจพเจ‚ เจตเจฟเฉฑเจš เจ…เจœเจฟเจนเฉ€ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจฆเฉ€ เจ–เฉ‹เจœ เจ•เจฐเจจเจพ เจธเจผเจพเจฎเจฒ เจนเฉเฉฐเจฆเจพ เจนเฉˆ เจœเฉ‹ เจฆเฉ‚เจœเฉ‡ เจจเจฟเจฏเจฎ เจตเจฐเจคเจฆเฉ‡ เจนเจจเฅค

    เจฌเจฟเจจเจพเจ‚ เจชเจพเจ—เจฒ เจนเฉ‹เจ เจšเฉˆเฉฑเจ•เจฎเจพเจฐเจ•เจธ เจฒเจˆ เจจเจฟเจฏเจฎ เจ•เจฟเจตเฉ‡เจ‚ เจฒเจฟเจ–เจฃเฉ‡ เจนเจจเจญเจพเจธเจผเจพ เจฆเฉเจ†เจฐเจพ เจจเจฟเจฏเจฎเจพเจ‚ เจจเฉ‚เฉฐ เจตเฉฐเจกเจฃเจพ

  4. เจจเจฟเจฏเจฎ "เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจŸเฉ‡เจฌเจฒ" เจ…เจคเฉ‡ "เจจเจพเจจ-เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจŸเฉ‡เจฌเจฒ" (เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจŸเจก เจ…เจคเฉ‡ เจจเจพเจŸ เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจŸเจฟเจก) เจนเจจเฅค เจฌเจฟเจฒเจ•เฉเจฒ เจธเจนเฉ€ เจจเจพเจฎ เจจเจนเฉ€เจ‚, เจฎเฉ‡เจฐเฉ€ เจฐเจพเจ เจตเจฟเฉฑเจš, เจชเจฐ เจ‡เจน เจ‰เจนเฉ€ เจนเฉˆ เจœเฉ‹ เจ‡เจน เจนเฉˆเฅค เจคเจฒ เจฒเจพเจˆเจจ เจ‡เจน เจนเฉˆ เจ•เจฟ "เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจŸเฉ‡เจฌเจฒ" เจจเจฟเจฏเจฎเจพเจ‚ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฆเจพ เจจเจคเฉ€เจœเจพ UI เจตเจฟเฉฑเจš เจธเจ•เฉˆเจจ เจจเจคเฉ€เจœเจฟเจ†เจ‚ เจตเจฟเฉฑเจš เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจ•เฉ€เจคเจพ เจœเจพเจตเฉ‡เจ—เจพ, เจ…เจคเฉ‡ "เจจเจพเจจ-เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจŸเฉ‡เจฌเจฒ" เจจเจฟเจฏเจฎเจพเจ‚ เจฆเฉ€ เจฒเฉ‹เฉœ เจธเจฟเจฐเจซเจผ เจ‰เจนเจจเจพเจ‚ เจฆเฉ‡ เจจเจคเฉ€เจœเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจนเฉ‹เจฐ เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจตเจฟเฉฑเจš เจตเจฐเจคเจฃ เจฒเจˆ เจนเฉˆ (เจธเจพเจฐ เจฐเฉ‚เจช เจตเจฟเฉฑเจš, เจธเจฟเจฐเจซเจผ เจ‡เฉฑเจ• เจซเฉฐเจ•เจธเจผเจจ)เฅค

    เจฌเจฟเจจเจพเจ‚ เจชเจพเจ—เจฒ เจนเฉ‹เจ เจšเฉˆเฉฑเจ•เจฎเจพเจฐเจ•เจธ เจฒเจˆ เจจเจฟเจฏเจฎ เจ•เจฟเจตเฉ‡เจ‚ เจฒเจฟเจ–เจฃเฉ‡ เจนเจจเจฌเจฃเจพเจ‰เจฃ เจตเฉ‡เจฒเฉ‡ เจจเจฟเจฏเจฎ เจฆเฉ€ เจ•เจฟเจธเจฎ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจจเจพ

  5. เจคเฉเจธเฉ€เจ‚ เจจเจตเฉ‡เจ‚ เจจเจฟเจฏเจฎ เจฌเจฃเจพ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจœเจพเจ‚ เจฎเฉŒเจœเฉ‚เจฆเจพ เจจเจฟเจฏเจฎเจพเจ‚ เจจเฉ‚เฉฐ เจชเฉ‚เจฐเจ•/เจฎเฉเฉœ เจฒเจฟเจ– เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค เจ‡เฉฑเจ• เจจเจฟเจฏเจฎ เจจเฉ‚เฉฐ เจฎเฉเฉœ เจฒเจฟเจ–เจฃ เจฒเจˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เจธเจจเฉ‚เฉฐ เจŸเฉเจฐเฉ€ เจตเจฟเฉฑเจš เจฒเฉฑเจญเจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ, เจธเฉฑเจœเจพ-เจ•เจฒเจฟเฉฑเจ• เจ•เจฐเฉ‹ เจ…เจคเฉ‡ เจกเฉเจฐเฉŒเจช-เจกเจพเจŠเจจ เจฎเฉ€เจจเฉ‚ เจคเฉ‹เจ‚ "เจ“เจตเจฐเจฐเจพเจˆเจก" เจšเฉเจฃเฉ‹เฅค เจ‡เฉฑเจฅเฉ‡ เจ‡เจน เจฏเจพเจฆ เจฐเฉฑเจ–เจฃเจพ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจนเฉˆ เจ•เจฟ เจจเจตเฉ‡เจ‚ เจจเจฟเจฏเจฎ เจธเจผเฉเจฐเฉ‚ เจตเจฟเฉฑเจš เจชเฉเจฐเฉ€เจธเฉˆเจŸเจธ เจตเจฟเฉฑเจš เจธเจผเจพเจฎเจฒ เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเฉ‡ เจ—เจ เจนเจจ เจ…เจคเฉ‡ เจ•เจฟเจฐเจฟเจ†เจธเจผเฉ€เจฒ เจจเจนเฉ€เจ‚ เจนเจจเฅค เจ‰เจนเจจเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจจ เจฒเจˆ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจธเจพเจงเจจ เจตเจฟเฉฑเจš "เจชเฉเจฐเฉ€เจธเฉˆเจŸ เจฎเฉˆเจจเฉ‡เจœเจฐ" เจฎเฉ€เจจเฉ‚ เจตเจฟเฉฑเจš เจ•เจฟเจฐเจฟเจ†เจธเจผเฉ€เจฒ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค เจฎเฉเฉœ เจฒเจฟเจ–เฉ‡ เจจเจฟเจฏเจฎ เจ‰เจนเจจเจพเจ‚ เจฆเฉ€เจ†เจ‚ เจธเฉˆเจŸเจฟเฉฐเจ—เจพเจ‚ เจจเฉ‚เฉฐ เจฌเจฐเจ•เจฐเจพเจฐ เจฐเฉฑเจ–เจฆเฉ‡ เจนเจจ, เจฏเจพเจจเฉ€ เจœเฉ‡เจ•เจฐ เจจเจฟเจฏเจฎ เจ•เจฟเจฐเจฟเจ†เจธเจผเฉ€เจฒ เจธเฉ€, เจคเจพเจ‚ เจ‡เจน เจ…เจœเจฟเจนเจพ เจนเฉ€ เจฐเจนเฉ‡เจ—เจพ เจ…เจคเฉ‡ เจคเฉเจฐเฉฐเจค เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเจพ เจœเจพเจตเฉ‡เจ—เจพเฅค

    เจฌเจฟเจจเจพเจ‚ เจชเจพเจ—เจฒ เจนเฉ‹เจ เจšเฉˆเฉฑเจ•เจฎเจพเจฐเจ•เจธ เจฒเจˆ เจจเจฟเจฏเจฎ เจ•เจฟเจตเฉ‡เจ‚ เจฒเจฟเจ–เจฃเฉ‡ เจนเจจเจชเฉเจฐเฉ€เจธเฉˆเจŸ เจฎเฉˆเจจเฉ‡เจœเจฐ เจ‡เฉฐเจŸเจฐเจซเฉ‡เจธ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจจเจตเฉ‡เจ‚ เจจเจฟเจฏเจฎ เจฆเฉ€ เจ‰เจฆเจพเจนเจฐเจจ

  6. เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจธเจผเจจ เจฆเฉ‡ เจฆเฉŒเจฐเจพเจจ, เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจฆเจพ เจ‡เฉฑเจ• "เจฐเฉเฉฑเจ–" เจฌเจฃเจพเจ‡เจ† เจ—เจฟเจ† เจนเฉˆ, เจœเฉ‹ เจ•เจฟ เจ•เจฟเจธ 'เจคเฉ‡ เจจเจฟเจฐเจญเจฐ เจ•เจฐเจฆเจพ เจนเฉˆ. เจœเจพเจฃเจ•เจพเจฐเฉ€ เจ‡เจ•เฉฑเจ เฉ€ เจ•เจฐเจจ เจตเจพเจฒเฉ‡ เจจเจฟเจฏเจฎ เจชเจนเจฟเจฒเจพเจ‚ เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจ, เจ…เจคเฉ‡ เจ‰เจน เจœเฉ‹ เจ‡เจธเจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเจจ เจฆเฉ‚เจœเฉ‡. เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจธเจผเจจ เจจเจคเฉ€เจœเจพ เจ•เฉˆเจธเจผ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ, เจ‡เจธ เจฒเจˆ เจœเฉ‡เจ•เจฐ เจฎเฉŒเจœเฉ‚เจฆเจพ เจจเจฟเจฏเจฎ เจฆเฉ‡ เจจเจคเฉ€เจœเจฟเจ†เจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ เจธเฉฐเจญเจต เจนเฉˆ, เจคเจพเจ‚ เจ…เจœเจฟเจนเจพ เจ•เจฐเจจเจพ เจฌเจฟเจนเจคเจฐ เจนเฉˆ, เจ‡เจธ เจจเจพเจฒ เจธเจ•เฉˆเจจเจฟเฉฐเจ— เจธเจฎเจพเจ‚ เจ˜เฉฑเจŸ เจœเจพเจตเฉ‡เจ—เจพเฅค

  7. เจจเจฟเจฏเจฎ เจตเฉฑเจ–-เจตเฉฑเจ– เจชเฉฑเจงเจฐเจพเจ‚ 'เจคเฉ‡ เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเฉ‡ เจœเจพ เจธเจ•เจฆเฉ‡ เจนเจจ:

  • เจชเฉ‚เจฐเฉ‡ เจธเจฟเจธเจŸเจฎ เจฒเจˆ - เจ•เจฟเจธเฉ‡ เจตเฉ€ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเฉ€ เจธเจ•เฉˆเจจเจฟเฉฐเจ— เจฒเจˆ เจตเจฐเจคเจฟเจ† เจœเจพเจตเฉ‡เจ—เจพ

  • เจŸเฉ€เจฎ เจชเฉฑเจงเจฐ 'เจคเฉ‡ (เจŸเฉ€เจฎ) - เจธเจฟเจฐเจซ เจšเฉเจฃเฉ€ เจ—เจˆ เจŸเฉ€เจฎ เจตเจฟเฉฑเจš เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸเจพเจ‚ เจจเฉ‚เฉฐ เจธเจ•เฉˆเจจ เจ•เจฐเจจ เจฒเจˆ เจตเจฐเจคเจฟเจ† เจœเจพเจตเฉ‡เจ—เจพเฅค

  • เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจชเฉฑเจงเจฐ 'เจคเฉ‡ - เจ‡เฉฑเจ• เจ–เจพเจธ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจตเจฟเฉฑเจš เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเจพ เจœเจพเจตเฉ‡เจ—เจพ

    เจฌเจฟเจจเจพเจ‚ เจชเจพเจ—เจฒ เจนเฉ‹เจ เจšเฉˆเฉฑเจ•เจฎเจพเจฐเจ•เจธ เจฒเจˆ เจจเจฟเจฏเจฎ เจ•เจฟเจตเฉ‡เจ‚ เจฒเจฟเจ–เจฃเฉ‡ เจนเจจเจ‰เจน เจชเฉฑเจงเจฐ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจจเจพ เจœเจฟเจธ 'เจคเฉ‡ เจจเจฟเจฏเจฎ เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเจพ เจœเจพเจตเฉ‡เจ—เจพ

เจธเจผเฉเจฐเฉ‚เจ†เจค เจ•เจฐเจจ เจตเจพเจฒเจฟเจ†เจ‚ เจฒเจˆ "เจกเจ•เจธเจผเจจเจฐเฉ€"

เจ…เจคเฉ‡ เจฎเฉˆเจ‚ เจ•เฉเจ เจšเฉ€เจœเจผเจพเจ‚ เจจเจพเจฒ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจพเจ‚เจ—เจพ เจœเฉ‹ เจฎเฉ‡เจฐเฉ‡ เจธเจตเจพเจฒเจพเจ‚ เจฆเจพ เจ•เจพเจฐเจจ เจฌเจฃเฉ€เจ†เจ‚, เจ…เจคเฉ‡ เจฎเฉˆเจ‚ เจ•เจˆ เจคเจ•เจจเฉ€เจ•เจพเจ‚ เจตเฉ€ เจฆเจฟเจ–เจพเจตเจพเจ‚เจ—เจพ เจœเฉ‹ เจœเฉ€เจตเจจ เจจเฉ‚เฉฐ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจคเฉŒเจฐ 'เจคเฉ‡ เจธเจฐเจฒ เจฌเจฃเจพเจ‰เจฃเจ—เฉ€เจ†เจ‚เฅค

เจธเฉ‚เจšเฉ€เจ†เจ‚ เจฆเฉ‡ เจจเจพเจฒ เจธเฉฐเจšเจพเจฒเจจ

- ะฒั‹ั‡ะธั‚ะฐะฝะธะต ะพะดะฝะพะณะพ ะธะท ะดั€ัƒะณะพะณะพ (list2 - list1)
* ะฟะตั€ะตัะตั‡ะตะฝะธะต ัะฟะธัะบะพะฒ (list1 * list2)
+ ัะปะพะถะตะฝะธะต ัะฟะธัะบะพะฒ (list1 + list2)

& (ะปะพะณะธั‡ะตัะบะพะต ะ˜) - ะพะฑัŠะตะดะธะฝัะตั‚ ัะฟะธัะบะธ ะฟะพ ัะพะฒะฟะฐะดะตะฝะธัŽ (list1 & list2), ะฐะฝะฐะปะพะณะธั‡ะฝะพ ะฟะตั€ะตัะตั‡ะตะฝะธัŽ (list1 * list2)
| (ะปะพะณะธั‡ะตัะบะพะต ะ˜ะ›ะ˜) - ะพะฑัŠะตะดะธะฝัะตั‚ ัะฟะธัะบะธ ะฟะพ ัˆะธั€ะพะบะพะผัƒ ะฟะพะธัะบัƒ (list1 | list2)

ะกะพ ัะฟะธัะบะฐะผะธ ะฝะต ั€ะฐะฑะพั‚ะฐะตั‚:  ^  &&  ||  %  / 

เจธเจพเจฐเฉ€เจ†เจ‚ เจ†เจˆเจŸเจฎเจพเจ‚ เจฒเฉฑเจญเฉ€เจ†เจ‚

เจธเจ•เฉˆเจจ เจ•เฉ€เจคเฉ€ เจญเจพเจธเจผเจพ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ, เจคเฉเจธเฉ€เจ‚ เจฌเจฟเจฒเจ•เฉเจฒ เจ‰เจนเจจเจพเจ‚ เจธเจพเจฐเฉ‡ เจคเฉฑเจคเจพเจ‚ เจฆเฉ€ เจ‡เฉฑเจ• เจธเฉ‚เจšเฉ€ เจชเฉเจฐเจพเจชเจค เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจœเฉ‹ เจšเฉˆเฉฑเจ•เจฎเจพเจฐเจ•เจธ เจจเฉ‡ เจชเจ›เจพเจฃเฉ‡ เจนเจจ (เจธเจŸเจฐเจฟเฉฐเจ—, เจซเฉฐเจ•เจธเจผเจจ, เจ•เจฒเจพเจธเจพเจ‚, เจตเจฟเจงเฉ€เจ†เจ‚, เจ†เจฆเจฟ)เฅค เจ‡เจน เจตเจธเจคเฉ‚เจ†เจ‚ เจฆเฉ€ เจ•เฉเจ เจฅเจพเจ‚ เจนเฉˆ เจœเจฟเจธ เจคเฉฑเจ• เจชเจนเฉเฉฐเจš เจ•เฉ€เจคเฉ€ เจœเจพ เจธเจ•เจฆเฉ€ เจนเฉˆ All. เจญเจพเจต, เจ•เจฟเจธเฉ‡ เจ–เจพเจธ เจจเจพเจฎ เจจเจพเจฒ เจ•เจฟเจธเฉ‡ เจตเจธเจคเฉ‚ เจฆเฉ€ เจ–เฉ‹เจœ เจ•เจฐเจจเจพ searchMe, เจคเฉเจธเฉ€เจ‚ เจ–เฉ‹เจœ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจธเจพเจฐเฉ€เจ†เจ‚ เจฒเฉฑเจญเฉ€เจ†เจ‚ เจตเจธเจคเฉ‚เจ†เจ‚ เจตเจฟเฉฑเจš เจจเจพเจฎ เจฆเฉเจ†เจฐเจพ:

// ะขะฐะบะพะน ะทะฐะฟั€ะพั ะฒั‹ะดะฐัั‚ ะฒัะต ัะปะตะผะตะฝั‚ั‹
result = All;

// ะขะฐะบะพะน ะทะฐะฟั€ะพั ะฒั‹ะดะฐัั‚ ะฒัะต ัะปะตะผะตะฝั‚ั‹, ะฒ ะธะผะตะฝะธ ะบะพั‚ะพั€ั‹ั… ะฟั€ะธััƒั‚ัั‚ะฒัƒะตั‚ โ€œsearchMeโ€œ
result = All.FindByName("searchMe");

เจชเจฐ, เจœเฉ‡เจ•เจฐ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ•เจฟเจธเฉ‡ เจนเฉ‹เจฐ เจญเจพเจธเจผเจพ เจตเจฟเฉฑเจš เจ–เฉ‹เจœ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ เจœเฉ‹ เจ•เจฟเจธเฉ‡ เจ•เจพเจฐเจจ เจ•เจฐเจ•เฉ‡ เจธเจ•เฉˆเจจ เจตเจฟเฉฑเจš เจธเจผเจพเจฎเจฒ เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเฉ€ เจ—เจˆ เจธเฉ€ (เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจ‡เฉฑเจ• Android เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจตเจฟเฉฑเจš groovy), เจคเฉเจธเฉ€เจ‚ เจ‡เฉฑเจ• เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจฐเจพเจนเฉ€เจ‚ เจธเจพเจกเฉ‡ เจ†เจฌเจœเฉˆเจ•เจŸ เจธเจชเฉ‡เจธ เจจเฉ‚เฉฐ เจตเจงเจพ เจธเจ•เจฆเฉ‡ เจนเฉ‹:

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.

เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจธเจผเจจ เจจเจคเฉ€เจœเจพ

CxQL เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจ‡เฉฑเจ• เจตเจฟเจธเจผเฉ‡เจธเจผ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจนเฉˆ 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)

เจฒเจพเจ—เจ‡เจจ เจธเจฎเฉฑเจธเจฟเจ†

เจ…เจœเจฟเจนเฉ€เจ†เจ‚ เจธเจฅเจฟเจคเฉ€เจ†เจ‚ เจนเฉเฉฐเจฆเฉ€เจ†เจ‚ เจนเจจ เจœเจฆเฉ‹เจ‚ เจคเฉเจธเฉ€เจ‚ CxAudit เจŸเฉ‚เจฒ (เจœเฉ‹ เจจเจฟเจฏเจฎ เจฒเจฟเจ–เจฃ เจฒเจˆ เจตเจฐเจคเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ) เจคเฉฑเจ• เจจเจนเฉ€เจ‚ เจชเจนเฉเฉฐเจš เจธเจ•เจฆเฉ‡เฅค เจ‡เจธเจฆเฉ‡ เจ•เจˆ เจ•เจพเจฐเจจ เจนเฉ‹ เจธเจ•เจฆเฉ‡ เจนเจจ, เจœเจฟเจธ เจตเจฟเฉฑเจš เจ•เฉเจฐเฉˆเจธเจผ, เจ…เจšเจพเจจเจ• เจตเจฟเฉฐเจกเฉ‹เจœเจผ เจ…เฉฑเจชเจกเฉ‡เจŸ, BSOD เจ…เจคเฉ‡ เจนเฉ‹เจฐ เจ…เจฃเจ•เจฟเจ†เจธเฉ€เจ†เจ‚ เจธเจฅเจฟเจคเฉ€เจ†เจ‚ เจธเจผเจพเจฎเจฒ เจนเจจ เจœเฉ‹ เจธเจพเจกเฉ‡ เจ•เฉฐเจŸเจฐเฉ‹เจฒ เจคเฉ‹เจ‚ เจฌเจพเจนเจฐ เจนเจจเฅค เจ‡เจธ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš, เจ•เจˆ เจตเจพเจฐ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจ…เจงเฉ‚เจฐเจพ เจธเฉˆเจธเจผเจจ เจนเฉเฉฐเจฆเจพ เจนเฉˆ, เจœเฉ‹ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฆเฉเจฌเจพเจฐเจพ เจฒเฉŒเจ—เจ‡เจจ เจ•เจฐเจจ เจคเฉ‹เจ‚ เจฐเฉ‹เจ•เจฆเจพ เจนเฉˆเฅค เจ‡เจธ เจจเฉ‚เฉฐ เจ เฉ€เจ• เจ•เจฐเจจ เจฒเจˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ•เจˆ เจธเจตเจพเจฒ เจšเจฒเจพเจ‰เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ:

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

เจฒเจฟเจ–เจฃ เจฆเฉ‡ เจจเจฟเจฏเจฎ

เจนเฉเจฃ เจ…เจธเฉ€เจ‚ เจธเจญ เจคเฉ‹เจ‚ เจฆเจฟเจฒเจšเจธเจช เจนเจฟเฉฑเจธเฉ‡ เจคเฉ‡ เจ†เจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚. เจœเจฆเฉ‹เจ‚ เจคเฉเจธเฉ€เจ‚ CxQL เจตเจฟเฉฑเจš เจจเจฟเจฏเจฎ เจฒเจฟเจ–เจฃเจพ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจคเฉเจนเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจ…เจ•เจธเจฐ เจ‡เฉฐเจจเฉ‡ เจœเจผเจฟเจ†เจฆเจพ เจฆเจธเจคเจพเจตเฉ‡เจœเจผเจพเจ‚ เจฆเฉ€ เจ•เจฎเฉ€ เจจเจนเฉ€เจ‚ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ เจœเจฟเฉฐเจจเฉ€ เจ•เจฟ เจ•เฉเจ เจธเจฎเฉฑเจธเจฟเจ†เจตเจพเจ‚ เจจเฉ‚เฉฐ เจนเฉฑเจฒ เจ•เจฐเจจ เจฆเฉ€เจ†เจ‚ เจ•เฉเจ เจœเฉ€เจตเจค เจ‰เจฆเจพเจนเจฐเจฃเจพเจ‚ เจ…เจคเฉ‡ เจชเฉเจฐเจธเจผเจจเจพเจ‚ เจฆเฉ‡ เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฆเฉ€ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจฆเจพ เจตเจฐเจฃเจจ เจ•เจฐเจจ เจฒเจˆเฅค

เจฎเฉˆเจ‚ เจ‰เจนเจจเจพเจ‚ เจฒเจˆ เจœเฉ€เจตเจจ เจจเฉ‚เฉฐ เจฅเฉ‹เฉœเจพ เจ†เจธเจพเจจ เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐเจพเจ‚เจ—เจพ เจœเฉ‹ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจญเจพเจธเจผเจพ เจตเจฟเฉฑเจš เจกเฉเจฌเจ•เฉ€ เจฒเจ—เจพเจ‰เจฃเจพ เจธเจผเฉเจฐเฉ‚ เจ•เจฐ เจฐเจนเฉ‡ เจนเจจ เจ…เจคเฉ‡ เจ•เฉเจ เจธเจฎเฉฑเจธเจฟเจ†เจตเจพเจ‚ เจจเฉ‚เฉฐ เจนเฉฑเจฒ เจ•เจฐเจจ เจฒเจˆ เจ•เจธเจŸเจฎ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ›เจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเฉ€เจ†เจ‚ เจ•เจˆ เจ‰เจฆเจพเจนเจฐเจฃเจพเจ‚ เจฆเฉ‡เจตเจพเจ‚เจ—เจพเฅค เจ‰เจนเจจเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ•เฉเจ เจ•เจพเจซเจผเฉ€ เจ†เจฎ เจนเจจ เจ…เจคเฉ‡ เจคเฉเจนเจพเจกเฉ€ เจ•เฉฐเจชเจจเฉ€ เจตเจฟเฉฑเจš เจ…เจฎเจฒเฉ€ เจคเฉŒเจฐ 'เจคเฉ‡ เจฌเจฟเจจเจพเจ‚ เจ•เจฟเจธเฉ‡ เจฌเจฆเจฒเจพเจ… เจฆเฉ‡ เจตเจฐเจคเฉ‡ เจœเจพ เจธเจ•เจฆเฉ‡ เจนเจจ, เจฆเฉ‚เจธเจฐเฉ‡ เจตเจงเฉ‡เจฐเฉ‡ เจ–เจพเจธ เจนเจจ, เจชเจฐ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจคเฉเจนเจพเจกเฉ€เจ†เจ‚ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจฆเฉ€เจ†เจ‚ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจฆเฉ‡ เจ…เจจเฉเจ•เฉ‚เจฒ เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจฌเจฆเจฒ เจ•เฉ‡ เจตเฉ€ เจตเจฐเจคเจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค

เจ‡เจธ เจฒเจˆ, เจ‡เฉฑเจฅเฉ‡ เจ‰เจน เจธเจฎเฉฑเจธเจฟเจ†เจตเจพเจ‚ เจนเจจ เจœเจฟเจจเฉเจนเจพเจ‚ เจฆเจพ เจธเจพเจจเฉ‚เฉฐ เจ…เจ•เจธเจฐ เจธเจพเจนเจฎเจฃเจพ เจ•เจฐเจจเจพ เจชเฉˆเจ‚เจฆเจพ เจนเฉˆ:

เจšเฉเจฃเฉŒเจคเฉ€: เจจเจฟเจฏเจฎ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฆเฉ‡ เจจเจคเฉ€เจœเจฟเจ†เจ‚ เจตเจฟเฉฑเจš เจ•เจˆ เจชเฉเจฐเจตเจพเจน เจนเจจ เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• เจฆเฉ‚เจœเฉ‡ เจฆเจพ เจ†เจฒเฉเจนเจฃเจพ เจนเฉˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‰เจนเจจเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• เจจเฉ‚เฉฐ เจ›เฉฑเจก เจฆเฉ‡เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆเฅค

เจนเฉฑเจฒ: เจฆเจฐเจ…เจธเจฒ, เจ•เจˆ เจตเจพเจฐ เจšเฉˆเจ•เจฎเจพเจฐเจ•เจธ เจ•เจˆ เจกเฉ‡เจŸเจพ เจชเฉเจฐเจตเจพเจน เจฆเจฟเจ–เจพเจ‰เจ‚เจฆเจพ เจนเฉˆ เจœเฉ‹ เจ“เจตเจฐเจฒเฉˆเจช เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจฆเฉ‚เจœเจฟเจ†เจ‚ เจฆเจพ เจ›เฉ‹เจŸเจพ เจฐเฉ‚เจช เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจ…เจœเจฟเจนเฉ‡ เจฎเจพเจฎเจฒเจฟเจ†เจ‚ เจฒเจˆ เจ‡เฉฑเจ• เจตเจฟเจธเจผเฉ‡เจธเจผ เจคเจฐเฉ€เจ•เจพ เจนเฉˆ เจ˜เจŸเจพเจ“เฅค เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ 'เจคเฉ‡ เจจเจฟเจฐเจญเจฐ เจ•เจฐเจฆเจฟเจ†เจ‚, เจ‡เจน เจธเจญ เจคเฉ‹เจ‚ เจ›เฉ‹เจŸเจพ เจœเจพเจ‚ เจฒเฉฐเจฌเจพ เจตเจนเจพเจ… เจšเฉเจฃเฉ‡เจ—เจพ:

// ะžัั‚ะฐะฒะธั‚ัŒ ั‚ะพะปัŒะบะพ ะดะปะธะฝะฝั‹ะต Flow
result = result.ReduceFlow(CxList.ReduceFlowType.ReduceSmallFlow);

// ะžัั‚ะฐะฒะธั‚ัŒ ั‚ะพะปัŒะบะพ ะบะพั€ะพั‚ะบะธะต Flow
result = result.ReduceFlow(CxList.ReduceFlowType.ReduceBigFlow);

เจšเฉเจฃเฉŒเจคเฉ€: เจธเฉฐเจตเฉ‡เจฆเจจเจธเจผเฉ€เจฒ เจกเฉ‡เจŸเจพ เจฆเฉ€ เจธเฉ‚เจšเฉ€ เจฆเจพ เจตเจฟเจธเจคเจพเจฐ เจ•เจฐเฉ‹ เจœเจฟเจธ 'เจคเฉ‡ เจŸเฉ‚เจฒ เจชเฉเจฐเจคเฉ€เจ•เจฟเจฐเจฟเจ† เจ•เจฐเจฆเจพ เจนเฉˆ

เจนเฉฑเจฒ: เจšเฉˆเฉฑเจ•เจฎเจพเจฐเจ•เจธ เจฆเฉ‡ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจจเจฟเจฏเจฎ เจนเจจ, เจœเจฟเจจเฉเจนเจพเจ‚ เจฆเฉ‡ เจจเจคเฉ€เจœเฉ‡ เจ•เจˆ เจนเฉ‹เจฐ เจธเจตเจพเจฒเจพเจ‚ เจฆเฉเจ†เจฐเจพ เจตเจฐเจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจเฅค เจ‡เจนเจจเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ•เฉเจ เจจเจฟเจฏเจฎเจพเจ‚ เจจเฉ‚เฉฐ เจคเฉเจนเจพเจกเฉ€ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฒเจˆ เจ–เจพเจธ เจกเฉ‡เจŸเจพ เจฆเฉ‡ เจจเจพเจฒ เจชเฉ‚เจฐเจ• เจ•เจฐเจ•เฉ‡, เจคเฉเจธเฉ€เจ‚ เจ†เจชเจฃเฉ‡ เจธเจ•เฉˆเจจ เจจเจคเฉ€เจœเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจคเฉเจฐเฉฐเจค เจธเฉเจงเจพเจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค เจคเฉเจนเจพเจจเฉ‚เฉฐ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจจ เจฒเจˆ เจนเฉ‡เจ เจพเจ‚ เจ‡เฉฑเจ• เจ‰เจฆเจพเจนเจฐเจจ เจจเจฟเจฏเจฎ เจนเฉˆ:

เจœเจจเจฐเจฒ_เจชเจฐเจพเจˆเจตเฉ‡เจธเฉ€_เจ‰เจฒเฉฐเจ˜เจฃ_เจธเฉ‚เจšเฉ€

เจ†เจ“ เจ•เจˆ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจœเฉ‹เฉœเฉ€เจ เจœเฉ‹ เจธเจพเจกเฉ€ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจตเจฟเฉฑเจš เจธเฉฐเจตเฉ‡เจฆเจจเจธเจผเฉ€เจฒ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจจเฉ‚เฉฐ เจธเจŸเฉ‹เจฐ เจ•เจฐเจจ เจฒเจˆ เจตเจฐเจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจ:

// ะŸะพะปัƒั‡ะฐะตะผ ั€ะตะทัƒะปัŒั‚ะฐั‚ ะฒั‹ะฟะพะปะฝะตะฝะธั ะฑะฐะทะพะฒะพะณะพ ะฟั€ะฐะฒะธะปะฐ
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);
	}
}

เจšเฉเจฃเฉŒเจคเฉ€: เจตเจฐเจคเฉ‡ เจ—เจ เจซเจฐเฉ‡เจฎเจตเจฐเจ• เจธเจผเจพเจฎเจฒ เจ•เจฐเฉ‹ เจœเฉ‹ เจšเฉˆเฉฑเจ•เจฎเจพเจฐเจ•เจธ เจฆเฉเจ†เจฐเจพ เจธเจฎเจฐเจฅเจฟเจค เจจเจนเฉ€เจ‚ เจนเจจ

เจนเฉฑเจฒ: เจšเฉˆเฉฑเจ•เจฎเจพเจฐเจ•เจธ เจตเจฟเฉฑเจš เจธเจพเจฐเฉ€เจ†เจ‚ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ›เจพเจ‚ เจญเจพเจธเจผเจพ เจฆเฉเจ†เจฐเจพ เจตเฉฐเจกเฉ€เจ†เจ‚ เจ—เจˆเจ†เจ‚ เจนเจจ, เจ‡เจธเจฒเจˆ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจนเจฐเฉ‡เจ• เจญเจพเจธเจผเจพ เจฒเจˆ เจจเจฟเจฏเจฎ เจœเฉ‹เฉœเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค เจนเฉ‡เจ เจพเจ‚ เจ…เจœเจฟเจนเฉ‡ เจจเจฟเจฏเจฎเจพเจ‚ เจฆเฉ€เจ†เจ‚ เจ•เฉเจ เจ‰เจฆเจพเจนเจฐเจฃเจพเจ‚ เจนเจจเฅค

เจœเฉ‡ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€เจ†เจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ เจœเฉ‹ เจฎเจฟเจ†เจฐเฉ€ เจ•เจพเจฐเจœเจธเจผเฉ€เจฒเจคเจพ เจจเฉ‚เฉฐ เจชเฉ‚เจฐเจ• เจœเจพเจ‚ เจฌเจฆเจฒเจฆเฉ€เจ†เจ‚ เจนเจจ, เจคเจพเจ‚ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจจเจฟเจฏเจฎ เจตเจฟเฉฑเจš เจ†เจธเจพเจจเฉ€ เจจเจพเจฒ เจœเฉ‹เฉœเจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจซเจฟเจฐ เจนเจฐ เจ•เฉ‹เจˆ เจœเฉ‹ เจ‡เจธเจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเจพ เจนเฉˆ เจ‰เจน เจคเฉเจฐเฉฐเจค เจจเจตเฉ€เจ‚ เจœเจพเจฃ-เจชเจ›เจพเจฃ เจฌเจพเจฐเฉ‡ เจœเจพเจฃ เจœเจพเจตเฉ‡เจ—เจพเฅค เจ‡เฉฑเจ• เจ‰เจฆเจพเจนเจฐเจจ เจฆเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡, เจเจ‚เจกเจฐเฉŒเจ‡เจก เจตเจฟเฉฑเจš เจฒเฉŒเจ—เจ‡เจจ เจ•เจฐเจจ เจฒเจˆ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€เจ†เจ‚ เจŸเจฟเฉฐเจฌเจฐ เจ…เจคเฉ‡ เจฒเฉ‹เจ—เฉ€ เจนเจจเฅค เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจชเฉˆเจ•เฉ‡เจœ เจตเจฟเฉฑเจš, เจ—เฉˆเจฐ-เจธเจฟเจธเจŸเจฎ เจ•เจพเจฒเจพเจ‚ เจฆเฉ€ เจชเจ›เจพเจฃ เจ•เจฐเจจ เจฒเจˆ เจ•เฉ‹เจˆ เจจเจฟเจฏเจฎ เจจเจนเฉ€เจ‚ เจนเจจ, เจ‡เจธเจฒเจˆ เจœเฉ‡เจ•เจฐ เจ•เฉ‹เจˆ เจชเจพเจธเจตเจฐเจก เจœเจพเจ‚ เจธเฉˆเจธเจผเจจ เจชเจ›เจพเจฃเจ•เจฐเจคเจพ เจฒเฉŒเจ— เจตเจฟเฉฑเจš เจ†เจ‰เจ‚เจฆเจพ เจนเฉˆ, เจคเจพเจ‚ เจธเจพเจจเฉ‚เฉฐ เจ‡เจธ เจฌเจพเจฐเฉ‡ เจชเจคเจพ เจจเจนเฉ€เจ‚ เจนเฉ‹เจตเฉ‡เจ—เจพเฅค เจ†เจ‰ เจšเฉˆเฉฑเจ•เจฎเจพเจฐเจ•เจธ เจจเจฟเจฏเจฎเจพเจ‚ เจตเจฟเฉฑเจš เจ…เจœเจฟเจนเฉ€เจ†เจ‚ เจตเจฟเจงเฉ€เจ†เจ‚ เจฆเฉ€เจ†เจ‚ เจชเจฐเจฟเจญเจพเจธเจผเจพเจตเจพเจ‚ เจœเฉ‹เฉœเจจ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐเฉ€เจเฅค

เจŸเฉˆเจธเจŸ เจ•เฉ‹เจก เจ‰เจฆเจพเจนเจฐเจจ เจœเฉ‹ เจฒเฉŒเจ—เจฟเฉฐเจ— เจฒเจˆ เจŸเจฟเฉฐเจฌเจฐ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ€ เจนเฉˆ:

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

เจ…เจคเฉ‡ เจคเฉเจธเฉ€เจ‚ เจ—เฉเจ†เจ‚เจขเฉ€ เจจเจฟเจฏเจฎ เจตเจฟเฉฑเจš เจตเฉ€ เจธเจผเจพเจฎเจฒ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจชเจฐ เจ‡เจน เจธเจฟเฉฑเจงเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡ เจเจ‚เจกเจฐเฉŒเจ‡เจก เจตเจฟเฉฑเจš เจฒเฉŒเจ—เจฟเฉฐเจ— เจจเจพเจฒ เจธเจฌเฉฐเจงเจค เจนเฉˆ:

FindAndroidLog_Outputs

// ะŸะพะปัƒั‡ะฐะตะผ ั€ะตะทัƒะปัŒั‚ะฐั‚ ะฒั‹ะฟะพะปะฝะตะฝะธั ะฑะฐะทะพะฒะพะณะพ ะฟั€ะฐะฒะธะปะฐ
result = base.Find_Android_Log_Outputs();

// ะ”ะพะฟะพะปะฝัะตะผ ะฒั‹ะทะพะฒะฐะผะธ, ะบะพั‚ะพั€ั‹ะต ะฟั€ะธั…ะพะดัั‚ ะธะท ะฑะธะฑะปะธะพั‚ะตะบะธ Timber
result.Add(
  All.FindByExactMemberAccess("Timber.*") +
  All.FindByShortName("Timber").GetMembersOfTarget()
);

เจจเจพเจฒ เจนเฉ€, เจœเฉ‡เจ•เจฐ เจเจ‚เจกเจฐเฉŒเจ‡เจก เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเจจ เจตเจฐเจ•เจฎเฉˆเจจเฉ‡เจœเจฐ เจ…เจธเจฟเฉฐเจ•เจฐเฉ‹เจจเจธ เจ•เฉฐเจฎ เจฒเจˆ, เจ•เจพเจฐเจœ เจคเฉ‹เจ‚ เจกเฉ‡เจŸเจพ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจตเจฟเจงเฉ€ เจœเฉ‹เฉœ เจ•เฉ‡ เจ‡เจธ เจฌเจพเจฐเฉ‡ เจšเฉˆเฉฑเจ•เจฎเจพเจฐเจ•เจธ เจจเฉ‚เฉฐ เจธเฉ‚เจšเจฟเจค เจ•เจฐเจจเจพ เจ‡เฉฑเจ• เจšเฉฐเจ—เจพ เจตเจฟเจšเจพเจฐ เจนเฉˆเฅค getInputData:

FindAndroidRead

// ะŸะพะปัƒั‡ะฐะตะผ ั€ะตะทัƒะปัŒั‚ะฐั‚ ะฒั‹ะฟะพะปะฝะตะฝะธั ะฑะฐะทะพะฒะพะณะพ ะฟั€ะฐะฒะธะปะฐ
result = base.Find_Android_Read();

// ะ”ะพะฟะพะปะฝัะตะผ ะฒั‹ะทะพะฒะพะผ ั„ัƒะฝะบั†ะธะธ getInputData, ะบะพั‚ะพั€ะฐั ะธัะฟะพะปัŒะทัƒะตั‚ัั ะฒ WorkManager
CxList getInputData = All.FindByShortName("getInputData");

// ะ”ะพะฑะฐะฒะปัะตะผ ะบ ะบะพะฝะตั‡ะฝะพะผัƒ ั€ะตะทัƒะปัŒั‚ะฐั‚ัƒ
result.Add(getInputData.GetMembersOfTarget());

เจšเฉเจฃเฉŒเจคเฉ€: เจ†เจˆเจ“เจเจธ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸเจพเจ‚ เจฒเจˆ เจชเจฒเจฟเจธเจŸ เจตเจฟเฉฑเจš เจธเฉฐเจตเฉ‡เจฆเจจเจธเจผเฉ€เจฒ เจกเฉ‡เจŸเจพ เจฆเฉ€ เจ–เฉ‹เจœ เจ•เฉ€เจคเฉ€ เจœเจพ เจฐเจนเฉ€ เจนเฉˆ

เจนเฉฑเจฒ: iOS เจ…เจ•เจธเจฐ เจตเฉฑเจ–-เจตเฉฑเจ– เจตเฉ‡เจฐเฉ€เจเจฌเจฒเจพเจ‚ เจ…เจคเฉ‡ เจฎเฉเฉฑเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจธเจŸเฉ‹เจฐ เจ•เจฐเจจ เจฒเจˆ .plist เจเจ•เจธเจŸเฉˆเจ‚เจธเจผเจจ เจจเจพเจฒ เจตเจฟเจธเจผเฉ‡เจธเจผ เจซเจพเจˆเจฒเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจ‡เจนเจจเจพเจ‚ เจซเจพเจˆเจฒเจพเจ‚ เจตเจฟเฉฑเจš เจชเจพเจธเจตเจฐเจก, เจŸเฉ‹เจ•เจจ, เจ•เฉเฉฐเจœเฉ€เจ†เจ‚ เจ…เจคเฉ‡ เจนเฉ‹เจฐ เจธเฉฐเจตเฉ‡เจฆเจจเจธเจผเฉ€เจฒ เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจธเจŸเฉ‹เจฐ เจ•เจฐเจจ เจฆเฉ€ เจธเจฟเจซเจพเจฐเจธเจผ เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ‡เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจฌเจฟเจจเจพเจ‚ เจ•เจฟเจธเฉ‡ เจธเจฎเฉฑเจธเจฟเจ† เจฆเฉ‡ เจกเจฟเจตเจพเจˆเจธ เจคเฉ‹เจ‚ เจเจ•เจธเจŸเจฐเฉˆเจ•เจŸ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค

เจชเจฒเจฟเจธเจŸ เจซเจพเจˆเจฒเจพเจ‚ เจตเจฟเฉฑเจš เจ…เจœเจฟเจนเฉ€เจ†เจ‚ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจนเจจ เจœเฉ‹ เจจเฉฐเจ—เฉ€ เจ…เฉฑเจ– เจฒเจˆ เจธเจชเฉฑเจธเจผเจŸ เจจเจนเฉ€เจ‚ เจนเจจ, เจชเจฐ เจšเฉˆเฉฑเจ•เจฎเจพเจฐเจ•เจธ เจฒเจˆ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจนเจจเฅค เจ†เจ“ เจ‡เฉฑเจ• เจจเจฟเจฏเจฎ เจฒเจฟเจ–เฉ€เจ เจœเฉ‹ เจธเจพเจจเฉ‚เฉฐ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ‡ เจกเฉ‡เจŸเจพ เจฆเฉ€ เจ–เฉ‹เจœ เจ•เจฐเฉ‡เจ—เจพ เจ…เจคเฉ‡ เจธเจพเจจเฉ‚เฉฐ เจฆเฉฑเจธเฉ‡เจ—เจพ เจ•เจฟ เจ•เฉ€ เจชเจพเจธเจตเจฐเจก เจœเจพเจ‚ เจŸเฉ‹เจ•เจจเจพเจ‚ เจฆเจพ เจ•เจฟเจคเฉ‡ เจœเจผเจฟเจ•เจฐ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค

เจ…เจœเจฟเจนเฉ€ เจซเจพเจˆเจฒ เจฆเฉ€ เจ‡เฉฑเจ• เจ‰เจฆเจพเจนเจฐเจฃ, เจœเจฟเจธ เจตเจฟเฉฑเจš เจฌเฉˆเจ•เจเจ‚เจก เจธเฉ‡เจตเจพ เจจเจพเจฒ เจธเฉฐเจšเจพเจฐ เจฒเจˆ เจ‡เฉฑเจ• เจŸเฉ‹เจ•เจจ เจนเฉˆ:

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

เจšเฉเจฃเฉŒเจคเฉ€: XML เจตเจฟเฉฑเจš เจœเจพเจฃเจ•เจพเจฐเฉ€ เจฒเฉฑเจญเจฃเจพ

เจนเฉฑเจฒ: XML เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจ เจ…เจคเฉ‡ เจฎเฉเฉฑเจฒเจพเจ‚, เจŸเฉˆเจ—เจธ, เจ—เฉเจฃเจพเจ‚ เจ…เจคเฉ‡ เจนเฉ‹เจฐ เจฌเจนเฉเจค เจ•เฉเจ เจฆเฉ€ เจ–เฉ‹เจœ เจ•เจฐเจจ เจฒเจˆ เจšเฉˆเฉฑเจ•เจฎเจพเจฐเจ•เจธ เจตเจฟเฉฑเจš เจฌเจนเฉเจค เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจซเฉฐเจ•เจธเจผเจจ เจนเจจเฅค เจชเจฐ, เจฌเจฆเจ•เจฟเจธเจฎเจคเฉ€ เจจเจพเจฒ, เจฆเจธเจคเจพเจตเฉ‡เจœเจผ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจ—เจฒเจคเฉ€ เจธเฉ€ เจœเจฟเจธ เจ•เจพเจฐเจจ เจ‡เฉฑเจ• เจตเฉ€ เจ‰เจฆเจพเจนเจฐเจฃ เจ•เฉฐเจฎ เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเฉ€เฅค เจ‡เจธ เจคเฉฑเจฅ เจฆเฉ‡ เจฌเจพเจตเจœเฉ‚เจฆ เจ•เจฟ เจฆเจธเจคเจพเจตเฉ‡เจœเจผเจพเจ‚ เจฆเฉ‡ เจจเจตเฉ€เจจเจคเจฎ เจธเฉฐเจธเจ•เจฐเจฃ เจตเจฟเฉฑเจš เจ‡เจธ เจจเฉเจ•เจธ เจจเฉ‚เฉฐ เจ–เจคเจฎ เจ•เจฐ เจฆเจฟเฉฑเจคเจพ เจ—เจฟเจ† เจนเฉˆ, เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ เจฆเจธเจคเจพเจตเฉ‡เจœเจผเจพเจ‚ เจฆเฉ‡ เจชเฉเจฐเจพเจฃเฉ‡ เจธเฉฐเจธเจ•เจฐเจฃเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹ เจคเจพเจ‚ เจธเจพเจตเจงเจพเจจ เจฐเจนเฉ‹เฅค

เจ‡เฉฑเจฅเฉ‡ เจฆเจธเจคเจพเจตเฉ‡เจœเจผเจพเจ‚ เจคเฉ‹เจ‚ เจ‡เฉฑเจ• เจ—เจฒเจค เจ‰เจฆเจพเจนเจฐเจจ เจนเฉˆ:

// ะšะพะด ั€ะฐะฑะพั‚ะฐั‚ัŒ ะฝะต ะฑัƒะดะตั‚
result = All.FindXmlAttributesByNameAndValue("*.app", 8, โ€œidโ€, "error- section", false, true);

เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจธเจผเจจ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจฆเฉ‡ เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚, เจธเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจ—เจฒเจคเฉ€ เจชเฉเจฐเจพเจชเจค เจนเฉ‹เจตเฉ‡เจ—เฉ€ All เจ…เจœเจฟเจนเจพ เจ•เฉ‹เจˆ เจคเจฐเฉ€เจ•เจพ เจจเจนเฉ€เจ‚ เจนเฉˆ... เจ…เจคเฉ‡ เจ‡เจน เจธเฉฑเจš เจนเฉˆ, เจ•เจฟเจ‰เจ‚เจ•เจฟ XML เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฒเจˆ เจซเฉฐเจ•เจธเจผเจจเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจตเจฟเจธเจผเฉ‡เจธเจผ, เจตเฉฑเจ–เจฐเฉ€ เจ†เจฌเจœเฉˆเจ•เจŸ เจธเจชเฉ‡เจธ เจนเฉˆ - cxXPath. เจเจ‚เจกเจฐเฉŒเจ‡เจก เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจธเฉˆเจŸเจฟเฉฐเจ— เจฒเฉฑเจญเจฃ เจฒเจˆ เจธเจนเฉ€ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจ‡เจน เจนเฉˆ เจœเฉ‹ HTTP เจŸเฉเจฐเฉˆเจซเจฟเจ• เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจฆเฉ€ เจ†เจ—เจฟเจ† เจฆเจฟเฉฐเจฆเฉ€ เจนเฉˆ:

// ะŸั€ะฐะฒะธะปัŒะฝั‹ะน ะฒะฐั€ะธะฐะฝั‚ ั ะธัะฟะพะปัŒะทะพะฒะฐะฝะธะตะผ cxXPath
result = cxXPath.FindXmlAttributesByNameAndValue("*.xml", 8, "cleartextTrafficPermitted", "true", false, true);

เจ†เจ‰ เจ‡เจธ เจจเฉ‚เฉฐ เจฅเฉ‹เฉœเจพ เจนเฉ‹เจฐ เจตเจฟเจธเจฅเจพเจฐ เจตเจฟเฉฑเจš เจตเฉ‡เจ–เฉ€เจ, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจธเจพเจฐเฉ‡ เจซเฉฐเจ•เจธเจผเจจเจพเจ‚ เจฒเจˆ เจธเฉฐเจŸเฉˆเจ•เจธ เจธเจฎเจพเจจ เจนเฉˆ, เจœเจฆเฉ‹เจ‚ เจคเฉเจธเฉ€เจ‚ เจ‡เฉฑเจ• เจฆเจพ เจชเจคเจพ เจฒเจ—เจพ เจฒเจฟเจ† เจนเฉˆ, เจคเจพเจ‚ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจธเจฟเจฐเจซเจผ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ‡ เจ‡เฉฑเจ• เจจเฉ‚เฉฐ เจšเฉเจฃเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค เจ‡เจธ เจฒเจˆ, เจ•เฉเจฐเจฎเจตเจพเจฐ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐเจพเจ‚ เจฆเฉ‡ เจ…เจจเฉเจธเจพเจฐ:

  • "*.xml"- เจ–เฉ‹เจœเฉ€เจ†เจ‚ เจœเจพเจฃ เจตเจพเจฒเฉ€เจ†เจ‚ เจซเจพเจˆเจฒเจพเจ‚ เจฆเจพ เจฎเจพเจธเจ•

  • 8 โ€” เจ‰เจธ เจญเจพเจธเจผเจพ เจฆเฉ€ เจ†เจˆเจกเฉ€ เจœเจฟเจธ เจฒเจˆ เจจเจฟเจฏเจฎ เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ

  • "cleartextTrafficPermitted"- xml เจตเจฟเฉฑเจš เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพ เจฆเจพ เจจเจพเจฎ

  • "true" โ€” เจ‡เจธ เจ—เฉเจฃ เจฆเจพ เจฎเฉเฉฑเจฒ

  • false - เจ–เฉ‹เจœ เจ•เจฐเจฆเฉ‡ เจธเจฎเฉ‡เจ‚ เจจเจฟเจฏเจฎเจค เจธเจฎเฉ€เจ•เจฐเจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚

  • true โ€” เจฆเจพ เจฎเจคเจฒเจฌ เจนเฉˆ เจ•เจฟ เจ–เฉ‹เจœ เจ•เฉ‡เจธ เจจเฉ‚เฉฐ เจจเจœเจผเจฐเจ…เฉฐเจฆเจพเจœเจผ เจ•เจฐเจ•เฉ‡ เจ•เฉ€เจคเฉ€ เจœเจพเจตเฉ‡เจ—เฉ€, เจฏเจพเจจเฉ€ เจ•เฉ‡เจธ-เจธเฉฐเจตเฉ‡เจฆเจจเจธเจผเฉ€เจฒ

เจ‡เฉฑเจ• เจ‰เจฆเจพเจนเจฐเจจ เจฆเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡, เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจจเจฟเจฏเจฎ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เฉ€เจคเฉ€ เจนเฉˆ เจœเฉ‹ เจ—เจฒเจค เจฆเฉ€ เจชเจ›เจพเจฃ เจ•เจฐเจฆเจพ เจนเฉˆ, เจธเฉเจฐเฉฑเจ–เจฟเจ† เจฆเฉเจฐเจฟเจธเจผเจŸเฉ€เจ•เฉ‹เจฃ เจคเฉ‹เจ‚, เจเจ‚เจกเจฐเฉŒเจ‡เจก เจตเจฟเฉฑเจš เจจเฉˆเฉฑเจŸเจตเจฐเจ• เจ•เจจเฉˆเจ•เจธเจผเจจ เจธเฉˆเจŸเจฟเฉฐเจ—เจพเจ‚ เจœเฉ‹ 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>

เจšเฉเจฃเฉŒเจคเฉ€: เจซเจพเจˆเจฒ เจจเจพเจฎ/เจชเจพเจฅ เจฆเฉเจ†เจฐเจพ เจจเจคเฉ€เจœเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจธเฉ€เจฎเจฟเจค เจ•เจฐเฉ‹

เจนเฉฑเจฒ: เจเจ‚เจกเจฐเฉŒเจ‡เจก เจฒเจˆ เจ‡เฉฑเจ• เจฎเฉ‹เจฌเจพเจˆเจฒ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฆเฉ‡ เจตเจฟเจ•เจพเจธ เจจเจพเจฒ เจธเจฌเฉฐเจงเจค เจตเฉฑเจกเฉ‡ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• เจตเจฟเฉฑเจš, เจธเจพเจจเฉ‚เฉฐ เจจเจฟเจฏเจฎ เจฆเฉ‡ เจ—เจฒเจค เจธเจ•เจพเจฐเจพเจคเจฎเจ•เจคเจพเจตเจพเจ‚ เจฆเจพ เจธเจพเจนเจฎเจฃเจพ เจ•เจฐเจจเจพ เจชเจฟเจ† เจนเฉˆ เจœเฉ‹ เจ…เจธเจชเจธเจผเจŸเจคเจพ เจธเฉˆเจŸเจฟเฉฐเจ— เจจเฉ‚เฉฐ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจคเฉฑเจฅ เจ‡เจน เจนเฉˆ เจ•เจฟ เจฌเจพเจ•เจธ เจฆเฉ‡ เจฌเจพเจนเจฐ เจจเจฟเจฏเจฎ เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš เจ–เฉ‹เจœ เจ•เจฐเจฆเจพ เจนเฉˆ 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'
  ...
}

เจ…เจคเฉ‡ เจšเฉˆเฉฑเจ•เจฎเจพเจฐเจ•เจธ เจฒเจˆ เจจเจฟเจฏเจฎ:

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

เจ‡เจน เจชเจนเฉเฉฐเจš เจ•เจพเจซเจผเฉ€ เจตเจฟเจ†เจชเจ• เจ…เจคเฉ‡ เจ‰เจชเจฏเฉ‹เจ—เฉ€ เจนเฉ‹ เจธเจ•เจฆเฉ€ เจนเฉˆ เจจเจพ เจธเจฟเจฐเจซเจผ เจเจ‚เจกเจฐเฉŒเจ‡เจก เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจฒเจˆ, เจธเจ—เฉ‹เจ‚ เจนเฉ‹เจฐ เจฎเจพเจฎเจฒเจฟเจ†เจ‚ เจฒเจˆ เจตเฉ€ เจœเจฆเฉ‹เจ‚ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เจน เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจจ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ เจ•เจฟ เจ•เฉ€ เจจเจคเฉ€เจœเจพ เจ•เจฟเจธเฉ‡ เจ–เจพเจธ เจซเจพเจˆเจฒ เจจเจพเจฒ เจธเจฌเฉฐเจงเจค เจนเฉˆเฅค

เจšเฉเจฃเฉŒเจคเฉ€: เจœเฉ‡เจ•เจฐ เจธเฉฐเจŸเฉˆเจ•เจธ เจชเฉ‚เจฐเฉ€ เจคเจฐเฉเจนเจพเจ‚ เจธเจฎเจฐเจฅเจฟเจค เจจเจนเฉ€เจ‚ เจนเฉˆ เจคเจพเจ‚ เจคเฉ€เจœเฉ€ เจงเจฟเจฐ เจฆเฉ€ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจฒเจˆ เจธเจฎเจฐเจฅเจจ เจธเจผเจพเจฎเจฒ เจ•เจฐเฉ‹

เจนเฉฑเจฒ: เจ•เฉ‹เจก เจฒเจฟเจ–เจฃ เจฆเฉ€ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจตเจฟเฉฑเจš เจตเจฐเจคเฉ‡ เจœเจพเจฃ เจตเจพเจฒเฉ‡ เจตเฉฑเจ–-เจตเฉฑเจ– เจซเจฐเฉ‡เจฎเจตเจฐเจ• เจฆเฉ€ เจ—เจฟเจฃเจคเฉ€ เจธเจฟเจฐเจซเจผ เจšเจพเจฐเจŸ เจคเฉ‹เจ‚ เจฌเจพเจนเจฐ เจนเฉˆเฅค เจฌเฉ‡เจธเจผเฉฑเจ•, เจšเฉˆเฉฑเจ•เจฎเจพเจฐเจ•เจธ เจนเจฎเฉ‡เจธเจผเจพ เจ‰เจนเจจเจพเจ‚ เจฆเฉ€ เจนเฉ‹เจ‚เจฆ เจฌเจพเจฐเฉ‡ เจจเจนเฉ€เจ‚ เจœเจพเจฃเจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจธเจพเจกเจพ เจ•เฉฐเจฎ เจ‡เจธเจจเฉ‚เฉฐ เจ‡เจน เจธเจฎเจเจฃเจพ เจธเจฟเจ–เจพเจ‰เจฃเจพ เจนเฉˆ เจ•เจฟ เจ•เฉเจ เจตเจฟเจงเฉ€เจ†เจ‚ เจ–เจพเจธ เจคเฉŒเจฐ 'เจคเฉ‡ เจ‡เจธ เจขเจพเจ‚เจšเฉ‡ เจจเจพเจฒ เจธเจฌเฉฐเจงเจค เจนเจจเฅค เจ•เจˆ เจตเจพเจฐ เจ‡เจน เจ‡เจธ เจคเฉฑเจฅ เจฆเฉเจ†เจฐเจพ เจ—เฉเฉฐเจเจฒเจฆเจพเจฐ เจนเฉเฉฐเจฆเจพ เจนเฉˆ เจ•เจฟ เจซเจฐเฉ‡เจฎเจตเจฐเจ• เจซเฉฐเจ•เจธเจผเจจ เจจเจพเจฎเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเจจ เจœเฉ‹ เจฌเจนเฉเจค เจ†เจฎ เจนเฉเฉฐเจฆเฉ‡ เจนเจจ เจ…เจคเฉ‡ เจ•เจฟเจธเฉ‡ เจ–เจพเจธ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจจเจพเจฒ เจ•เจฟเจธเฉ‡ เจ–เจพเจธ เจ•เจพเจฒ เจฆเฉ‡ เจธเจฌเฉฐเจง เจจเฉ‚เฉฐ เจธเจชเฉฑเจธเจผเจŸ เจคเฉŒเจฐ 'เจคเฉ‡ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจจเจพ เจ…เจธเฉฐเจญเจต เจนเฉเฉฐเจฆเจพ เจนเฉˆเฅค

เจฎเฉเจธเจผเจ•เจฒ เจ‡เจน เจนเฉˆ เจ•เจฟ เจ…เจœเจฟเจนเฉ€เจ†เจ‚ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€เจ†เจ‚ เจฆเฉ‡ เจธเฉฐเจŸเฉˆเจ•เจธ เจจเฉ‚เฉฐ เจนเจฎเฉ‡เจธเจผเจพ เจธเจนเฉ€ เจขเฉฐเจ— เจจเจพเจฒ เจชเจ›เจพเจฃเจฟเจ† เจจเจนเฉ€เจ‚ เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจตเฉฑเจกเฉ€ เจ—เจฟเจฃเจคเฉ€ เจตเจฟเฉฑเจš เจ—เจฒเจค เจธเจ•เจพเจฐเจพเจคเจฎเจ• เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจคเฉ‹เจ‚ เจฌเจšเจฃ เจฒเจˆ เจชเฉเจฐเจฏเฉ‹เจ— เจ•เจฐเจจเจพ เจชเฉˆเจ‚เจฆเจพ เจนเฉˆเฅค เจธเจ•เฉˆเจจเจฟเฉฐเจ— เจธเจผเฉเฉฑเจงเจคเจพ เจตเจฟเฉฑเจš เจธเฉเจงเจพเจฐ เจ•เจฐเจจ เจ…เจคเฉ‡ เจธเจฎเฉฑเจธเจฟเจ† เจจเฉ‚เฉฐ เจนเฉฑเจฒ เจ•เจฐเจจ เจฒเจˆ เจ•เจˆ เจตเจฟเจ•เจฒเจช เจนเจจ:

  • เจชเจนเจฟเจฒเจพ เจตเจฟเจ•เจฒเจช, เจ…เจธเฉ€เจ‚ เจฏเจ•เฉ€เจจเฉ€ เจคเฉŒเจฐ 'เจคเฉ‡ เจœเจพเจฃเจฆเฉ‡ เจนเจพเจ‚ เจ•เจฟ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ‡เฉฑเจ• เจ–เจพเจธ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจตเจฟเฉฑเจš เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ เจ…เจคเฉ‡ เจŸเฉ€เจฎ เจชเฉฑเจงเจฐ 'เจคเฉ‡ เจจเจฟเจฏเจฎ เจฒเจพเจ—เฉ‚ เจ•เจฐ เจธเจ•เจฆเฉ€ เจนเฉˆเฅค เจชเจฐ เจœเฉ‡เจ•เจฐ เจŸเฉ€เจฎ เจ‡เฉฑเจ• เจตเฉฑเจ–เจฐเฉ€ เจชเจนเฉเฉฐเจš เจ…เจชเจฃเจพเจ‰เจฃ เจฆเจพ เจซเฉˆเจธเจฒเจพ เจ•เจฐเจฆเฉ€ เจนเฉˆ เจœเจพเจ‚ เจ•เจˆ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€เจ†เจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ€ เจนเฉˆ เจœเจฟเจธ เจตเจฟเฉฑเจš เจซเฉฐเจ•เจธเจผเจจ เจฆเฉ‡ เจจเจพเจฎ เจ“เจตเจฐเจฒเฉˆเจช เจนเฉเฉฐเจฆเฉ‡ เจนเจจ, เจคเจพเจ‚ เจ…เจธเฉ€เจ‚ เจฌเจนเฉเจค เจธเจพเจฐเฉ€เจ†เจ‚ เจเฉ‚เจ เฉ€เจ†เจ‚ เจธเจ•เจพเจฐเจพเจคเจฎเจ•เจคเจพเจตเจพเจ‚ เจฆเฉ€ เจ‡เฉฑเจ• เจฌเจนเฉเจค เจนเฉ€ เจธเฉเจนเจพเจตเจฃเฉ€ เจคเจธเจตเฉ€เจฐ เจชเฉเจฐเจพเจชเจค เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚เฅค

  • เจฆเฉ‚เจœเจพ เจตเจฟเจ•เจฒเจช เจ‰เจนเจจเจพเจ‚ เจซเจพเจˆเจฒเจพเจ‚ เจฆเฉ€ เจ–เฉ‹เจœ เจ•เจฐเจจเจพ เจนเฉˆ เจœเจฟเจธ เจตเจฟเฉฑเจš เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจธเจชเจธเจผเจŸ เจคเฉŒเจฐ 'เจคเฉ‡ เจ†เจฏเจพเจค เจ•เฉ€เจคเฉ€ เจ—เจˆ เจนเฉˆเฅค เจ‡เจธ เจชเจนเฉเฉฐเจš เจจเจพเจฒ, เจ…เจธเฉ€เจ‚ เจจเจฟเจธเจผเจšเจค เจนเฉ‹ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚ เจ•เจฟ เจธเจพเจจเฉ‚เฉฐ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ€ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจ‡เจธ เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš เจฌเจฟเจฒเจ•เฉเจฒ เจตเจฐเจคเฉ€ เจ—เจˆ เจนเฉˆเฅค

  • เจ…เจคเฉ‡ เจคเฉ€เจœเจพ เจตเจฟเจ•เจฒเจช เจ‰เจชเจฐเฉ‹เจ•เจค เจฆเฉ‹เจจเจพเจ‚ เจชเจนเฉเฉฐเจšเจพเจ‚ เจจเฉ‚เฉฐ เจ‡เจ•เฉฑเจ เฉ‡ เจตเจฐเจคเจฃเจพ เจนเฉˆเฅค

เจ‡เฉฑเจ• เจ‰เจฆเจพเจนเจฐเจจ เจฆเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡, เจ†เจ“ เจ‡เฉฑเจ• เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจจเฉ‚เฉฐ เจตเฉ‡เจ–เฉ€เจ เจœเฉ‹ เจคเฉฐเจ— เจšเฉฑเจ•เจฐเจพเจ‚ เจตเจฟเฉฑเจš เจšเฉฐเจ—เฉ€ เจคเจฐเฉเจนเจพเจ‚ เจœเจพเจฃเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ เจšเฉเจธเจค เจธเจ•เฉ‡เจฒเจพ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎเจฟเฉฐเจ— เจญเจพเจธเจผเจพ เจฒเจˆ, เจ…เจฐเจฅเจพเจค, เจ•เจพเจฐเจœเจธเจผเฉ€เจฒเจคเจพ เจธเจผเจพเจฌเจฆเจฟเจ• เจฎเฉเฉฑเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจตเฉฐเจกเจฃเจพ. เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡, เจ•เจฟเจธเฉ‡ SQL เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจฒเจˆ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจชเจพเจธ เจ•เจฐเจจ เจฒเจˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ†เจชเจฐเฉ‡เจŸเจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเฉ€ เจšเจพเจนเฉ€เจฆเฉ€ เจนเฉˆ $, เจœเฉ‹ เจ•เจฟ เจ‡เฉฑเจ• เจชเฉเจฐเฉ€เจซเจพเจฐเจฎเจก SQL เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจตเจฟเฉฑเจš เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจฌเจฆเจฒเจฆเจพ เจนเฉˆเฅค เจญเจพเจต, เจ…เจธเจฒ เจตเจฟเฉฑเจš, เจ‡เจน Java เจตเจฟเฉฑเจš เจคเจฟเจ†เจฐ เจธเจŸเฉ‡เจŸเจฎเฉˆเจ‚เจŸ เจฆเจพ เจธเจฟเฉฑเจงเจพ เจเจจเจพเจฒเจพเจ— เจนเฉˆเฅค เจชเจฐ, เจœเฉ‡เจ•เจฐ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• SQL เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจจเฉ‚เฉฐ เจ—เจคเฉ€เจธเจผเฉ€เจฒ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ, เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจœเฉ‡เจ•เจฐ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจธเจพเจฐเจฃเฉ€ เจฆเฉ‡ เจจเจพเจฎ เจชเจพเจธ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ, เจคเจพเจ‚ เจคเฉเจธเฉ€เจ‚ เจ“เจชเจฐเฉ‡เจŸเจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ #$, เจœเฉ‹ เจธเจฟเฉฑเจงเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจตเจฟเฉฑเจš เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจฌเจฆเจฒ เจฆเฉ‡เจตเฉ‡เจ—เจพ (เจฒเจ—เจญเจ— เจธเจคเจฐ เจœเฉ‹เฉœเจจ เจตเจพเจ‚เจ—)เฅค

เจจเจฎเฉ‚เจจเจพ เจ•เฉ‹เจก:

// ะ’ ะพะฑั‰ะตะผ ัะปัƒั‡ะฐะต - ะทะฝะฐั‡ะตะฝะธั, ะบะพะฝั‚ั€ะพะปะธั€ัƒะตะผั‹ะต ะฟะพะปัŒะทะพะฒะฐั‚ะตะปะตะผ
val table = "coffees"
sql"select * from #$table where name = $name".as[Coffee].headOption

เจšเฉˆเจ•เจฎเจพเจฐเจ•เจธ เจจเฉ‚เฉฐ เจ…เจœเฉ‡ เจคเฉฑเจ• เจ‡เจน เจจเจนเฉ€เจ‚ เจชเจคเจพ เจนเฉˆ เจ•เจฟ เจธเจชเจฒเฉ€เจธเจฟเฉฐเจ— เจฒเจฟเจŸเจฐเจฒ เจตเฉˆเจฒเจฏเฉ‚เจœเจผ เจ…เจคเฉ‡ เจธเจ•เจฟเฉฑเจช เจ“เจชเจฐเฉ‡เจŸเจฐเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจ–เฉ‹เจœเจฃเจพ เจนเฉˆ #$, เจคเจพเจ‚ เจ†เจ“ เจ‡เจธเจจเฉ‚เฉฐ เจธเฉฐเจญเจพเจตเฉ€ 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-เจชเจฟเจจเจฟเฉฐเจ— เจฆเฉ€ เจชเฉเจธเจผเจŸเฉ€ เจ•เจฐเจจ เจฒเจˆ เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ เจœเจพเจ‚ เจ•เฉเฉฐเจœเฉ€เจ†เจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ เจ…เจธเจงเจพเจฐเจจ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค เจธเฉเจฐเฉฑเจ–เจฟเจ† เจฆเฉ‡ เจจเจœเจผเจฐเฉ€เจ เจคเฉ‹เจ‚, เจ•เฉ‹เจก เจตเจฟเฉฑเจš เจ…เจœเจฟเจนเฉ€เจ†เจ‚ เจšเฉ€เจœเจผเจพเจ‚ เจจเฉ‚เฉฐ เจธเจŸเฉ‹เจฐ เจ•เจฐเจจเจพ เจธเจญ เจคเฉ‹เจ‚ เจตเจงเฉ€เจ† เจ…เจญเจฟเจ†เจธ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค เจ†เจ‰ เจ‡เฉฑเจ• เจจเจฟเจฏเจฎ เจฒเจฟเจ–เจฃ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐเฉ€เจ เจœเฉ‹ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจธเจฎเจพเจจ เจซเจพเจˆเจฒเจพเจ‚ เจฆเฉ€ เจ–เฉ‹เจœ เจ•เจฐเฉ‡เจ—เจพ:

// ะะฐะนะดะตะผ ะฒัะต ัะตั€ั‚ะธั„ะธะบะฐั‚ั‹ ะฟะพ ะผะฐัะบะต ั„ะฐะนะปะฐ
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");

เจธเจฟเฉฑเจŸเจพ

เจฎเฉˆเจจเฉ‚เฉฐ เจ‰เจฎเฉ€เจฆ เจนเฉˆ เจ•เจฟ เจ‡เจน เจฒเฉ‡เจ– เจ‰เจนเจจเจพเจ‚ เจฒเจˆ เจฒเจพเจญเจฆเจพเจ‡เจ• เจนเฉ‹เจตเฉ‡เจ—เจพ เจœเฉ‹ เจšเฉˆเฉฑเจ•เจฎเจพเจฐเจ•เจธ เจŸเฉ‚เจฒ เจจเจพเจฒ เจ†เจชเจฃเฉ€ เจœเจพเจฃ-เจชเจ›เจพเจฃ เจธเจผเฉเจฐเฉ‚ เจ•เจฐ เจฐเจนเฉ‡ เจนเจจเฅค เจธเจผเจพเจ‡เจฆ เจœเจฟเจนเฉœเฉ‡ เจฒเฉ‹เจ• เจฒเฉฐเจฌเฉ‡ เจธเจฎเฉ‡เจ‚ เจคเฉ‹เจ‚ เจ†เจชเจฃเฉ‡ เจจเจฟเจฏเจฎ เจฒเจฟเจ– เจฐเจนเฉ‡ เจนเจจ, เจ‰เจจเฉเจนเจพเจ‚ เจจเฉ‚เฉฐ เจตเฉ€ เจ‡เจธ เจ—เจพเจˆเจก เจตเจฟเฉฑเจš เจ•เฉเจ เจฒเจพเจญเจฆเจพเจ‡เจ• เจฒเฉฑเจ—เฉ‡เจ—เจพเฅค

เจฌเจฆเจ•เจฟเจธเจฎเจคเฉ€ เจจเจพเจฒ, เจตเจฐเจคเจฎเจพเจจ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจธเจฐเฉ‹เจค เจฆเฉ€ เจ˜เจพเจŸ เจนเฉˆ เจœเจฟเฉฑเจฅเฉ‡ เจšเฉˆเฉฑเจ•เจฎเจพเจฐเจ•เจธ เจฒเจˆ เจจเจฟเจฏเจฎเจพเจ‚ เจฆเฉ‡ เจตเจฟเจ•เจพเจธ เจฆเฉŒเจฐเจพเจจ เจจเจตเฉ‡เจ‚ เจตเจฟเจšเจพเจฐ เจ‡เจ•เฉฑเจ เฉ‡ เจ•เฉ€เจคเฉ‡ เจœเจพ เจธเจ•เจฆเฉ‡ เจนเจจเฅค เจ‡เจธ เจฒเจˆ เจ…เจธเฉ€เจ‚ เจฌเจฃเจพเจ‡เจ† เจนเฉˆ Github 'เจคเฉ‡ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€, เจœเจฟเฉฑเจฅเฉ‡ เจ…เจธเฉ€เจ‚ เจ†เจชเจฃเจพ เจ•เฉฐเจฎ เจชเฉ‹เจธเจŸ เจ•เจฐเจพเจ‚เจ—เฉ‡ เจคเจพเจ‚ เจœเฉ‹ CxQL เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจตเจพเจฒเฉ‡ เจนเจฐ เจตเจฟเจ…เจ•เจคเฉ€ เจจเฉ‚เฉฐ เจ‡เจธ เจตเจฟเฉฑเจš เจ•เฉเจ เจฒเจพเจญเจฆเจพเจ‡เจ• เจฒเฉฑเจญ เจธเจ•เฉ‡, เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ†เจชเจฃเฉ‡ เจ•เฉฐเจฎ เจจเฉ‚เฉฐ เจ•เจฎเจฟเจŠเจจเจฟเจŸเฉ€ เจจเจพเจฒ เจธเจพเจ‚เจเจพ เจ•เจฐเจจ เจฆเจพ เจฎเฉŒเจ•เจพ เจตเฉ€ เจฎเจฟเจฒเฉ‡เฅค เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจธเจฎเฉฑเจ—เจฐเฉ€ เจจเฉ‚เฉฐ เจญเจฐเจจ เจ…เจคเฉ‡ เจขเจพเจ‚เจšเจพ เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจตเจฟเฉฑเจš เจนเฉˆ, เจ‡เจธ เจฒเจˆ เจฏเฉ‹เจ—เจฆเจพเจจ เจชเจพเจ‰เจฃ เจตเจพเจฒเจฟเจ†เจ‚ เจฆเจพ เจธเฉเจ†เจ—เจค เจนเฉˆ!

เจคเฉเจนเจพเจกเฉ‡ เจงเจฟเจ†เจจ เจฒเจˆ เจงเฉฐเจจเจตเจพเจฆ!

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹