เชนเซ เชนเชฌเชฐ!
เช เชฎเชพเชฐเชพ เชเชพเชฐเซเชฏเชฎเชพเช, เช เชฎเชพเชฐเซ เชเชเชชเชจเซ เชเชฃเซ เชตเชพเชฐ เชตเชฟเชตเชฟเชง เชธเซเชเซเชเชฟเช เชเซเชก เชเชจเชพเชฒเชฟเชธเชฟเชธ เชเซเชฒเซเชธ (SAST) เชธเชพเชฅเซ เชตเซเชฏเชตเชนเชพเชฐ เชเชฐเซ เชเซ. เชฌเซเชเซเชธเชจเซ เชฌเชนเชพเชฐ เชคเซเช เชฌเชงเชพ เชธเชฐเซเชฐเชพเชถ เชเชพเชฎ เชเชฐเซ เชเซ. เช เชฒเชฌเชคเซเชค, เชคเซ เชฌเชงเซเช เชชเซเชฐเซเชเซเชเซเช เช เชจเซ เชคเซเชฎเชพเช เชตเชชเชฐเชพเชคเซ เชคเชเชจเซเชเซ เชคเซเชฎเช เชตเชฟเชถเซเชฒเซเชทเชฃเชจเชพ เชจเชฟเชฏเชฎเซ เชฆเซเชตเชพเชฐเชพ เช เชคเชเชจเซเชเซเช เชเซเชเชฒเซ เชธเชพเชฐเซ เชฐเซเชคเซ เชเชตเชฐเซ เชฒเซเชตเชพเชฎเชพเช เชเชตเซ เชเซ เชคเซเชจเชพ เชชเชฐ เชเชงเชพเชฐ เชฐเชพเชเซ เชเซ. เชฎเชพเชฐเชพ เชฎเชคเซ, SAST เชเซเชฒ เชชเชธเชเชฆ เชเชฐเชคเซ เชตเชเชคเซ เชธเซเชฅเซ เชฎเชนเชคเซเชตเชชเซเชฐเซเชฃ เชฎเชพเชชเชฆเชเชกเซ เชชเซเชเซ เชเช เชเซ เชคเซเชจเซ เชคเชฎเชพเชฐเซ เชเชชเซเชฒเชฟเชเซเชถเชจเชจเซ เชตเชฟเชถเชฟเชทเซเชเชคเชพเช เช เชจเซเชธเชพเชฐ เชเชธเซเชเชฎเชพเชเช เชเชฐเชตเชพเชจเซ เชเซเชทเชฎเชคเชพ, เชเชเชฒเซ เชเซ, เชตเชฟเชถเซเชฒเซเชทเชฃเชจเชพ เชจเชฟเชฏเชฎเซ เชฒเชเชตเชพ เช เชจเซ เชฌเชฆเชฒเชตเชพ เช เชฅเชตเชพ, เชเซเชฎเชจเซ เชตเชงเซ เชตเชเชค เชเชธเซเชเชฎ เชเซเชตเซเชฐเซเช เชเชนเซเชตเชพเชฎเชพเช เชเชตเซ เชเซ.
เช เชฎเซ เชฎเซเชเซเชญเชพเชเซ เชเซเชเชฎเชพเชฐเซเชเซเชธเชจเซ เชเชชเชฏเซเช เชเชฐเซเช เชเซเช - เชเช เชเซเชฌ เช เชฐเชธเชชเซเชฐเชฆ เช เชจเซ เชถเชเซเชคเชฟเชถเชพเชณเซ เชเซเชก เชตเชฟเชถเซเชฒเซเชทเช. เช เชฒเซเชเชฎเชพเช เชนเซเช เชคเซเชจเชพ เชฎเชพเชเซ เชตเชฟเชถเซเชฒเซเชทเชฃ เชจเชฟเชฏเชฎเซ เชฒเชเชตเชพเชจเชพ เชฎเชพเชฐเชพ เช เชจเซเชญเชต เชตเชฟเชถเซ เชตเชพเชค เชเชฐเซเชถ.
เชธเชฎเชพเชตเชฟเชทเซเชเซเชจเซเช เชเซเชทเซเชเช
-
เชจเชฟเชฏเชฎเซ เชชเชฐ เชธเชพเชฎเชพเชจเซเชฏ เชฎเชพเชนเชฟเชคเซ -
เชจเชตเชพ เชจเชฟเชถเชพเชณเซเชฏเชพ เชฎเชพเชเซ "เชถเชฌเซเชฆเชเซเชท".
เชชเชฐเชฟเชเชฏ
เชถเชฐเซเชเชคเชฎเชพเช, เชนเซเช เชเซเชเชฎเชพเชฐเซเชเซเชธ เชฎเชพเชเซ เชชเซเชฐเชถเซเชจเซ เชฒเชเชตเชพเชจเซ เชตเชฟเชถเซเชทเชคเชพเช เชตเชฟเชถเซ เชฐเชถเชฟเชฏเชจเชฎเชพเช เชฅเซเชกเชพ เชฒเซเชเซเชฎเชพเชเชฅเซ เชเชเชจเซ เชญเชฒเชพเชฎเชฃ เชเชฐเชตเชพ เชฎเชพเชเชเซ เชเซเช. เชคเซ เชถเซเชฐเซเชทเช เชนเซเช เชณ 2019 เชจเชพ เช
เชเชคเชฎเชพเช เชนเซเชฌเซเชฐเซ เชชเชฐ เชชเซเชฐเชเชพเชถเชฟเชค เชฅเชฏเซเช เชนเชคเซเช:
เชคเซ เชเซเชเชฒเซเช เชชเชฐเซเชเซเชทเชฃ เชเชชเซเชฒเชฟเชเซเชถเชจ เชฎเชพเชเซ CxQL (เชเซเชเชฎเชพเชฐเซเช เชเซเชตเซเชฐเซ เชฒเซเชเชเซเชตเซเช) เชฎเชพเช เชชเซเชฐเชฅเชฎ เชเซเชตเซเชฐเซ เชเซเชตเซ เชฐเซเชคเซ เชฒเชเชตเซ เชคเซ เชตเชฟเชเชคเชตเชพเชฐ เชคเชชเชพเชธเซ เชเซ เช เชจเซ เชตเชฟเชถเซเชฒเซเชทเชฃ เชจเชฟเชฏเชฎเซ เชเซเชตเซ เชฐเซเชคเซ เชเชพเชฐเซเชฏ เชเชฐเซ เชเซ เชคเซเชจเชพ เชฎเซเชณเชญเซเชค เชธเชฟเชฆเซเชงเชพเชเชคเซ เชฆเชฐเซเชถเชพเชตเซ เชเซ.
เชคเซเชฎเชพเช เชเซ เชตเชฐเซเชฃเชตเซเชฒ เชเซ เชคเซ เชนเซเช เชชเซเชจเชฐเชพเชตเชฐเซเชคเชฟเชค เชเชฐเซเชถ เชจเชนเซเช, เชเซ เชเซ เชเซเชเชฒเชพเช เชเชเชคเชฐเชเซเชฆ เชนเชเซ เชชเชฃ เชนเชพเชเชฐ เชฐเชนเซเชถเซ. เชฎเชพเชฐเชพ เชฒเซเชเชฎเชพเช เชนเซเช เชเซเชเชฎเชพเชฐเซเชเซเชธ เชธเชพเชฅเซเชจเชพ เชฎเชพเชฐเชพ เชเชพเชฐเซเชฏ เชฆเชฐเชฎเชฟเชฏเชพเชจ เชฎเชจเซ เชเซ เชเซเชเซเชเชธ เชธเชฎเชธเซเชฏเชพเชเชจเซ เชธเชพเชฎเชจเซ เชเชฐเชตเซ เชชเชกเซเชฏเซ เชนเชคเซ เชคเซเชจเชพ เชเชเซเชฒเซเชจเซ เชธเซเชเชฟ, เชเช เชชเซเชฐเชเชพเชฐเชจเซ "เชฐเซเชธเชฟเชชเซเชจเซ เชธเชเชเซเชฐเชน" เชเชฎเซเชชเชพเชเชฒ เชเชฐเชตเชพเชจเซ เชชเซเชฐเชฏเชพเชธ เชเชฐเซเชถ. เชเชฎเชพเชเชจเซ เชเชฃเซ เชธเชฎเชธเซเชฏเชพเช เชชเชฐ เชฎเชพเชฐเซ เชฎเชพเชฐเชพ เชฎเชเชเชจเซ เชฐเซเช เชเชฐเชตเซเช เชชเชกเซเชฏเซเช. เชเซเชเชฒเซเชเชตเชพเชฐ เชฆเชธเซเชคเชพเชตเซเชเซเชฎเชพเช เชชเซเชฐเชคเซ เชฎเชพเชนเชฟเชคเซ เชจ เชนเชคเซ, เช เชจเซ เชเซเชเชฒเซเชเชตเชพเชฐ เชคเซ เชเซเชตเซ เชฐเซเชคเซ เชเชฐเชตเซเช เชคเซ เชธเชฎเชเชตเซเช เชชเชฃ เชฎเซเชถเซเชเซเชฒ เชนเชคเซเช. เชนเซเช เชเชถเชพ เชฐเชพเชเซเช เชเซเช เชเซ เชฎเชพเชฐเซ เช เชจเซเชญเชต เช เชจเซ เชจเชฟเชเชฆเซเชฐเชพ เชตเชฟเชจเชพเชจเซ เชฐเชพเชคเซ เชจเชฟเชฐเชฐเซเชฅเช เชจเชนเซเช เชเชพเชฏ, เช เชจเซ เช "เชเชธเซเชเชฎ เชเซเชตเซเชฐเซเช เชฐเซเชธเชฟเชชเซเชจเซ เชธเชเชเซเชฐเชน" เชคเชฎเชจเซ เชฅเซเชกเชพ เชเชฒเชพเชเซ เช เชฅเชตเชพ เชฌเซ เชเซเชคเชพ เชเซเชทเซ เชฌเชเชพเชตเชถเซ. เชคเซเชฅเซ, เชเชพเชฒเซ เชถเชฐเซ เชเชฐเซเช!
เชจเชฟเชฏเชฎเซ เชชเชฐ เชธเชพเชฎเชพเชจเซเชฏ เชฎเชพเชนเชฟเชคเซ
เชชเซเชฐเชฅเชฎ, เชเชพเชฒเซ เชเชเชณ เชถเซเช เชฅเชถเซ เชคเซเชจเซ เชตเชงเซ เชธเชพเชฐเซ เชธเชฎเชเชฃ เชฎเชพเชเซ, เชฅเซเชกเชพ เชฎเซเชณเชญเซเชค เชเซเชฏเชพเชฒเซ เช เชจเซ เชจเชฟเชฏเชฎเซ เชธเชพเชฅเซ เชเชพเชฎ เชเชฐเชตเชพเชจเซ เชชเซเชฐเชเซเชฐเชฟเชฏเชพ เชเซเชเช. เช เชจเซ เช เชชเชฃ เชเชพเชฐเชฃ เชเซ เชฆเชธเซเชคเชพเชตเซเชเซเชเชฐเชฃ เช เชตเชฟเชถเซ เชเชเชเชชเชฃ เชเชนเซเชคเซเช เชจเชฅเซ เช เชฅเชตเชพ เชฌเชเชงเชพเชฐเชฃเชฎเชพเช เชเซเชฌ เช เชซเซเชฒเชพเชฏเซเชฒเซเช เชเซ, เชเซ เชเซเชฌ เช เชจเซเชเซเชณ เชจเชฅเซ.
-
เชธเซเชเซเชจเชฟเชเช เชฆเชฐเชฎเชฟเชฏเชพเชจ เชจเชฟเชฏเชฎเซ เชถเชฐเซเชเชคเชฎเชพเช เชชเชธเชเชฆ เชเชฐเซเชฒเชพ เชชเซเชฐเซเชธเซเชเชจเชพ เชเชงเชพเชฐเซ เชฒเชพเชเซ เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ (เชธเชเซเชฐเชฟเชฏ เชจเชฟเชฏเชฎเซเชจเซ เชธเชฎเซเชน). เชคเชฎเซ เช เชฎเชฐเซเชฏเชพเชฆเชฟเชค เชธเชเชเซเชฏเชพเชฎเชพเช เชชเซเชฐเซเชธเซเชเซเชธ เชฌเชจเชพเชตเซ เชถเชเซ เชเซ, เช เชจเซ เชคเซเชฎเชจเซ เชเซเชตเซ เชฐเซเชคเซ เชธเซเชเซเชฐเชเซเชเชฐ เชเชฐเชตเซเช เชคเซ เชคเชฎเชพเชฐเซ เชชเซเชฐเชเซเชฐเชฟเชฏเชพเชจเซ เชตเชฟเชถเชฟเชทเซเชเชคเชพเช เชชเชฐ เชเชงเชพเชฐเชฟเชค เชเซ. เชคเชฎเซ เชคเซเชฎเชจเซ เชญเชพเชทเชพ เชฆเซเชตเชพเชฐเชพ เชเซเชฅเชฌเชฆเซเชง เชเชฐเซ เชถเชเซ เชเซ เช เชฅเชตเชพ เชฆเชฐเซเช เชชเซเชฐเซเชเซเชเซเช เชฎเชพเชเซ เชชเซเชฐเซเชธเซเชเซเชธ เชชเชธเชเชฆ เชเชฐเซ เชถเชเซ เชเซ. เชธเชเซเชฐเชฟเชฏ เชจเชฟเชฏเชฎเซเชจเซ เชธเชเชเซเชฏเชพ เชธเซเชเซเชจเซเชเชเชจเซ เชเชกเชช เช เชจเซ เชเซเชเชธเชพเชเชจเซ เช เชธเชฐ เชเชฐเซ เชเซ.
เชเซเชเชฎเชพเชฐเซเชเซเชธ เชเชจเซเชเชฐเชซเซเชธเชฎเชพเช เชชเซเชฐเซเชธเซเช เชธเซเช เชเชฐเชตเซเช
-
เชจเชฟเชฏเชฎเซ CxAuditor เชจเชพเชฎเชจเชพ เชตเชฟเชถเชฟเชทเซเช เชธเชพเชงเชจเชฎเชพเช เชธเชเชชเชพเชฆเชฟเชค เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ. เช เชเช เชกเซเชธเซเชเชเซเชช เชเชชเซเชฒเชฟเชเซเชถเชจ เชเซ เชเซ เชเซเชเชฎเชพเชฐเซเชเซเชธ เชเชฒเชพเชตเชคเชพ เชธเชฐเซเชตเชฐ เชธเชพเชฅเซ เชเซเชกเชพเชฏ เชเซ. เช เชเซเชฒเชฎเชพเช เชเชชเชฐเซเชถเชจเชจเชพ เชฌเซ เชฎเซเชก เชเซ: เชจเชฟเชฏเชฎเซเชจเซเช เชธเชเชชเชพเชฆเชจ เชเชฐเชตเซเช เช เชจเซ เชชเชนเซเชฒเชพเชฅเซ เชเชฐเซเชฒเชพ เชธเซเชเซเชจเชจเชพเช เชชเชฐเชฟเชฃเชพเชฎเซเชจเซเช เชตเชฟเชถเซเชฒเซเชทเชฃ.
CxAudit เชเชจเซเชเชฐเชซเซเชธ
-
เชเซเชเชฎเชพเชฐเซเชเซเชธเชฎเชพเช เชจเชฟเชฏเชฎเซ เชญเชพเชทเชพ เชฆเซเชตเชพเชฐเชพ เชตเชฟเชญเชพเชเชฟเชค เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ, เชเชเชฒเซ เชเซ, เชฆเชฐเซเช เชญเชพเชทเชพเชจเซ เชชเซเชคเชพเชจเซ เชเซเชตเซเชฐเซเชเชจเซ เชธเชฎเซเชน เชนเซเชฏ เชเซ. เชเซเชเชฒเชพเช เชธเชพเชฎเชพเชจเซเชฏ เชจเชฟเชฏเชฎเซ เชชเชฃ เชเซ เชเซ เชญเชพเชทเชพเชจเซ เชงเซเชฏเชพเชจเชฎเชพเช เชฒเซเชงเชพ เชตเชฟเชจเชพ เชฒเชพเชเซ เชชเชกเซ เชเซ, เช เชเชนเซเชตเชพเชคเชพ เชฎเซเชณเชญเซเชค เชชเซเชฐเชถเซเชจเซ เชเซ. เชฎเซเชเชพเชญเชพเชเซ, เชฎเซเชณเชญเซเชค เชชเซเชฐเชถเซเชจเซเชฎเชพเช เช เชจเซเชฏ เชจเชฟเชฏเชฎเซเชจเซ เชเชชเชฏเซเช เชเชฐเชคเซ เชฎเชพเชนเชฟเชคเซ เชถเซเชงเชตเชพเชจเซ เชธเชฎเชพเชตเซเชถ เชฅเชพเชฏ เชเซ.
เชญเชพเชทเชพ เชฆเซเชตเชพเชฐเชพ เชจเชฟเชฏเชฎเซเชจเซเช เชตเชฟเชญเชพเชเชจ
-
เชจเชฟเชฏเชฎเซ "เชเชเซเชเชฟเชเซเชฏเซเชเซเชฌเชฒ" เช เชจเซ "เชจเซเชจ-เชเชเซเชเซเชเซเชฏเซเชเซเชฌเชฒ" (เชเชเซเชเซเชเซเชฏเซเชเซเชก เช เชจเซ เชจเซเช เชเชเซเชเชฟเชเซเชฏเซเชเซเชฌเชฒ) เชเซ. เชฎเชพเชฐเชพ เชฎเชคเซ, เชคเชฆเซเชฆเชจ เชธเชพเชเซเช เชจเชพเชฎ เชจเชฅเซ, เชชเชฐเชเชคเซ เชคเซ เชคเซ เช เชเซ. เชฌเซเชเชฎ เชฒเชพเชเชจ เช เชเซ เชเซ "เชเชเซเชเชฟเชเซเชฏเซเชเซเชฌเชฒ" เชจเชฟเชฏเชฎเซเชจเชพ เช เชฎเชฒเซเชเชฐเชฃเชจเซเช เชชเชฐเชฟเชฃเชพเชฎ UI เชฎเชพเช เชธเซเชเซเชจ เชชเชฐเชฟเชฃเชพเชฎเซเชฎเชพเช เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เชฅเชถเซ, เช เชจเซ "เชจเซเชจ-เชเชเซเชเชฟเชเซเชฏเซเชเซเชฌเชฒ" เชจเชฟเชฏเชฎเซ เชซเชเซเชค เชคเซเชฎเชจเชพ เชชเชฐเชฟเชฃเชพเชฎเซเชจเซ เช เชจเซเชฏ เชตเชฟเชจเชเชคเซเชเชฎเชพเช เชเชชเชฏเซเช เชเชฐเชตเชพ เชฎเชพเชเซ เชเชฐเซเชฐเซ เชเซ (เชธเชพเชฐเชฎเชพเช, เชฎเชพเชคเซเชฐ เชเช เชเชพเชฐเซเชฏ).
เชฌเชจเชพเชตเชคเซ เชตเชเชคเซ เชจเชฟเชฏเชฎเชจเซ เชชเซเชฐเชเชพเชฐ เชจเชเซเชเซ เชเชฐเชตเซ
-
เชคเชฎเซ เชจเชตเชพ เชจเชฟเชฏเชฎเซ เชฌเชจเชพเชตเซ เชถเชเซ เชเซ เช เชฅเชตเชพ เช เชธเซเชคเชฟเชคเซเชตเชฎเชพเช เชฐเชนเซเชฒเชพ เชจเชฟเชฏเชฎเซเชจเซ เชชเซเชฐเซเชคเชฟ/เชซเชฐเซเชฅเซ เชฒเชเซ เชถเชเซ เชเซ. เชจเชฟเชฏเชฎเชจเซ เชซเชฐเซเชฅเซ เชฒเชเชตเชพ เชฎเชพเชเซ, เชคเชฎเชพเชฐเซ เชคเซเชจเซ เชตเซเชเซเชทเชฎเชพเช เชถเซเชงเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ, เชเชฎเชฃเซเช-เชเซเชฒเชฟเช เชเชฐเซ เช เชจเซ เชกเซเชฐเซเชช-เชกเชพเชเชจ เชฎเซเชจเซเชฎเชพเชเชฅเซ "เชเชตเชฐเชฐเชพเชเชก" เชชเชธเชเชฆ เชเชฐเซ. เช เชนเซเช เชฏเชพเชฆ เชฐเชพเชเชตเซเช เช เชเชคเซเชฏเชจเซเช เชเซ เชเซ เชจเชตเชพ เชจเชฟเชฏเชฎเซ เชถเชฐเซเชเชคเชฎเชพเช เชชเซเชฐเซเชธเซเชเซเชธเชฎเชพเช เชธเชฎเชพเชตเชฟเชทเซเช เชจเชฅเซ เช เชจเซ เชธเชเซเชฐเชฟเชฏ เชจเชฅเซ. เชคเซเชจเซ เชเชชเชฏเซเช เชถเชฐเซ เชเชฐเชตเชพ เชฎเชพเชเซ เชคเชฎเชพเชฐเซ เชคเซเชฎเชจเซ เชธเชพเชงเชจเชฎเชพเชเชจเชพ "เชชเซเชฐเซเชธเซเช เชฎเซเชจเซเชเชฐ" เชฎเซเชจเซเชฎเชพเช เชธเชเซเชฐเชฟเชฏ เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ. เชซเชฐเซเชฅเซ เชฒเชเซเชฒเชพ เชจเชฟเชฏเชฎเซ เชคเซเชฎเชจเซ เชธเซเชเชฟเชเชเซเชธ เชเชพเชณเชตเซ เชฐเชพเชเซ เชเซ, เชเชเชฒเซ เชเซ, เชเซ เชจเชฟเชฏเชฎ เชธเชเซเชฐเชฟเชฏ เชนเชคเซ, เชคเซ เชคเซ เชคเซเชตเซ เช เชฐเชนเซเชถเซ เช เชจเซ เชคเชฐเชค เช เชฒเชพเชเซ เชเชฐเชตเชพเชฎเชพเช เชเชตเชถเซ.
เชชเซเชฐเซเชธเซเช เชฎเซเชจเซเชเชฐ เชเชจเซเชเชฐเชซเซเชธเชฎเชพเช เชจเชตเชพ เชจเชฟเชฏเชฎเชจเซเช เชเชฆเชพเชนเชฐเชฃ
-
เชเชเซเชเซเชเซเชฏเซเชถเชจ เชฆเชฐเชฎเชฟเชฏเชพเชจ, เชตเชฟเชจเชเชคเซเชเชจเซเช "เชตเซเชเซเชท" เชฌเชจเชพเชตเชตเชพเชฎเชพเช เชเชตเซ เชเซ, เชเซ เชคเซเชจเชพ เชชเชฐ เชจเชฟเชฐเซเชญเชฐ เชเซ. เชจเชฟเชฏเชฎเซ เชเซ เชเซ เชฎเชพเชนเชฟเชคเซ เชเชเชคเซเชฐเชฟเชค เชเชฐเซ เชเซ เชคเซ เชชเซเชฐเชฅเชฎ เช เชฎเชฒเชฎเชพเช เชเชตเซ เชเซ, เช เชจเซ เชเซเช เชคเซเชจเซ เชเชชเชฏเซเช เชเชฐเซ เชเซ เชคเซ เชฌเซเชเชพ. เช เชฎเชฒเซเชเชฐเชฃเชจเซเช เชชเชฐเชฟเชฃเชพเชฎ เชเซเชถเซเชก เชเซ, เชคเซเชฅเซ เชเซ เชนเชพเชฒเชจเชพ เชจเชฟเชฏเชฎเชจเชพ เชชเชฐเชฟเชฃเชพเชฎเซเชจเซ เชเชชเชฏเซเช เชเชฐเชตเซ เชถเชเซเชฏ เชเซ, เชคเซ เชคเซ เชเชฐเชตเซเช เชตเชงเซ เชธเชพเชฐเซเช เชเซ, เช เชธเซเชเซเชจเชฟเชเช เชธเชฎเชฏเชจเซ เชเชเชพเชกเชถเซ.
-
เชจเชฟเชฏเชฎเซ เชตเชฟเชตเชฟเชง เชธเซเชคเชฐเซ เชฒเชพเชเซ เชเชฐเซ เชถเชเชพเชฏ เชเซ:
-
เชธเชฎเชเซเชฐ เชธเชฟเชธเซเชเชฎ เชฎเชพเชเซ - เชเซเชเชชเชฃ เชชเซเชฐเซเชเซเชเซเชเชจเชพ เชเซเชเชชเชฃ เชธเซเชเซเชจเชฟเชเช เชฎเชพเชเซ เชเชชเชฏเซเชเชฎเชพเช เชฒเซเชตเชพเชถเซ
-
เชเซเชฎ เชธเซเชคเชฐเซ (เชเซเชฎ) - เชซเชเซเชค เชชเชธเชเชฆ เชเชฐเซเชฒ เชเซเชฎเชฎเชพเช เชชเซเชฐเซเชเซเชเซเช เชธเซเชเซเชจ เชเชฐเชตเชพ เชฎเชพเชเซ เชเชชเชฏเซเชเชฎเชพเช เชฒเซเชตเชพเชถเซ.
-
เชชเซเชฐเซเชเซเชเซเช เชธเซเชคเชฐเซ - เชเซเชเซเชเชธ เชชเซเชฐเซเชเซเชเซเชเชฎเชพเช เชฒเชพเชเซ เชเชฐเชตเชพเชฎเชพเช เชเชตเชถเซ
เชจเชฟเชฏเชฎ เชเชฏเชพ เชธเซเชคเชฐเซ เชฒเชพเชเซ เชฅเชถเซ เชคเซ เชจเชเซเชเซ เชเชฐเชตเซเช
เชจเชตเชพ เชจเชฟเชถเชพเชณเซเชฏเชพ เชฎเชพเชเซ "เชถเชฌเซเชฆเชเซเชท".
เช เชจเซ เชนเซเช เชเซเชเชฒเซเช เชฌเชพเชฌเชคเซเชฅเซ เชถเชฐเซเชเชค เชเชฐเซเชถ เชเซเชจเชพ เชเชพเชฐเชฃเซ เชฎเชจเซ เชชเซเชฐเชถเซเชจเซ เชฅเชฏเชพ, เช เชจเซ เชนเซเช เชเชฃเซ เชฌเชงเซ เชคเชเชจเซเชเซ เชชเชฃ เชฌเชคเชพเชตเซเชถ เชเซ เชเซเชตเชจเชจเซ เชจเซเชเชงเชชเชพเชคเซเชฐ เชฐเซเชคเซ เชธเชฐเชณ เชฌเชจเชพเชตเชถเซ.
เชฏเชพเชฆเซเช เชธเชพเชฅเซ เชเชพเชฎเชเซเชฐเซ
- ะฒััะธัะฐะฝะธะต ะพะดะฝะพะณะพ ะธะท ะดััะณะพะณะพ (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);
เชเช เชเชพเชฐเซเชฏ: เชธเชเชตเซเชฆเชจเชถเซเชฒ เชกเซเชเชพเชจเซ เชธเซเชเชฟเชจเซ เชตเชฟเชธเซเชคเซเชค เชเชฐเซ เชเซ เชเซเชจเชพ เชชเชฐ เชธเชพเชงเชจ เชชเซเชฐเชคเชฟเชเซเชฐเชฟเชฏเชพ เชเชชเซ เชเซ
เชเชเซเชฒ: เชเซเชเชฎเชพเชฐเซเชเซเชธเชฎเชพเช เชฎเซเชณเชญเซเชค เชจเชฟเชฏเชฎเซ เชเซ, เชเซเชจเชพเช เชชเชฐเชฟเชฃเชพเชฎเซ เช เชจเซเชฏ เชเชฃเซ เชเซเชตเซเชฐเซ เชฆเซเชตเชพเชฐเชพ เชเชชเชฏเซเชเชฎเชพเช เชฒเซเชตเชพเชฏ เชเซ. เชเชฎเชพเชเชจเชพ เชเซเชเชฒเชพเช เชจเชฟเชฏเชฎเซเชจเซ เชคเชฎเชพเชฐเซ เชเชชเซเชฒเชฟเชเซเชถเชจ เชฎเชพเชเซ เชตเชฟเชถเชฟเชทเซเช เชกเซเชเชพ เชธเชพเชฅเซ เชชเซเชฐเช เชฌเชจเชพเชตเซเชจเซ, เชคเชฎเซ เชคเชฎเชพเชฐเชพ เชธเซเชเซเชจ เชชเชฐเชฟเชฃเชพเชฎเซเชจเซ เชคเชฐเชค เช เชธเซเชงเชพเชฐเซ เชถเชเซ เชเซ. เชคเชฎเชจเซ เชชเซเชฐเชพเชฐเชเชญ เชเชฐเชตเชพ เชฎเชพเชเซ เชจเซเชเซ เชเช เชเชฆเชพเชนเชฐเชฃ เชจเชฟเชฏเชฎ เชเซ:
เชธเชพเชฎเชพเชจเซเชฏ_เชเซเชชเชจเซเชฏเชคเชพ_เชเชฒเซเชฒเชเชเชจ_เชธเซเชเชฟ
เชเชพเชฒเซ เชธเชเชตเซเชฆเชจเชถเซเชฒ เชฎเชพเชนเชฟเชคเซ เชธเชเชเซเชฐเชนเชฟเชค เชเชฐเชตเชพ เชฎเชพเชเซ เช เชฎเชพเชฐเซ เชเชชเซเชฒเชฟเชเซเชถเชจเชฎเชพเช เชเชชเชฏเซเชเชฎเชพเช เชฒเซเชตเชพเชคเชพ เชเซเชเชฒเชพเช เชเชฒเซ เชเชฎเซเชฐเซเช:
// ะะพะปััะฐะตะผ ัะตะทัะปััะฐั ะฒัะฟะพะปะฝะตะฝะธั ะฑะฐะทะพะฒะพะณะพ ะฟัะฐะฒะธะปะฐ
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");
}
}
เช เชจเซ เช เชนเซเช เชเซเชเชฎเชพเชฐเซเชเซเชธ เชฎเชพเชเซเชจเซ เชตเชฟเชจเชเชคเซเชจเซเช เชเชฆเชพเชนเชฐเชฃ เชเซ, เชเซ เชคเชฎเชจเซ เชเชชเซเชฒเชฟเชเซเชถเชจเชฎเชพเชเชฅเซ เชกเซเชเชพ เชฎเชพเชเซ เชเชเซเชเชฟเช เชชเซเชเชจเซเช เชคเชฐเซเชเซ เชเชฟเชฎเซเชฌเชฐ เชชเชฆเซเชงเชคเชฟเชเชจเซ เชเซเชฒ เชเชฐเชตเชพเชจเซ เชตเซเชฏเชพเชเซเชฏเชพ เชเชฎเซเชฐเชตเชพเชจเซ เชฎเชเชเซเชฐเซ เชเชชเชถเซ:
เชเชจเซเชกเซเชฐเซเชเชก เชเชเชเชชเซเช เชถเซเชงเซ
// ะะพะปััะฐะตะผ ัะตะทัะปััะฐั ะฒัะฟะพะปะฝะตะฝะธั ะฑะฐะทะพะฒะพะณะพ ะฟัะฐะฒะธะปะฐ
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
. Android เชฎเชพเช เชธเซเชเชฟเชเช เชถเซเชงเชตเชพ เชฎเชพเชเซ เช เชฏเซเชเซเชฏ เชเซเชตเซเชฐเซ เชเซเชตเซ เชฆเซเชเชพเชฏ เชเซ เชเซ HTTP เชเซเชฐเชพเชซเชฟเชเชจเซ เชเชชเชฏเซเช เชเชฐเชตเชพเชจเซ เชฎเชเชเซเชฐเซ เชเชชเซ เชเซ:
// ะัะฐะฒะธะปัะฝัะน ะฒะฐัะธะฐะฝั ั ะธัะฟะพะปัะทะพะฒะฐะฝะธะตะผ cxXPath
result = cxXPath.FindXmlAttributesByNameAndValue("*.xml", 8, "cleartextTrafficPermitted", "true", false, true);
เชเชพเชฒเซ เชคเซเชจเซ เชฅเซเชกเซ เชตเชงเซ เชตเชฟเชเชคเชฎเชพเช เชเซเชเช, เชเชพเชฐเชฃ เชเซ เชคเชฎเชพเชฎ เชเชพเชฐเซเชฏเซ เชฎเชพเชเซเชจเซเช เชตเชพเชเซเชฏเชฐเชเชจเชพ เชธเชฎเชพเชจ เชเซ, เชคเชฎเซ เชเช เชถเซเชงเซ เชเชพเชขเซเชฏเชพ เชชเชเซ, เชคเชฎเชพเชฐเซ เชซเชเซเชค เชคเชฎเชจเซ เชเซเชเชคเซ เชเช เชชเชธเชเชฆ เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ. เชคเซเชฅเซ, เชเซเชฐเชฎเชถเช เชชเชฐเชฟเชฎเชพเชฃเซ เช เชจเซเชธเชพเชฐ:
-
"*.xml"
- เชถเซเชงเชตเชพ เชฎเชพเชเซเชจเซ เชซเชพเชเชฒเซเชจเซ เชฎเชพเชธเซเช -
8
โ เชเซ เชญเชพเชทเชพ เชฎเชพเชเซ เชจเชฟเชฏเชฎ เชฒเชพเชเซ เชเชฐเชตเชพเชฎเชพเช เชเชตเซเชฏเซ เชเซ เชคเซเชจเซเช id -
"cleartextTrafficPermitted"
- xml เชฎเชพเช เชฒเชเซเชทเชฃ เชจเชพเชฎ -
"true"
- เช เชฒเชเซเชทเชฃเชจเซเช เชฎเซเชฒเซเชฏ -
false
- เชถเซเชง เชเชฐเชคเซ เชตเชเชคเซ เชจเชฟเชฏเชฎเชฟเชค เช เชญเชฟเชตเซเชฏเชเซเชคเชฟเชจเซ เชเชชเชฏเซเช -
true
โ เชเชเชฒเซ เชเซ เชเซเชธเชจเซ เช เชตเชเชฃเชจเชพ เชเชฐเซเชจเซ เชถเซเชง เชเชฐเชตเชพเชฎเชพเช เชเชตเชถเซ, เชเชเชฒเซ เชเซ เชเซเชธ-เชธเชเชตเซเชฆเชจเชถเซเชฒ
เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, เช
เชฎเซ เชเช เชจเชฟเชฏเชฎเชจเซ เชเชชเชฏเซเช เชเชฐเซเชฏเซ เชเซ เชเซ เชเซเชเชพเชจเซ เชเชณเชเซ เชเซ, เชธเซเชฐเชเซเชทเชพเชจเชพ เชฆเซเชทเซเชเชฟเชเซเชฃเชฅเซ, Android เชฎเชพเช เชจเซเชเชตเชฐเซเช เชเชจเซเชเซเชถเชจ เชธเซเชเชฟเชเชเซเชธ เชเซ เชเซ HTTP เชชเซเชฐเซเชเซเชเซเชฒ เชฆเซเชตเชพเชฐเชพ เชธเชฐเซเชตเชฐ เชธเชพเชฅเซ เชธเชเชเชพเชฐ เชเชฐเชตเชพเชจเซ เชฎเชเชเซเชฐเซ เชเชชเซ เชเซ. เชเช เชตเชฟเชถเซเชทเชคเชพ เชงเชฐเชพเชตเชคเซ เชธเซเชเชฟเชเชเชจเซเช เชเชฆเชพเชนเชฐเชฃ cleartextTrafficPermitted
เช
เชฐเซเชฅ เชธเชพเชฅเซ true
:
<network-security-config>
<domain-config>
<domain includeSubdomains="true">example.com</domain>
<trust-anchors>
<certificates src="@raw/my_ca"/>
</trust-anchors>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">secure.example.com</domain>
</domain-config>
</domain-config>
</network-security-config>
เชเช เชเชพเชฐเซเชฏ: เชซเชพเชเชฒ เชจเชพเชฎ/เชชเชพเชฅ เชฆเซเชตเชพเชฐเชพ เชชเชฐเชฟเชฃเชพเชฎเซเชจเซ เชฎเชฐเซเชฏเชพเชฆเชฟเชค เชเชฐเซ
เชเชเซเชฒ: เชเชจเซเชกเซเชฐเซเชเชก เชฎเชพเชเซ เชฎเซเชฌเชพเชเชฒ เชเชชเซเชฒเชฟเชเซเชถเชจเชจเชพ เชตเชฟเชเชพเชธเชฅเซ เชธเชเชฌเชเชงเชฟเชค เชฎเซเชเชพ เชชเซเชฐเซเชเซเชเซเชเซเชธเชฎเชพเชเชจเชพ เชเชเชฎเชพเช, เช
เชฎเชจเซ เชจเชฟเชฏเชฎเซเชจเชพ เชเซเชเชพ เชนเชเชพเชฐเชพเชคเซเชฎเชเชคเชพ เชฎเชณเซเชฏเชพ เชเซ เชเซ เช
เชธเซเชชเชทเซเชเชคเชพ เชธเซเชเชฟเชเชเชจเซ เชจเชฟเชฐเซเชงเชพเชฐเชฟเชค เชเชฐเซ เชเซ. เชนเชเซเชเชค เช เชเซ เชเซ เชจเชฟเชฏเชฎ เชเชเช เชเชซ เชฌเซเชเซเชธ เชซเชพเชเชฒเชฎเชพเช เชถเซเชงเซ เชเซ 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 เชเซเชตเซเชฐเซ เชฌเชจเชพเชตเชตเชพเชจเซ เชเชฐเซเชฐ เชนเซเชฏ, เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, เชเซ เชคเชฎเชพเชฐเซ เชเซเชทเซเชเชเชจเชพ เชจเชพเชฎ เชชเชพเชธ เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชนเซเชฏ, เชคเซ เชคเชฎเซ เชเชชเชฐเซเชเชฐเชจเซ เชเชชเชฏเซเช เชเชฐเซ เชถเชเซ เชเซ. #$
, เชเซ เชเซเชตเซเชฐเซ (เชฒเชเชญเช เชธเซเชเซเชฐเชฟเชเช เชเซเชกเชพเชฃเชจเซ เชเซเชฎ)เชฎเชพเช เชกเซเชเชพเชจเซ เชธเซเชงเซ เช เชฌเชฆเชฒเซ เชจเชพเชเชถเซ.
เชเซเชก เชเชฆเชพเชนเชฐเชฃ:
// ะ ะพะฑัะตะผ ัะปััะฐะต - ะทะฝะฐัะตะฝะธั, ะบะพะฝััะพะปะธััะตะผัะต ะฟะพะปัะทะพะฒะฐัะตะปะตะผ
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");
เชจเชฟเชทเซเชเชฐเซเชท
เชนเซเช เชเชถเชพ เชฐเชพเชเซเช เชเซเช เชเซ เช เชฒเซเช เชคเซ เชฒเซเชเซ เชฎเชพเชเซ เชเชชเชฏเซเชเซ เชฅเชถเซ เชเซเช เชเซเชเชฎเชพเชฐเซเช เชเซเชฒ เชธเชพเชฅเซ เชคเซเชฎเชจเซ เชเชณเชเชพเชฃ เชถเชฐเซ เชเชฐเซ เชฐเชนเซเชฏเชพ เชเซ. เชเชฆเชพเช เชเซเช เชฒเชพเชเชฌเชพ เชธเชฎเชฏเชฅเซ เชชเซเชคเชพเชจเชพ เชจเชฟเชฏเชฎเซ เชฒเชเซ เชฐเชนเซเชฏเชพ เชเซ เชคเซเชเชจเซ เชชเชฃ เช เชฎเชพเชฐเซเชเชฆเชฐเซเชถเชฟเชเชพเชฎเชพเช เชเชเชเช เชเชชเชฏเซเชเซ เชฒเชพเชเชถเซ.
เชเชฎเชจเชธเซเชฌเซ, เชนเชพเชฒเชฎเชพเช เชเชตเชพ เชธเชเชธเชพเชงเชจเชจเซ เช
เชญเชพเชต เชเซ เชเซเชฏเชพเช เชเซเชเชฎเชพเชฐเซเชเซเชธเชจเชพ เชจเชฟเชฏเชฎเซเชจเชพ เชตเชฟเชเชพเชธ เชฆเชฐเชฎเชฟเชฏเชพเชจ เชจเชตเชพ เชตเชฟเชเชพเชฐเซ เชฎเซเชณเชตเซ เชถเชเชพเชฏ. เชคเซเชฅเซ เช เช
เชฎเซ เชฌเชจเชพเชตเซเชฏเซเช เชเซ
เชคเชฎเชพเชฐเซเช เชงเซเชฏเชพเชจ เชฌเชฆเชฒ เชเชญเชพเชฐ!
เชธเซเชฐเซเชธ: www.habr.com