เดญเตเดฐเดพเดจเตเดคเต เดชเดฟเดŸเดฟเด•เตเด•เดพเดคเต† เดšเต†เด•เตเด•เตเดฎเดพเตผเด•เตเดธเดฟเดจเดพเดฏเดฟ เดŽเด™เตเด™เดจเต† เดจเดฟเดฏเดฎเด™เตเด™เตพ เดŽเดดเตเดคเดพเด‚

เดนเต‡ เดนเดฌเตผ!

เดžเด™เตเด™เดณเตเดŸเต† เดœเต‹เดฒเดฟเดฏเดฟเตฝ, เดžเด™เตเด™เดณเตเดŸเต† เด•เดฎเตเดชเดจเดฟ เดชเดฒเดชเตเดชเต‹เดดเตเด‚ เดตเดฟเดตเดฟเดง เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเด•เต เด•เต‹เดกเต เดตเดฟเดถเด•เดฒเดจ เดŸเต‚เดณเตเด•เตพ (SAST) เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เดฌเต‹เด•เตโ€Œเดธเดฟเดจเต เดชเตเดฑเดคเตเดคเต เด…เดตเดฏเต†เดฒเตเดฒเดพเด‚ เดถเดฐเดพเดถเดฐเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต. เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚, เด‡เดคเต†เดฒเตเดฒเดพเด‚ เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเดจเต†เดฏเตเด‚ เด…เดคเดฟเตฝ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เดธเดพเด™เตเด•เต‡เดคเดฟเด•เดตเดฟเดฆเตเดฏเด•เดณเต†เดฏเตเด‚ เด†เดถเตเดฐเดฏเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเตเดชเต‹เดฒเต† เดคเดจเตเดจเต† เดˆ เดธเดพเด™เตเด•เต‡เดคเดฟเด•เดตเดฟเดฆเตเดฏเด•เตพ เดตเดฟเดถเด•เดฒเดจ เดจเดฟเดฏเดฎเด™เตเด™เตพ เดŽเดคเตเดฐเดคเตเดคเต‹เดณเด‚ เด‰เตพเด•เตเด•เตŠเดณเตเดณเตเดจเตเดจเต เดŽเดจเตเดจเดคเดฟเดจเต† เด†เดถเตเดฐเดฏเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เดŽเดจเตเดฑเต† เด…เดญเดฟเดชเตเดฐเดพเดฏเดคเตเดคเดฟเตฝ, เด’เดฐเต SAST เดŸเต‚เตพ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เตเดฎเตเดชเต‹เตพ เดเดฑเตเดฑเดตเตเด‚ เดชเตเดฐเดงเดพเดจเดชเตเดชเต†เดŸเตเดŸ เด’เดฐเต เดฎเดพเดจเดฆเดฃเตเดกเด‚ เดจเดฟเด™เตเด™เดณเตเดŸเต† เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เดณเตเดŸเต† เดชเตเดฐเดคเตเดฏเต‡เด•เดคเด•เดณเดฟเดฒเต‡เด•เตเด•เต เด…เดคเต เด‡เดšเตเด›เดพเดจเตเดธเตƒเดคเดฎเดพเด•เตเด•เดพเดจเตเดณเตเดณ เด•เดดเดฟเดตเดพเดฃเต, เด…เดคเดพเดฏเดคเต, เดตเดฟเดถเด•เดฒเดจ เดจเดฟเดฏเดฎเด™เตเด™เตพ เดŽเดดเตเดคเตเด•เดฏเตเด‚ เดฎเดพเดฑเตเดฑเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด• เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ, เด…เดต เดชเดฒเดชเตเดชเต‹เดดเตเด‚ เดตเดฟเดณเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจเดคเตเดชเต‹เดฒเต†, เด‡เดทเตโ€ŒเดŸเดพเดจเตเดธเตƒเดค เด…เดจเตเดตเต‡เดทเดฃเด™เตเด™เตพ.

เดญเตเดฐเดพเดจเตเดคเต เดชเดฟเดŸเดฟเด•เตเด•เดพเดคเต† เดšเต†เด•เตเด•เตเดฎเดพเตผเด•เตเดธเดฟเดจเดพเดฏเดฟ เดŽเด™เตเด™เดจเต† เดจเดฟเดฏเดฎเด™เตเด™เตพ เดŽเดดเตเดคเดพเด‚

เดžเด™เตเด™เตพ เดฎเดฟเด•เตเด•เดชเตเดชเต‹เดดเตเด‚ เดšเต†เด•เตเด•เตเดฎเดพเตผเด•เตเดธเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต - เดตเดณเดฐเต† เดฐเดธเด•เดฐเดตเตเด‚ เดถเด•เตเดคเดตเตเดฎเดพเดฏ เด•เต‹เดกเต เด…เดจเดฒเตˆเดธเตผ. เดˆ เดฒเต‡เด–เดจเดคเตเดคเดฟเตฝ เดžเดพเตป เด…เดคเดฟเดจเดพเดฏเดฟ เดตเดฟเดถเด•เดฒเดจ เดจเดฟเดฏเดฎเด™เตเด™เตพ เดŽเดดเตเดคเดฟเดฏเดคเดฟเดจเตเดฑเต† เด…เดจเตเดญเดตเดคเตเดคเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดธเด‚เดธเดพเดฐเดฟเด•เตเด•เตเด‚.

เด‰เดณเตเดณเดŸเด•เตเด• เดชเดŸเตเดŸเดฟเด•

เดŽเตปเดŸเตเดฐเดฟ

เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เดšเต†เด•เตเด•เตเดฎเดพเตผเด•เตโ€Œเดธเดฟเดจเดพเดฏเดฟ เดšเต‹เดฆเตเดฏเด™เตเด™เตพ เดŽเดดเตเดคเตเดจเตเดจเดคเดฟเดจเตเดฑเต† เดธเดตเดฟเดถเต‡เดทเดคเด•เดณเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดฑเดทเตเดฏเตป เดญเดพเดทเดฏเดฟเดฒเตเดณเตเดณ เด•เตเดฑเดšเตเดšเต เดฒเต‡เด–เดจเด™เตเด™เดณเดฟเตฝ เด’เดจเตเดจเต เดถเตเดชเดพเตผเดถ เดšเต†เดฏเตเดฏเดพเตป เดžเดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต. เด‡เดคเต 2019 เด…เดตเดธเดพเดจเด‚ เดนเดฌเตเดฐเต† เดŽเดจเตเดจ เดชเต‡เดฐเดฟเตฝ เดชเตเดฐเดธเดฟเดฆเตเดงเต€เด•เดฐเดฟเดšเตเดšเต: "เดนเดฒเต‹, เดšเต†เด•เตเด•เตเดฎเดพเตผเด•เตเดธเต!" เด’เดฐเต เดšเต†เด•เตเด•เตเดฎเดพเตผเด•เตโ€Œเดธเต SAST เด…เดจเตเดตเต‡เดทเดฃเด‚ เดŽเด™เตเด™เดจเต† เดŽเดดเตเดคเดพเด‚, เด•เต‚เดŸเดพเดคเต† เดฐเดธเด•เดฐเดฎเดพเดฏ เด•เต‡เดŸเตเดชเดพเดŸเตเด•เตพ เด•เดฃเตเดŸเต†เดคเตเดคเดพเด‚.

เดšเดฟเดฒ เดŸเต†เดธเตเดฑเตเดฑเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพเด•เตเด•เดพเดฏเดฟ CxQL-เตฝ (Checkmarx Query Language) เด†เดฆเตเดฏ เดšเต‹เดฆเตเดฏเด™เตเด™เตพ เดŽเด™เตเด™เดจเต† เดŽเดดเตเดคเดพเดฎเต†เดจเตเดจเต เด‡เดคเต เดตเดฟเดถเดฆเดฎเดพเดฏเดฟ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจเต, เด•เต‚เดŸเดพเดคเต† เดตเดฟเดถเด•เดฒเดจ เดจเดฟเดฏเดฎเด™เตเด™เตพ เดŽเด™เตเด™เดจเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต เดŽเดจเตเดจเดคเดฟเดจเตเดฑเต† เด…เดŸเดฟเดธเตเดฅเดพเดจ เดคเดคเตเดตเด™เตเด™เตพ เด•เดพเดฃเดฟเด•เตเด•เตเดจเตเดจเต.

เด…เดคเดฟเตฝ เดตเดฟเดตเดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต เดžเดพเตป เด†เดตเตผเดคเตเดคเดฟเด•เตเด•เดฟเดฒเตเดฒ, เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚ เดšเดฟเดฒ เด•เดตเดฒเด•เตพ เด‡เดชเตเดชเต‹เดดเตเด‚ เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚. เดŽเดจเตเดฑเต† เดฒเต‡เด–เดจเดคเตเดคเดฟเตฝ, เดšเต†เด•เตเด•เตเดฎเดพเตผเด•เตเดธเตเดฎเดพเดฏเตเดณเตเดณ เดŽเดจเตเดฑเต† เดœเต‹เดฒเดฟเดฏเดฟเตฝ เดžเดพเตป เดจเต‡เดฐเดฟเดŸเตเดŸ เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเดŸ เดชเตเดฐเดถเตเดจเด™เตเด™เตพเด•เตเด•เตเดณเตเดณ เดชเดฐเดฟเดนเดพเดฐเด™เตเด™เดณเตเดŸเต† เด’เดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต "เดชเดพเดšเด•เด™เตเด™เดณเตเดŸเต† เดถเต‡เด–เดฐเด‚" เดธเดฎเดพเดนเดฐเดฟเด•เตเด•เดพเตป เดžเดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เตเด‚. เดˆ เดชเตเดฐเดถเตโ€Œเดจเด™เตเด™เดณเดฟเตฝ เดชเดฒเดคเดฟเดฒเตเด‚ เดŽเดจเดฟเด•เตเด•เต เดŽเดจเตเดฑเต† เดฎเดธเตเดคเดฟเดทเตเด•เดคเตเดคเต† เดšเดฒเดฟเดชเตเดชเดฟเด•เตเด•เต‡เดฃเตเดŸเดฟเดตเดจเตเดจเต. เดšเดฟเดฒเดชเตเดชเต‹เตพ เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเดจเดฟเตฝ เดฎเดคเดฟเดฏเดพเดฏ เดตเดฟเดตเดฐเด™เตเด™เตพ เด‡เดฒเตเดฒเดพเดฏเดฟเดฐเตเดจเตเดจเต, เดšเดฟเดฒเดชเตเดชเต‹เตพ เด†เดตเดถเตเดฏเดฎเตเดณเตเดณเดคเต เดŽเด™เตเด™เดจเต† เดšเต†เดฏเตเดฏเดฃเดฎเต†เดจเตเดจเต เดฎเดจเดธเดฟเดฒเดพเด•เตเด•เดพเตป เดชเต‹เดฒเตเด‚ เดฌเตเดฆเตเดงเดฟเดฎเตเดŸเตเดŸเดพเดฏเดฟเดฐเตเดจเตเดจเต. เดŽเดจเตเดฑเต† เด…เดจเตเดญเดตเดตเตเด‚ เด‰เดฑเด•เตเด•เดฎเดฟเดฒเตเดฒเดพเดคเตเดค เดฐเดพเดคเตเดฐเดฟเด•เดณเตเด‚ เดตเต†เดฑเตเดคเต†เดฏเดพเด•เดฟเดฒเตเดฒเต†เดจเตเดจเต เดžเดพเตป เดชเตเดฐเดคเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเต, เด•เต‚เดŸเดพเดคเต† เดˆ "เด‡เดทเตโ€ŒเดŸเดพเดจเตเดธเตƒเดค เด…เดจเตเดตเต‡เดทเดฃ เดชเดพเดšเด•เด•เตเด•เตเดฑเดฟเดชเตเดชเตเด•เดณเตเดŸเต† เดถเต‡เด–เดฐเด‚" เดจเดฟเด™เตเด™เดณเต† เด•เตเดฑเดšเตเดšเต เดฎเดฃเดฟเด•เตเด•เต‚เดฑเตเด•เดณเต‹ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด•เตเดฑเดšเตเดšเต เดจเดพเดกเต€เด•เต‹เดถเด™เตเด™เดณเต‹ เดธเด‚เดฐเด•เตเดทเดฟเด•เตเด•เตเด‚. เด…เดคเดฟเดจเดพเตฝ, เดจเดฎเตเด•เตเด•เต เด†เดฐเด‚เดญเดฟเด•เตเด•เดพเด‚!

เดจเดฟเดฏเดฎเด™เตเด™เดณเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดชเตŠเดคเตเดตเดพเดฏ เดตเดฟเดตเดฐเด™เตเด™เตพ

เด†เดฆเตเดฏเด‚, เด…เดŸเตเดคเตเดคเดคเดพเดฏเดฟ เดŽเดจเตเดคเต เดธเด‚เดญเดตเดฟเด•เตเด•เตเด‚ เดŽเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดฎเดฟเด•เดšเตเดš เดงเดพเดฐเดฃเดฏเตเด•เตเด•เดพเดฏเดฟ, เด•เตเดฑเดšเตเดšเต เด…เดŸเดฟเดธเตเดฅเดพเดจ เด†เดถเดฏเด™เตเด™เดณเตเด‚ เดจเดฟเดฏเดฎเด™เตเด™เดณเตเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เดชเตเดฐเด•เตเดฐเดฟเดฏเดฏเตเด‚ เดจเต‹เด•เตเด•เดพเด‚. เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเตป เด‡เดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เด’เดจเตเดจเตเด‚ เดชเดฑเดฏเตเดจเตเดจเดฟเดฒเตเดฒ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด˜เดŸเดจเดฏเดฟเตฝ เดตเดณเดฐเต† เดตเตเดฏเดพเดชเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเดพเตฝ, เด…เดคเต เดตเดณเดฐเต† เดธเต—เด•เดฐเตเดฏเดชเตเดฐเดฆเดฎเดฒเตเดฒ.

  1. เดคเตเดŸเด•เตเด•เดคเตเดคเดฟเตฝ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเดคเตเดค เดชเตเดฐเต€เดธเต†เดฑเตเดฑเต (เด’เดฐเต เด•เต‚เดŸเตเดŸเด‚ เดธเดœเต€เดต เดจเดฟเดฏเดฎเด™เตเด™เตพ) เด…เดจเตเดธเดฐเดฟเดšเตเดšเต เดธเตเด•เดพเดจเดฟเด‚เด—เต เดธเดฎเดฏเดคเตเดคเต เดจเดฟเดฏเดฎเด™เตเด™เตพ เดชเตเดฐเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต. เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดชเดฐเดฟเดงเดฟเดฏเดฟเดฒเตเดฒเดพเดคเตเดค เดชเตเดฐเต€เดธเต†เดฑเตเดฑเตเด•เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚, เด…เดต เดŽเด™เตเด™เดจเต† เดฐเต‚เดชเดชเตเดชเต†เดŸเตเดคเตเดคเดฃเด‚ เดŽเดจเตเดจเดคเต เดจเดฟเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเด•เตเดฐเดฟเดฏเดฏเตเดŸเต† เดชเตเดฐเดคเตเดฏเต‡เด•เดคเด•เดณเต† เด†เดถเตเดฐเดฏเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด…เดตเดฏเต† เดญเดพเดท เด…เดจเตเดธเดฐเดฟเดšเตเดšเต เด—เตเดฐเต‚เดชเตเดชเตเดšเต†เดฏเตเดฏเดพเด‚ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด“เดฐเต‹ เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเดจเตเด‚ เดชเตเดฐเต€เดธเต†เดฑเตเดฑเตเด•เตพ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เดพเด‚. เดธเดœเต€เดตเดฎเดพเดฏ เดจเดฟเดฏเดฎเด™เตเด™เดณเตเดŸเต† เดŽเดฃเตเดฃเด‚ เดธเตเด•เดพเดจเดฟเด‚เด—เดฟเดจเตเดฑเต† เดตเต‡เด—เดคเดฏเต†เดฏเตเด‚ เด•เตƒเดคเตเดฏเดคเดฏเต†เดฏเตเด‚ เดฌเดพเดงเดฟเด•เตเด•เตเดจเตเดจเต.

    เดญเตเดฐเดพเดจเตเดคเต เดชเดฟเดŸเดฟเด•เตเด•เดพเดคเต† เดšเต†เด•เตเด•เตเดฎเดพเตผเด•เตเดธเดฟเดจเดพเดฏเดฟ เดŽเด™เตเด™เดจเต† เดจเดฟเดฏเดฎเด™เตเด™เตพ เดŽเดดเตเดคเดพเด‚เดšเต†เด•เตเด•เตเดฎเดพเตผเด•เตเดธเต เด‡เดจเตเดฑเตผเดซเต‡เดธเดฟเตฝ เดชเตเดฐเต€เดธเต†เดฑเตเดฑเต เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต

  2. CxAuditor เดŽเดจเตเดจ เดชเตเดฐเดคเตเดฏเต‡เด• เดŸเต‚เดณเดฟเดฒเดพเดฃเต เดจเดฟเดฏเดฎเด™เตเด™เตพ เดŽเดกเดฟเดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต. เดšเต†เด•เตเด•เตเดฎเดพเตผเด•เตเดธเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เดธเต†เตผเดตเดฑเดฟเดฒเต‡เด•เตเด•เต เด•เดฃเด•เตเดŸเต เดšเต†เดฏเตเดฏเตเดจเตเดจ เด’เดฐเต เดกเต†เดธเตเด•เตเดŸเต‹เดชเตเดชเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเดพเดฃเดฟเดคเต. เดˆ เด‰เดชเด•เดฐเดฃเดคเตเดคเดฟเดจเต เดฐเดฃเตเดŸเต เดชเตเดฐเดตเตผเดคเตเดคเดจ เดฐเต€เดคเดฟเด•เดณเตเดฃเตเดŸเต: เดจเดฟเดฏเดฎเด™เตเด™เตพ เดŽเดกเดฟเดฑเตเดฑเตเดšเต†เดฏเตเดฏเดฒเตเด‚ เด‡เดคเดฟเดจเด•เด‚ เดจเดŸเดคเตเดคเดฟเดฏ เดธเตเด•เดพเดจเดฟเดจเตเดฑเต† เดซเดฒเด™เตเด™เตพ เดตเดฟเดถเด•เดฒเดจเด‚ เดšเต†เดฏเตเดฏเดฒเตเด‚.

    เดญเตเดฐเดพเดจเตเดคเต เดชเดฟเดŸเดฟเด•เตเด•เดพเดคเต† เดšเต†เด•เตเด•เตเดฎเดพเตผเด•เตเดธเดฟเดจเดพเดฏเดฟ เดŽเด™เตเด™เดจเต† เดจเดฟเดฏเดฎเด™เตเด™เตพ เดŽเดดเตเดคเดพเด‚CxAudit เด‡เดจเตเดฑเตผเดซเต‡เดธเต

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

เดซเดฏเดฒเดฟเดจเตเดฑเต† เดชเต‡เดฐเต/เดชเดพเดคเตเดคเต เดฒเดญเดฟเด•เตเด•เตเดจเตเดจเต

เด’เดฐเต เด…เดจเตเดตเต‡เดทเดฃเดคเตเดคเดฟเดจเตเดฑเต† เดซเดฒเด™เตเด™เดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดฒเดญเดฟเด•เตเด•เตเดจเตเดจ เดจเดฟเดฐเดตเดงเดฟ เด†เดŸเตเดฐเดฟเดฌเตเดฏเต‚เดŸเตเดŸเตเด•เตพ เด‰เดฃเตเดŸเต (เดŽเตปเดŸเตเดฐเดฟ เด•เดฃเตเดŸเต†เดคเตเดคเดฟเดฏ เดซเดฏเดฒเดฟเดจเตเดฑเต† เดชเต‡เดฐเต, เดธเตเดŸเตเดฐเดฟเด‚เด—เต เดฎเตเดคเดฒเดพเดฏเดต), เดŽเดจเตเดจเดพเตฝ เด…เดต เดŽเด™เตเด™เดจเต† เดจเต‡เดŸเดพเดฎเต†เดจเตเดจเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเดฎเต†เดจเตเดจเตเด‚ เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเตป เดชเดฑเดฏเตเดจเตเดจเดฟเดฒเตเดฒ. เด…เดคเดฟเดจเดพเตฝ, เด‡เดคเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดจเดฟเด™เตเด™เตพ LinePragma เดชเตเดฐเต‹เดชเตเดชเตผเดŸเตเดŸเดฟ เด†เด•เตเดธเดธเต เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต, เดžเด™เตเด™เตพเด•เตเด•เต เด†เดตเดถเตเดฏเดฎเดพเดฏ เดตเดธเตเดคเตเด•เตเด•เตพ เด…เดคเดฟเดจเตเดณเตเดณเดฟเตฝ เดธเตเดฅเดฟเดคเดฟเดšเต†เดฏเตเดฏเตเด‚:

// ะ”ะปั ะฟั€ะธะผะตั€ะฐ ะฝะฐะนะดะตะผ ะฒัะต ะผะตั‚ะพะดั‹
CxList methods = Find_Methods();

// ะ’ ะผะตั‚ะพะดะฐั… ะฝะฐะนะดะตะผ ะฟะพ ะธะผะตะฝะธ ะผะตั‚ะพะด scope
CxList scope = methods.FindByName("scope");

// ะขะฐะบะธะผ ะพะฑั€ะฐะทะพะผ ะผะพะถะพ ะฟะพะปัƒั‡ะธั‚ัŒ ะฟัƒั‚ัŒ ะบ ั„ะฐะนะปัƒ
string current_filename = scope.GetFirstGraph().LinePragma.FileName;

// ะ ะฒะพั‚ ั‚ะฐะบะธะผ - ัั‚ั€ะพะบัƒ, ะณะดะต ะฝะฐัˆะปะพััŒ ัั€ะฐะฑะฐั‚ั‹ะฒะฐะฝะธะต
int current_line = scope.GetFirstGraph().LinePragma.Line;

// ะญั‚ะธ ะฟะฐั€ะฐะผะตั‚ั€ั‹ ะผะพะถะฝะพ ะธัะฟะพะปัŒะทะพะฒะฐั‚ัŒ ะฟะพ ั€ะฐะทะฝะพะผัƒ
// ะะฐะฟั€ะธะผะตั€ ะฟะพะปัƒั‡ะธั‚ัŒ ะฒัะต ะพะฑัŠะตะบั‚ั‹ ะฒ ั„ะฐะนะปะต
CxList inFile = All.FindByFileName(current_filename);

// ะ˜ะปะธ ะฝะฐะนั‚ะธ ั‡ั‚ะพ ะฟั€ะพะธัั…ะพะดะธั‚ ะฒ ะบะพะฝะบั€ะตั‚ะฝะพะน ัั‚ั€ะพะบะต
CxList inLine = inFile.FindByPosition(current_line);

เด…เดคเต เดฎเดจเดธเตเดธเดฟเตฝ เดธเต‚เด•เตเดทเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเดพเดฃเต FileName เดžเด™เตเด™เตพ เดฐเต€เดคเดฟ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเดคเดฟเดจเดพเตฝ เดฏเดฅเดพเตผเดคเตเดฅเดคเตเดคเดฟเตฝ เดซเดฏเดฒเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เดชเดพเดค เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต GetFirstGraph.

เดจเดฟเตผเดตเตเดตเดนเดฃ เดซเดฒเด‚

CxQL-เดจเตเดณเตเดณเดฟเตฝ เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เดตเต‡เดฐเดฟเดฏเดฌเดฟเตพ เด‰เดฃเตเดŸเต result, เด‡เดคเต เดจเดฟเด™เตเด™เดณเตเดŸเต† เดฐเต‡เด–เดพเดฎเต‚เดฒเดฎเตเดณเตเดณ เดจเดฟเดฏเดฎเด‚ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดฑเต† เดซเดฒเด‚ เดจเตฝเด•เตเดจเตเดจเต. เด‡เดคเต เด‰เดŸเดจเดŸเดฟ เด†เดฐเด‚เดญเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดจเดฟเด™เตเด™เตพ เด…เดคเดฟเตฝ เด‡เดจเตเดฑเตผเดฎเต€เดกเดฟเดฏเดฑเตเดฑเต เดซเดฒเด™เตเด™เตพ เดŽเดดเตเดคเตเด•เดฏเตเด‚ เดจเดฟเด™เตเด™เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เด…เดต เดฎเดพเดฑเตเดฑเตเด•เดฏเตเด‚ เดชเดฐเดฟเดทเตเด•เดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเดพเด‚. เดชเด•เตเดทเต‡, เดˆ เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเดฟเดจเต เด…เดธเตˆเตปเดฎเต†เดจเตเดฑเต เด‡เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดฑเต‚เดณเดฟเดจเตเดณเตเดณเดฟเตฝ เดซเด‚เด—เตโ€Œเดทเตป return- เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดทเตป เดซเดฒเด‚ เดŽเดชเตเดชเต‹เดดเตเด‚ เดชเต‚เดœเตเดฏเดฎเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚.

เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดšเต‹เดฆเตเดฏเด‚ เดจเดฟเตผเดตเตเดตเดนเดฃเดคเตเดคเดฟเดจเตเดฑเต† เดซเดฒเดฎเดพเดฏเดฟ เดžเด™เตเด™เตพเด•เตเด•เต เด’เดจเตเดจเตเด‚ เดคเดฟเดฐเดฟเด•เต† เดจเตฝเด•เดฟเดฒเตเดฒ เด•เต‚เดŸเดพเดคเต† เดŽเดฒเตเดฒเดพเดฏเตเดชเตเดชเต‹เดดเตเด‚ เดถเต‚เดจเตเดฏเดฎเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚:

// ะะฐั…ะพะดะธะผ ัะปะตะผะตะฝั‚ั‹ foo
CxList libraries = All.FindByName("foo");

เดชเด•เตเดทเต‡, เดฎเดพเดœเดฟเด•เต เดตเต‡เดฐเดฟเดฏเดฌเดฟเตพ เดซเดฒเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดจเดฟเตผเดตเตเดตเดนเดฃ เดซเดฒเด‚ เดจเตฝเด•เดฟเดฏ เดถเต‡เดทเด‚, เดˆ เด•เต‹เตพ เดจเดฎเตเดฎเดฟเดฒเต‡เด•เตเด•เต เดŽเดจเตเดคเดพเดฃเต เดคเดฟเดฐเดฟเด•เต† เดจเตฝเด•เตเดจเตเดจเดคเต เดŽเดจเตเดจเต เดžเด™เตเด™เตพ เด•เดพเดฃเตเด‚:

// ะะฐั…ะพะดะธะผ ัะปะตะผะตะฝั‚ั‹ foo
CxList libraries = All.FindByName("foo");

// ะ’ั‹ะฒะพะดะธะผ, ะบะฐะบ ั€ะตะทัƒะปัŒั‚ะฐั‚ ะฒั‹ะฟะพะปะฝะตะฝะธั ะฟั€ะฐะฒะธะปะฐ
result = libraries

// ะ˜ะปะธ ะตั‰ะต ะบะพั€ะพั‡ะต
result = All.FindByName("foo");

เดฎเดฑเตเดฑเต เดจเดฟเดฏเดฎเด™เตเด™เดณเตเดŸเต† เดซเดฒเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต

เดšเต†เด•เตเด•เตเดฎเดพเตผเด•เตโ€Œเดธเดฟเดฒเต† เดจเดฟเดฏเดฎเด™เตเด™เดณเต† เด’เดฐเต เดธเดพเดงเดพเดฐเดฃ เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเด‚เด—เต เดญเดพเดทเดฏเดฟเดฒเต† เดซเด‚เด—เตโ€Œเดทเดจเตเด•เตพเด•เตเด•เต เดธเดฎเดพเดจเดฎเดพเดฏเดฟ เดตเดฟเดณเดฟเด•เตเด•เดพเด‚. เด’เดฐเต เดจเดฟเดฏเดฎเด‚ เดŽเดดเตเดคเตเดฎเตเดชเต‹เตพ, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดฎเดฑเตเดฑเต เดšเต‹เดฆเตเดฏเด™เตเด™เดณเตเดŸเต† เดซเดฒเด™เตเด™เตพ เดจเดจเตเดจเดพเดฏเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเด‚. เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เด“เดฐเต‹ เดคเดตเดฃเดฏเตเด‚ เด•เต‹เดกเดฟเดฒเต† เดŽเดฒเตเดฒเดพ เดฐเต€เดคเดฟ เด•เต‹เดณเตเด•เดณเตเด‚ เดคเดฟเดฐเดฏเต‡เดฃเตเดŸ เด†เดตเดถเตเดฏเดฎเดฟเดฒเตเดฒ, เด†เดตเดถเตเดฏเดฎเตเดณเตเดณ เดฑเต‚เตพ เดตเดฟเดณเดฟเด•เตเด•เตเด•:

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

เดšเตเดฎเดคเดฒ: เด‰เดชเด•เดฐเดฃเด‚ เดชเตเดฐเดคเดฟเด•เดฐเดฟเด•เตเด•เตเดจเตเดจ เดธเต†เตปเดธเดฟเดฑเตเดฑเต€เดตเต เดกเดพเดฑเตเดฑเดฏเตเดŸเต† เดฒเดฟเดธเตเดฑเตเดฑเต เดตเดฟเด•เดธเดฟเดชเตเดชเดฟเด•เตเด•เตเด•

เดชเดฐเดฟเดนเดพเดฐเด‚: เดšเต†เด•เตเด•เตเดฎเดพเตผเด•เตเดธเดฟเดจเต เด…เดŸเดฟเดธเตเดฅเดพเดจ เดจเดฟเดฏเดฎเด™เตเด™เดณเตเดฃเตเดŸเต, เด…เดคเดฟเดจเตเดฑเต† เดซเดฒเด™เตเด™เตพ เดฎเดฑเตเดฑเต เดจเดฟเดฐเดตเดงเดฟ เด…เดจเตเดตเต‡เดทเดฃเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต. เดˆ เดจเดฟเดฏเดฎเด™เตเด™เดณเดฟเตฝ เดšเดฟเดฒเดคเต เดจเดฟเด™เตเด™เดณเตเดŸเต† เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเดŸ เดกเดพเดฑเตเดฑเดฏเตเดฎเดพเดฏเดฟ เดธเดชเตเดฒเดฟเดฎเต†เดจเตเดฑเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดฒเต‚เดŸเต†, เดจเดฟเด™เตเด™เดณเตเดŸเต† เดธเตเด•เดพเตป เดซเดฒเด™เตเด™เตพ เด‰เดŸเดจเดŸเดฟ เดฎเต†เดšเตเดšเดชเตเดชเต†เดŸเตเดคเตเดคเดพเดจเดพเด•เตเด‚. เดจเดฟเด™เตเด™เตพ เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด’เดฐเต เด‰เดฆเดพเดนเดฐเดฃ เดจเดฟเดฏเดฎเด‚ เดšเตเดตเดŸเต†เดฏเตเดฃเตเดŸเต:

General_privacy_violation_list

เดธเต†เตปเดธเดฟเดฑเตเดฑเต€เดตเต เดตเดฟเดตเดฐเด™เตเด™เตพ เดธเด‚เดญเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดžเด™เตเด™เดณเตเดŸเต† เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเดฟเตฝ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เดจเดฟเดฐเดตเดงเดฟ เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เตพ เดšเต‡เตผเด•เตเด•เดพเด‚:

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

// ะ˜ั‰ะตะผ ัะปะตะผะตะฝั‚ั‹, ะบะพั‚ะพั€ั‹ะต ะฟะพะฟะฐะดะฐัŽั‚ ะฟะพะด ะฟั€ะพัั‚ั‹ะต ั€ะตะณัƒะปัั€ะฝั‹ะต ะฒั‹ั€ะฐะถะตะฝะธั. ะœะพะถะฝะพ ะดะพะฟะพะปะฝะธั‚ัŒ ั…ะฐั€ะฐะบั‚ะตั€ะฝั‹ะผะธ ะดะปั ะฒะฐั ะฟะฐั‚ั‚ะตั€ะฝะฐะผะธ.
CxList personalList = All.FindByShortNames(new List<string> {
	"*securityToken*", "*sessionId*"}, false);

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

เดšเตเดฎเดคเดฒ: เดชเดพเดธเตโ€Œเดตเต‡เดกเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เดณเตเดŸเต† เดฒเดฟเดธเตเดฑเตเดฑเต เดตเดฟเด•เดธเดฟเดชเตเดชเดฟเด•เตเด•เตเด•

เดชเดฐเดฟเดนเดพเดฐเด‚: เด•เต‹เดกเดฟเดฒเต† เดชเดพเดธเตโ€Œเดตเต‡เดกเตเด•เตพ เดจเดฟเตผเดตเดšเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เดจเดฟเด™เตเด™เดณเตเดŸเต† เด•เดฎเตเดชเดจเดฟเดฏเดฟเตฝ เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เดตเต‡เดฐเดฟเดฏเดฌเดฟเตพ เดชเต‡เดฐเตเด•เดณเตเดŸเต† เด’เดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดšเต‡เตผเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดฎเตเดณเตเดณ เด…เดŸเดฟเดธเตเดฅเดพเดจ เดจเดฟเดฏเดฎเด‚ เด‰เดŸเดจเดŸเดฟ เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เดพเตป เดžเดพเตป เดถเตเดชเดพเตผเดถ เดšเต†เดฏเตเดฏเตเดจเตเดจเต.

Password_privacy_violation_list

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

เดšเต†เด•เตเด•เตเดฎเดพเตผเด•เตโ€Œเดธเดฟเดจเดพเดฏเตเดณเตเดณ เด’เดฐเต เด…เดญเตเดฏเตผเดคเตเดฅเดจเดฏเตเดŸเต† เด’เดฐเต เด‰เดฆเดพเดนเดฐเดฃเด‚ เด‡เดคเดพ, เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดกเดพเดฑเตเดฑเดฏเตเด•เตเด•เตเดณเตเดณ เดŽเด•เตโ€Œเดธเดฟเดฑเตเดฑเต เดชเต‹เดฏเดฟเดจเตเดฑเดพเดฏเดฟ เดคเดŸเดฟ เดฐเต€เดคเดฟเด•เตพ เดตเดฟเดณเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด’เดฐเต เดจเดฟเตผเดตเดšเดจเด‚ เดšเต‡เตผเด•เตเด•เดพเตป เด‡เดคเต เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเด‚:

FindAndroidOutputs

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

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

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

เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด…เดฏเตฝ เดฑเต‚เดณเดฟเดฒเต‡เด•เตเด•เต เดšเต‡เตผเด•เตเด•เดพเดจเตเด‚ เด•เดดเดฟเดฏเตเด‚, เดŽเดจเตเดจเดพเตฝ เด‡เดคเต Android-เตฝ เดฒเต‹เด—เดฟเตป เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเตเดฎเดพเดฏเดฟ เดจเต‡เดฐเดฟเดŸเตเดŸเต เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเดŸเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต:

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-เตฝ เดธเต†เตปเดธเดฟเดฑเตเดฑเต€เดตเต เดกเดพเดฑเตเดฑเดฏเตเด•เตเด•เดพเดฏเดฟ เดคเดฟเดฐเดฏเตเดจเตเดจเต

เดชเดฐเดฟเดนเดพเดฐเด‚: เดตเดฟเดตเดฟเดง เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เดณเตเด‚ เดฎเต‚เดฒเตเดฏเด™เตเด™เดณเตเด‚ เดธเด‚เดญเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต iOS เดชเดฒเดชเตเดชเต‹เดดเตเด‚ .plist เดตเดฟเดชเตเดฒเต€เด•เดฐเดฃเดคเตเดคเต‹เดŸเตเด•เต‚เดŸเดฟเดฏ เดชเตเดฐเดคเตเดฏเต‡เด• เดซเดฏเดฒเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต. เดˆ เดซเดฏเดฒเตเด•เดณเดฟเตฝ เดชเดพเดธเตโ€Œเดตเต‡เดกเตเด•เตพ, เดŸเต‹เด•เตเด•เดฃเตเด•เตพ, เด•เต€เด•เตพ, เดฎเดฑเตเดฑเต เดธเต†เตปเดธเดฟเดฑเตเดฑเต€เดตเต เดกเดพเดฑเตเดฑ เดŽเดจเตเดจเดฟเดต เดธเด‚เดญเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต เดถเตเดชเดพเตผเดถ เดšเต†เดฏเตเดฏเตเดจเตเดจเดฟเดฒเตเดฒ, เด•เดพเดฐเดฃเด‚ เด…เดต เด‰เดชเด•เดฐเดฃเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดชเตเดฐเดถเตโ€Œเดจเด™เตเด™เดณเตŠเดจเตเดจเตเดฎเดฟเดฒเตเดฒเดพเดคเต† เดŽเด•เตโ€Œเดธเตโ€ŒเดŸเตเดฐเดพเด•เตโ€Œเดฑเตเดฑเตเดšเต†เดฏเตเดฏเดพเดจเดพเด•เตเด‚.

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 เดŸเตเดฐเดพเดซเดฟเด•เตเด•เดฟเดจเตเดฑเต† เด‰เดชเดฏเต‹เด—เด‚ เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจ Android-เตฝ เด’เดฐเต เด•เตเดฐเดฎเต€เด•เดฐเดฃเด‚ เด•เดฃเตเดŸเต†เดคเตเดคเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดถเดฐเดฟเดฏเดพเดฏ เด…เดจเตเดตเต‡เดทเดฃเด‚ เด‡เด™เตเด™เดจเต†เดฏเดพเดฃเต:

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

เด•เตเดฑเดšเตเดšเตเด•เต‚เดŸเดฟ เดตเดฟเดถเดฆเดฎเดพเดฏเดฟ เดจเต‹เด•เตเด•เดพเด‚, เดŽเดฒเตเดฒเดพ เดซเด‚เด—เตโ€Œเดทเดจเตเด•เตพเด•เตเด•เตเดฎเตเดณเตเดณ เดตเดพเด•เตเดฏเด˜เดŸเดจ เดธเดฎเดพเดจเดฎเดพเดฏเดคเดฟเดจเดพเตฝ, เดจเดฟเด™เตเด™เตพ เด’เดฐเต†เดฃเตเดฃเด‚ เด•เดฃเตเดŸเต†เดคเตเดคเดฟเด•เตเด•เดดเดฟเดžเตเดžเดพเตฝ, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด†เดตเดถเตเดฏเดฎเตเดณเตเดณเดคเต เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. เด…เดคเดฟเดจเดพเตฝ, เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เตพ เด…เดจเตเดธเดฐเดฟเดšเตเดšเต เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏเดฟ:

  • "*.xml"- เดคเดฟเดฐเดฏเต‡เดฃเตเดŸ เดซเดฏเดฒเตเด•เดณเตเดŸเต† เดฎเดพเดธเตเด•เต

  • 8 - เดจเดฟเดฏเดฎเด‚ เดชเตเดฐเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เดญเดพเดทเดฏเตเดŸเต† เดเดกเดฟ

  • "cleartextTrafficPermitted"- xml-เตฝ เด†เดŸเตเดฐเดฟเดฌเตเดฏเต‚เดŸเตเดŸเต เดจเดพเดฎเด‚

  • "true" - เดˆ เด†เดŸเตเดฐเดฟเดฌเตเดฏเต‚เดŸเตเดŸเดฟเดจเตเดฑเต† เดฎเต‚เดฒเตเดฏเด‚

  • false - เดคเดฟเดฐเดฏเตเดฎเตเดชเต‹เตพ เดชเดคเดฟเดตเต เดชเดฆเดชเตเดฐเดฏเต‹เด—เดคเตเดคเดฟเดจเตเดฑเต† เด‰เดชเดฏเต‹เด—เด‚

  • true โ€” เด…เตผเดคเตเดฅเดฎเดพเด•เตเด•เตเดจเตเดจเดคเต, เด•เต‡เดธเต เด…เดตเด—เดฃเดฟเดšเตเดšเดพเดฃเต, เด…เดคเดพเดฏเดคเต, เด•เต‡เดธเต-เด‡เตปเดธเต†เตปเดธเดฟเดฑเตเดฑเต€เดตเต เด…เดฒเตเดฒเดพเดคเตเดคเดคเต

เด’เดฐเต เด‰เดฆเดพเดนเดฐเดฃเดฎเต†เดจเตเดจ เดจเดฟเดฒเดฏเดฟเตฝ, เดธเตเดฐเด•เตเดทเดพ เดตเต€เด•เตเดทเดฃเด•เต‹เดฃเดฟเตฝ เดจเดฟเดจเตเดจเต, HTTP เดชเตเดฐเต‹เดŸเตเดŸเต‹เด•เตเด•เต‹เตพ เดตเดดเดฟ เดธเต†เตผเดตเดฑเตเดฎเดพเดฏเดฟ เด†เดถเดฏเดตเดฟเดจเดฟเดฎเดฏเด‚ เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจ Android-เดฒเต† เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เด•เดฃเด•เตเดทเตป เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เตพ เดคเต†เดฑเตเดฑเดพเดฃเต†เดจเตเดจเต เดคเดฟเดฐเดฟเดšเตเดšเดฑเดฟเดฏเตเดจเตเดจ เด’เดฐเต เดจเดฟเดฏเดฎเด‚ เดžเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต. เด’เดฐเต เด†เดŸเตเดฐเดฟเดฌเตเดฏเต‚เดŸเตเดŸเต เด…เดŸเด™เตเด™เตเดจเตเดจ เด’เดฐเต เด•เตเดฐเดฎเต€เด•เดฐเดฃเดคเตเดคเดฟเดจเตเดฑเต† เด‰เดฆเดพเดนเดฐเดฃเด‚ cleartextTrafficPermitted เด…เตผเดคเตเดฅเด‚ เด•เตŠเดฃเตเดŸเต true:

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

เดšเตเดฎเดคเดฒ: เดซเดฏเดฒเดฟเดจเตเดฑเต† เดชเต‡เดฐเต/เดชเดพเดคเตเดคเต เดชเตเดฐเด•เดพเดฐเด‚ เดซเดฒเด™เตเด™เตพ เดชเดฐเดฟเดฎเดฟเดคเดชเตเดชเต†เดŸเตเดคเตเดคเตเด•

เดชเดฐเดฟเดนเดพเดฐเด‚: Android-เดจเดพเดฏเตเดณเตเดณ เด’เดฐเต เดฎเตŠเดฌเตˆเตฝ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดตเดฟเด•เดธเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเดŸ เดตเดฒเดฟเดฏ เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเตเด•เดณเดฟเดฒเตŠเดจเตเดจเดฟเตฝ, เด…เดตเตเดฏเด•เตเดคเดค เด•เตเดฐเดฎเต€เด•เดฐเดฃเด‚ เดจเดฟเตผเดฃเตเดฃเดฏเดฟเด•เตเด•เตเดจเตเดจ เดจเดฟเดฏเดฎเดคเตเดคเดฟเดจเตเดฑเต† เดคเต†เดฑเตเดฑเดพเดฏ เดชเต‹เดธเดฟเดฑเตเดฑเต€เดตเตเด•เตพ เดžเด™เตเด™เตพ เดจเต‡เดฐเดฟเดŸเตเดŸเต. เดฑเต‚เตพ เด”เดŸเตเดŸเต เด“เดซเต เดฆเดฟ เดฌเต‹เด•เตเดธเต เดซเดฏเดฒเดฟเตฝ เดคเดฟเดฐเดฏเตเดจเตเดจเต เดŽเดจเตเดจเดคเดพเดฃเต เดตเดธเตเดคเตเดค build.gradle เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเดฑเต† เดฑเดฟเดฒเต€เดธเต เดชเดคเดฟเดชเตเดชเดฟเดจเดพเดฏเดฟ เด…เดตเตเดฏเด•เตเดคเดค เดจเดฟเดฏเดฎเด™เตเด™เตพ เดชเตเดฐเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด‰เดคเตเดคเดฐเดตเดพเดฆเดฟเดคเตเดคเดฎเตเดณเตเดณ เด’เดฐเต เด•เตเดฐเดฎเต€เด•เดฐเดฃเด‚.

เดŽเดจเตเดจเดพเตฝ เดตเดฒเดฟเดฏ เดชเดฆเตเดงเดคเดฟเด•เดณเดฟเตฝ เดšเดฟเดฒเดชเตเดชเต‹เตพ เดšเตˆเตฝเดกเต เดซเดฏเดฒเตเด•เตพ เด‰เดฃเตเดŸเดพเด•เตเด‚ build.gradle, เดชเดฆเตเดงเดคเดฟเดฏเดฟเตฝ เด‰เตพเดชเตเดชเต†เดŸเตเดคเตเดคเดฟเดฏเดฟเดŸเตเดŸเตเดณเตเดณ เดฒเตˆเดฌเตเดฐเดฑเดฟเด•เดณเต† เดชเดฐเดพเดฎเตผเดถเดฟเด•เตเด•เตเดจเตเดจเต. เดˆ เดซเดฏเดฒเตเด•เตพ เด…เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เต‡เดฃเตเดŸเดคเดฟเดจเตเดฑเต† เด†เดตเดถเตเดฏเด•เดคเดฏเต† เดธเต‚เดšเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒเต†เด™เตเด•เดฟเดฒเตเด‚, เดธเดฎเดพเดนเดฐเดฟเด•เตเด•เตเดจเตเดจ เดธเดฎเดฏเดคเตเดคเต เดชเดพเดฐเดจเตเดฑเต เด…เดธเด‚เดฌเตเดฒเดฟ เดซเดฏเดฒเดฟเดจเตเดฑเต† เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เตพ เดชเตเดฐเดฏเต‹เด—เดฟเด•เตเด•เตเด‚ เดŽเดจเตเดจเดคเดพเดฃเต เดชเตเดฐเดคเตเดฏเต‡เด•เดค.

เด…เดคเดฟเดจเดพเตฝ, เดฒเตˆเดฌเตเดฐเดฑเดฟเด•เดณเตเดŸเต‡เดคเดพเดฏ เดšเตˆเตฝเดกเต เดซเดฏเดฒเตเด•เดณเดฟเดฒเต† เดŸเตเดฐเดฟเด—เดฑเตเด•เตพ เดฎเตเดฑเดฟเด•เตเด•เตเด• เดŽเดจเตเดจเดคเดพเดฃเต เดšเตเดฎเดคเดฒ. เดตเดฐเดฟเดฏเตเดŸเต† เดธเดพเดจเตเดจเดฟเดงเตเดฏเดคเตเดคเดพเตฝ เด…เดต เดคเดฟเดฐเดฟเดšเตเดšเดฑเดฟเดฏเดพเตป เด•เดดเดฟเดฏเตเด‚ apply 'com.android.library'.

เดซเดฏเดฒเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เด‰เดฆเดพเดนเดฐเดฃ เด•เต‹เดกเต build.gradle, เด‡เดคเต เด…เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เต‡เดฃเตเดŸเดคเดฟเดจเตเดฑเต† เด†เดตเดถเตเดฏเด•เดค เดจเดฟเตผเดฃเตเดฃเดฏเดฟเด•เตเด•เตเดจเตเดจเต:

apply plugin: 'com.android.application'

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

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

dependencies {
  ...
}

เดซเดฏเตฝ เด‰เดฆเดพเดนเดฐเดฃเด‚ build.gradle เดˆ เด•เตเดฐเดฎเต€เด•เดฐเดฃเด‚ เด‡เดฒเตเดฒเดพเดคเตเดค เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเตฝ เด‰เตพเดชเตเดชเต†เดŸเตเดคเตเดคเดฟเดฏเดฟเดŸเตเดŸเตเดณเตเดณ เด’เดฐเต เดฒเตˆเดฌเตเดฐเดฑเดฟเด•เตเด•เต:

apply plugin: 'android-library'

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

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

เดšเต†เด•เตเด•เตเดฎเดพเตผเด•เตเดธเดฟเดจเตเดฑเต† เดจเดฟเดฏเดฎเดตเตเด‚:

ProGuardObfuscationNotInUse

// ะŸะพะธัะบ ะผะตั‚ะพะดะฐ release ัั€ะตะดะธ ะฒัะตั… ะผะตั‚ะพะดะพะฒ ะฒ Gradle ั„ะฐะนะปะฐั…
CxList releaseMethod = Find_Gradle_Method("release");

// ะ’ัะต ะพะฑัŠะตะบั‚ั‹ ะธะท ั„ะฐะนะปะพะฒ build.gradle
CxList gradleBuildObjects = Find_Gradle_Build_Objects();

// ะŸะพะธัะบ ั‚ะพะณะพ, ั‡ั‚ะพ ะฝะฐั…ะพะดะธั‚ัั ะฒะฝัƒั‚ั€ะธ ะผะตั‚ะพะดะฐ "release" ัั€ะตะดะธ ะฒัะตั… ะพะฑัŠะตะบั‚ะพะฒ ะธะท ั„ะฐะนะปะพะฒ build.gradle
CxList methodInvokesUnderRelease = gradleBuildObjects.FindByType(typeof(MethodInvokeExpr)).GetByAncs(releaseMethod);

// ะ˜ั‰ะตะผ ะฒะฝัƒั‚ั€ะธ gradle-ั„ะฐะนะปะพะฒ ัั‚ั€ะพะบัƒ "com.android.library" - ัั‚ะพ ะทะฝะฐั‡ะธั‚, ั‡ั‚ะพ ะดะฐะฝะฝั‹ะน ั„ะฐะนะป ะพั‚ะฝะพัะธั‚ัั ะบ ะฑะธะฑะปะธะพั‚ะตะบะต ะธ ะตะณะพ ะฝะตะพะฑั…ะพะดะธะผะพ ะธัะบะปัŽั‡ะธั‚ัŒ ะธะท ะฟั€ะฐะฒะธะปะฐ
CxList android_library = gradleBuildObjects.FindByName("com.android.library");

// ะ˜ะฝะธั†ะธะฐะปะธะทะฐั†ะธั ะฟัƒัั‚ะพะณะพ ะผะฐััะธะฒะฐ
List<string> libraries_path = new List<string> {};

// ะŸั€ะพั…ะพะดะธะผ ั‡ะตั€ะตะท ะฒัะต ะฝะฐะนะดะตะฝะฝั‹ะต "ะดะพั‡ะตั€ะฝะธะต" ั„ะฐะนะปั‹
foreach(CxList library in android_library)
{
    // ะŸะพะปัƒั‡ะฐะตะผ ะฟัƒั‚ัŒ ะบ ะบะฐะถะดะพะผัƒ ั„ะฐะนะปัƒ
	string file_name_library = library.GetFirstGraph().LinePragma.FileName;
    
    // ะ”ะพะฑะฐะฒะปัะตะผ ะตะณะพ ะฒ ะฝะฐัˆ ะผะฐััะธะฒ
	libraries_path.Add(file_name_library);
}

// ะ˜ั‰ะตะผ ะฒัะต ะฒั‹ะทะพะฒั‹ ะฒะบะปัŽั‡ะตะฝะธั ะพะฑั„ัƒัะบะฐั†ะธะธ ะฒ ั€ะตะปะธะทะฝั‹ั… ะฝะฐัั‚ั€ะพะนะบะฐั…
CxList minifyEnabled = methodInvokesUnderRelease.FindByShortName("minifyEnabled");

// ะŸะพะปัƒั‡ะฐะตะผ ะฟะฐั€ะฐะผะตั‚ั€ั‹ ัั‚ะธั… ะฒั‹ะทะพะฒะพะฒ
CxList minifyValue = gradleBuildObjects.GetParameters(minifyEnabled, 0);

// ะ˜ั‰ะตะผ ัั€ะตะดะธ ะฝะธั… ะฒะบะปัŽั‡ะตะฝะฝั‹ะต
CxList minifyValueTrue = minifyValue.FindByShortName("true");

// ะะตะผะฝะพะณะพ ะผะฐะณะธะธ, ะตัะปะธ ะฝะต ะฝะฐัˆะปะธ ัั‚ะฐะฝะดะฐั€ั‚ะฝั‹ะผ ัะฟะพัะพะฑะพะผ :D
if (minifyValueTrue.Count == 0) {
	minifyValue = minifyValue.FindByAbstractValue(abstractValue => abstractValue is TrueAbstractValue);
} else {
    // ะ ะตัะปะธ ะฒัั‘-ั‚ะฐะบะธ ะฝะฐัˆะปะธ, ั‚ะพ ะฟั€ะตะดั‹ะดัƒั‰ะธะน ั€ะตะทัƒะปัŒั‚ะฐั‚ ะธ ะพัั‚ะฐะฒะปัะตะผ
	minifyValue = minifyValueTrue;	
}

// ะ•ัะปะธ ะฝะต ะฝะฐัˆะปะพััŒ ั‚ะฐะบะธั… ะผะตั‚ะพะดะพะฒ
if (minifyValue.Count == 0)
{
    // ะ”ะปั ะฑะพะปะตะต ะบะพั€ั€ะตะบั‚ะฝะพะณะพ ะพั‚ะพะฑั€ะฐะถะตะฝะธั ะผะตัั‚ะฐ ัั€ะฐะฑะฐั‚ั‹ะฒะฐะฝะธั ะฒ ั„ะฐะนะปะต ะธั‰ะตะผ ะธะปะธ buildTypes ะธะปะธ android
	CxList tempResult = All.NewCxList();
	CxList buildTypes = Find_Gradle_Method("buildTypes");
	if (buildTypes.Count > 0) {
		tempResult = buildTypes;
	} else {
		tempResult = Find_Gradle_Method("android");
	}
	
	// ะ”ะปั ะบะฐะถะดะพะณะพ ะธะท ะฝะฐะนะดะตะฝะฝั‹ั… ะผะตัั‚ ัั€ะฐะฑะฐั‚ั‹ะฒะฐะฝะธั ะฟั€ะพั…ะพะดะธะผ ะธ ะพะฟั€ะตะดะตะปัะตะผ, ะดะพั‡ะตั€ะฝะธะน ะธะปะธ ะพัะฝะพะฒะฝะพะน ั„ะฐะนะปั‹ ัะฑะพั€ะบะธ
	foreach(CxList res in tempResult)
	{
        // ะžะฟั€ะตะดะตะปัะตะผ, ะฒ ะบะฐะบะพะผ ั„ะฐะนะปะต ะฑั‹ะป ะฝะฐะนะดะตะฝ buildType ะธะปะธ android ะผะตั‚ะพะดั‹
		string file_name_result = res.GetFirstGraph().LinePragma.FileName;
        
        // ะ•ัะปะธ ั‚ะฐะบะพะณะพ ั„ะฐะนะปะฐ ะฝะตั‚ ะฒ ะฝะฐัˆะตะผ ัะฟะธัะบะต "ะดะพั‡ะตั€ะฝะธั…" ั„ะฐะนะปะพะฒ - ะทะฝะฐั‡ะธั‚ ัั‚ะพ ะพัะฝะพะฒะฝะพะน ั„ะฐะนะป ะธ ะตะณะพ ะผะพะถะฝะพ ะดะพะฑะฐะฒะธั‚ัŒ ะฒ ั€ะตะทัƒะปัŒั‚ะฐั‚
		if (libraries_path.Contains(file_name_result) == false){
			result.Add(res);
		}
	}
}

เดˆ เดธเดฎเต€เดชเดจเด‚ เดคเดฟเด•เดšเตเดšเตเด‚ เดธเดพเตผเดตเดคเตเดฐเดฟเด•เดตเตเด‚ Android เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพเด•เตเด•เต เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ, เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เดซเดฏเดฒเดฟเดจเตเดฑเต† เดซเดฒเดฎเดพเดฃเต‹ เดŽเดจเตเดจเต เดจเดฟเด™เตเด™เตพ เดจเดฟเตผเดฃเตเดฃเดฏเดฟเด•เตเด•เต‡เดฃเตเดŸ เดฎเดฑเตเดฑเต เดธเดจเตเดฆเตผเดญเด™เตเด™เดณเดฟเดฒเตเด‚ เด‰เดชเดฏเต‹เด—เดชเตเดฐเดฆเดฎเดพเด•เตเด‚.

เดšเตเดฎเดคเดฒ: เดตเดพเด•เตเดฏเด˜เดŸเดจ เดชเต‚เตผเดฃเตเดฃเดฎเดพเดฏเดฟ เดชเดฟเดจเตเดคเตเดฃเดฏเตเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด’เดฐเต เดฎเต‚เดจเตเดจเดพเด‚ เด•เด•เตเดทเดฟ เดฒเตˆเดฌเตเดฐเดฑเดฟเด•เตเด•เต เดชเดฟเดจเตเดคเตเดฃ เดšเต‡เตผเด•เตเด•เตเด•

เดชเดฐเดฟเดนเดพเดฐเด‚: เด•เต‹เดกเต เดŽเดดเตเดคเตเดจเตเดจ เดชเตเดฐเด•เตเดฐเดฟเดฏเดฏเดฟเตฝ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เดตเดฟเดตเดฟเดง เดšเดŸเตเดŸเด•เตเด•เต‚เดŸเตเด•เดณเตเดŸเต† เดŽเดฃเตเดฃเด‚ เดšเดพเตผเดŸเตเดŸเตเด•เตพเด•เตเด•เต เดชเตเดฑเดคเตเดคเดพเดฃเต. เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚, เดšเต†เด•เตเด•เตเดฎเดพเตผเด•เตเดธเดฟเดจเต เด…เดตเดฐเตเดŸเต† เด…เดธเตเดคเดฟเดคเตเดตเดคเตเดคเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดŽเดฒเตเดฒเดพเดฏเตเดชเตเดชเต‹เดดเตเด‚ เด…เดฑเดฟเดฏเดฟเดฒเตเดฒ, เดšเดฟเดฒ เดฐเต€เดคเดฟเด•เตพ เดˆ เดšเดŸเตเดŸเด•เตเด•เต‚เดŸเดฟเตฝ เดชเตเดฐเดคเตเดฏเต‡เด•เดฎเดพเดฏเดฟ เด‰เตพเดชเตเดชเต†เดŸเตเดŸเดคเดพเดฃเต†เดจเตเดจเต เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เดพเตป เด…เดคเดฟเดจเต† เดชเด เดฟเดชเตเดชเดฟเด•เตเด•เตเด• เดŽเดจเตเดจเดคเดพเดฃเต เดžเด™เตเด™เดณเตเดŸเต† เดšเตเดฎเดคเดฒ. เดšเดŸเตเดŸเด•เตเด•เต‚เดŸเตเด•เตพ เดตเดณเดฐเต† เดธเดพเดงเดพเดฐเดฃเดฎเดพเดฏ เดซเด‚เด—เตโ€Œเดทเตป เดชเต‡เดฐเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเตเด‚ เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เดฒเตˆเดฌเตเดฐเดฑเดฟเดฏเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เด•เต‹เดณเดฟเดจเตเดฑเต† เดฌเดจเตเดงเด‚ เด…เดตเตเดฏเด•เตเดคเดฎเดพเดฏเดฟ เดจเดฟเตผเดฃเตเดฃเดฏเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเดพเดคเตเดคเดคเตเด‚ เดšเดฟเดฒเดชเตเดชเต‹เตพ เด‡เดคเต เดธเด™เตเด•เต€เตผเดฃเตเดฃเดฎเดพเด•เตเด•เตเดจเตเดจเต.

เด…เดคเตเดคเดฐเด‚ เดฒเตˆเดฌเตเดฐเดฑเดฟเด•เดณเตเดŸเต† เดตเดพเด•เตเดฏเด˜เดŸเดจ เดŽเดฒเตเดฒเดพเดฏเตเดชเตเดชเต‹เดดเตเด‚ เดถเดฐเดฟเดฏเดพเดฏเดฟ เดคเดฟเดฐเดฟเดšเตเดšเดฑเดฟเดฏเดชเตเดชเต†เดŸเตเดจเตเดจเดฟเดฒเตเดฒ เดŽเดจเตเดจเดคเดพเดฃเต เดฌเตเดฆเตเดงเดฟเดฎเตเดŸเตเดŸเต, เด•เต‚เดŸเดพเดคเต† เดงเดพเดฐเดพเดณเด‚ เดคเต†เดฑเตเดฑเดพเดฏ เดชเต‹เดธเดฟเดฑเตเดฑเต€เดตเตเด•เตพ เดฒเดญเดฟเด•เตเด•เดพเดคเดฟเดฐเดฟเด•เตเด•เดพเตป เดจเดฟเด™เตเด™เตพ เดชเดฐเต€เด•เตเดทเดฃเด‚ เดจเดŸเดคเตเดคเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. เดธเตเด•เดพเดจเดฟเด‚เด—เต เด•เตƒเดคเตเดฏเดค เดฎเต†เดšเตเดšเดชเตเดชเต†เดŸเตเดคเตเดคเตเดจเตเดจเดคเดฟเดจเตเด‚ เดชเตเดฐเดถเตเดจเด‚ เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เดจเดฟเดฐเดตเดงเดฟ เด“เดชเตเดทเดจเตเด•เตพ เด‰เดฃเตเดŸเต:

  • เด†เดฆเตเดฏ เด“เดชเตเดทเตป, เดฒเตˆเดฌเตเดฐเดฑเดฟ เด’เดฐเต เดจเดฟเตผเดฆเตเดฆเดฟเดทเตโ€ŒเดŸ เดชเตเดฐเต‹เดœเด•เตโ€Œเดฑเตเดฑเดฟเตฝ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเตเดฃเตเดŸเต†เดจเตเดจเตเด‚ เดŸเต€เด‚ เดคเดฒเดคเตเดคเดฟเตฝ เดจเดฟเดฏเดฎเด‚ เดชเตเดฐเดฏเต‹เด—เดฟเด•เตเด•เดพเดฎเต†เดจเตเดจเตเด‚ เดžเด™เตเด™เตพเด•เตเด•เต เด‰เดฑเดชเตเดชเดพเดฏเตเด‚ เด…เดฑเดฟเดฏเดพเด‚. เดŽเดจเตเดจเดพเตฝ เดŸเต€เด‚ เดฎเดฑเตเดฑเตŠเดฐเต เดธเดฎเต€เดชเดจเด‚ เดธเตเดตเต€เด•เดฐเดฟเด•เตเด•เดพเตป เดคเต€เดฐเตเดฎเดพเดจเดฟเด•เตเด•เตเด•เดฏเต‹ เดซเด‚เด—เตโ€Œเดทเตป เดชเต‡เดฐเตเด•เตพ เด“เดตเตผเดฒเดพเดชเตเดชเต เดšเต†เดฏเตเดฏเตเดจเตเดจ เดจเดฟเดฐเดตเดงเดฟ เดฒเตˆเดฌเตเดฐเดฑเดฟเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•เดฏเต‹ เดšเต†เดฏเตโ€Œเดคเดพเตฝ, เดจเดฟเดฐเดตเดงเดฟ เดคเต†เดฑเตเดฑเดพเดฏ เดชเต‹เดธเดฟเดฑเตเดฑเต€เดตเตเด•เดณเตเดŸเต† เดตเดณเดฐเต† เดฎเดจเต‹เดนเดฐเดฎเดฒเตเดฒเดพเดคเตเดค เดšเดฟเดคเตเดฐเด‚ เดจเดฎเตเด•เตเด•เต เดฒเดญเดฟเด•เตเด•เตเด‚.

  • เดฒเตˆเดฌเตเดฐเดฑเดฟ เดตเตเดฏเด•เตเดคเดฎเดพเดฏเดฟ เด‡เดฑเด•เตเด•เตเดฎเดคเดฟ เดšเต†เดฏเตเดค เดซเดฏเดฒเตเด•เตพเด•เตเด•เดพเดฏเดฟ เดคเดฟเดฐเดฏเตเด• เดŽเดจเตเดจเดคเดพเดฃเต เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต† เด“เดชเตเดทเตป. เดˆ เดธเดฎเต€เดชเดจเดคเตเดคเดฟเดฒเต‚เดŸเต†, เดจเดฎเตเด•เตเด•เต เด†เดตเดถเตเดฏเดฎเตเดณเตเดณ เดฒเตˆเดฌเตเดฐเดฑเดฟ เดˆ เดซเดฏเดฒเดฟเตฝ เด•เตƒเดคเตเดฏเดฎเดพเดฏเดฟ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเดฟเดŸเตเดŸเตเดฃเตเดŸเต†เดจเตเดจเต เด‰เดฑเดชเตเดชเดฟเด•เตเด•เดพเด‚.

  • เดฎเตเด•เดณเดฟเดฒเตเดณเตเดณ เดฐเดฃเตเดŸเต เดธเดฎเต€เดชเดจเด™เตเด™เดณเตเด‚ เด’เดฐเตเดฎเดฟเดšเตเดšเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด• เดŽเดจเตเดจเดคเดพเดฃเต เดฎเต‚เดจเตเดจเดพเดฎเดคเตเดคเต† เด“เดชเตเดทเตป.

เด’เดฐเต เด‰เดฆเดพเดนเดฐเดฃเดฎเดพเดฏเดฟ, เด‡เดŸเตเด™เตเด™เดฟเดฏ เดธเตผเด•เตเด•เดฟเดณเตเด•เดณเดฟเตฝ เด…เดฑเดฟเดฏเดชเตเดชเต†เดŸเตเดจเตเดจ เด’เดฐเต เดฒเตˆเดฌเตเดฐเดฑเดฟ เดจเต‹เด•เตเด•เดพเด‚ เดธเตเดฒเดฟเด•เตเด•เต เดธเตเด•เดพเดฒ เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเด‚เด—เต เดญเดพเดทเดฏเตเด•เตเด•เต, เด…เดคเดพเดฏเดคเต, เดชเตเดฐเดตเตผเดคเตเดคเดจเด•เตเดทเดฎเดค เดฒเดฟเดฑเตเดฑเดฑเตฝ เดฎเต‚เดฒเตเดฏเด™เตเด™เตพ เดตเดฟเดญเดœเดฟเด•เตเด•เตเดจเตเดจเต. เดชเตŠเดคเตเดตเต‡, เด’เดฐเต SQL เด…เดจเตเดตเต‡เดทเดฃเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เตพ เด•เตˆเดฎเดพเดฑเดพเตป, เดจเดฟเด™เตเด™เตพ เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเตผ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดฃเด‚ $, เด‡เดคเต เดฎเตเตปเด•เต‚เดŸเตเดŸเดฟ เดคเดฏเตเดฏเดพเดฑเดพเด•เตเด•เดฟเดฏ SQL เด…เดจเตเดตเต‡เดทเดฃเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดกเดพเดฑเตเดฑเดฏเต† เดฎเดพเดฑเตเดฑเดฟเดธเตเดฅเดพเดชเดฟเด•เตเด•เตเดจเตเดจเต. เด…เดคเดพเดฏเดคเต, เดตเดพเดธเตเดคเดตเดคเตเดคเดฟเตฝ, เด‡เดคเต เดœเดพเดตเดฏเดฟเตฝ เดคเดฏเตเดฏเดพเดฑเดพเด•เตเด•เดฟเดฏ เดชเตเดฐเดธเตเดคเดพเดตเดจเดฏเตเดŸเต† เดจเต‡เดฐเดฟเดŸเตเดŸเตเดณเตเดณ เด…เดจเดฒเต‹เด—เต เด†เดฃเต. เดชเด•เตเดทเต‡, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดšเดฒเดจเดพเดคเตเดฎเด•เดฎเดพเดฏเดฟ เด’เดฐเต 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 เดธเดฎเตเดชเตเดฐเดฆเดพเดฏเด™เตเด™เดณเตเดŸเต† เดธเด‚เดฏเต‹เดœเดจเด‚, เด…เดชเด•เดŸเดธเดพเดงเตเดฏเดคเดฏเต† เดšเต‚เดทเดฃเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ เด•เต‹เดกเดฟเตฝ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเดฟเดŸเตเดŸเดฟเดฒเตเดฒเต†เดจเตเดจเต เดจเดฟเตผเดฃเตเดฃเดฏเดฟเด•เตเด•เดพเตป เดธเดนเดพเดฏเดฟเด•เตเด•เตเด‚.

เดŽเดจเตเดจเดพเตฝ เดšเดฟเดฒเดชเตเดชเต‹เตพ, เดชเตเดฐเดคเตเดฏเต‡เด•เดฟเดšเตเดšเต เดœเดพเดตเดพเดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดชเดฐเดฟเด—เดฃเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เด‡เดคเต เดคเดฟเด•เดšเตเดšเตเด‚ เดจเดฟเดธเตเดธเดพเดฐเดฎเดพเดฏ เด’เดฐเต เดœเต‹เดฒเดฟ เด†เดฏเดฟเดฐเดฟเด•เตเด•เดฟเดฒเตเดฒ. เด˜เดŸเด•เดคเตเดคเดฟเดฒเต† เด•เต‡เดŸเตเดชเดพเดŸเตเด•เดณเตเดŸเต† เด‰เดฆเดพเดนเดฐเดฃเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต, เด’เดฐเตเดชเด•เตเดทเต‡ เด…เดจเตเดฏเต‹เดœเตเดฏเดฎเดฒเตเดฒเดพเดคเตเดค เด’เดฐเต เดชเดฐเดฟเดนเดพเดฐเดฎเดพเดฃเต เดšเตเดตเดŸเต†เดฏเตเดณเตเดณเดคเต, เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต 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

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•