ΠΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ Π΄Π΅ΡΠ΅Π²Π° Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΉ (ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½Π°Ρ Π²Π΅ΡΡΠΈΡ)
2 ΡΠ΅ΡΠ²ΠΈΡΠ° - source-acquirer (Java) + ast-processor (Go)
ΠΠ»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° ΠΏΡΠΎΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΡΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Π² S3 - Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π² Π½Π°ΡΠ°Π»Π΅ Π² ci/cd ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π΅ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΡΡΡΠΊΠ° ΡΠ΅ΡΠ²ΠΈΡΠ° source-acquirer Ρ ΡΡΡΠ»ΠΊΠΎΠΉ Π½Π° gitlab. ΠΠ°Π»Π΅Π΅, ΡΠ΅ΡΠ²ΠΈΡ source-acquirer ΠΊΠ»ΠΎΠ½ΠΈΡΡΠ΅Ρ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Π² S3-Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΠΈ ΡΠΎΠ·Π΄Π°Π΅Ρ Π·Π°Π΄Π°ΡΡ Π² ΠΊΠ°ΡΠΊΠ΅ Π² ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ.
Π‘Π΅ΡΠ²ΠΈΡ go-ast-processor Π²ΡΡΠΈΡΡΠ²Π°Π΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· ΡΠΎΠΏΠΈΠΊΠ°, Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ ΠΊΠΎΠ΄ ΠΈΠ· Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΠΈ ΡΡΡΠΎΠΈΡ Π³ΡΠ°Ρ Π²ΡΠ·ΠΎΠ²ΠΎΠ² Π² Π°ΡΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΠΌ ΠΌΠ΅ΡΠΎΠ΄Π΅. ΠΡΠΈ ΡΡΠΎΠΌ Π²Π°ΠΆΠ½ΠΎ, ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ VTA. ΠΠΎΠ»ΡΡΠΈΠ²ΡΠΈΠΉΡΡ Π³ΡΠ°Ρ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ Π² Π³ΡΠ°ΡΠΎΠ²ΡΡ ΠΠ. ΠΠ°Π»Π΅Π΅, ΡΠ΅ΡΠ΅Π· ci/cd ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΊΠΎΠ΄Π°, ΡΠ΅ΡΠ΅Π· semgrep, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΡΡΠ΅Ρ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΡΠ΅Π· ΡΡΡΠΊΡ go-ast-processor, Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΠΎΡΡΠ΅ΡΠ΅ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠ΅ΠΉ ΡΡΡΠΎΠΈΡΡΡ Π³ΡΠ°Ρ Ρ ΠΈΠ· Π³ΡΠ°ΡΠΎΠ²ΠΎΠΉ ΠΠ. ΠΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΡΡΠ΅ΡΠΈΠΉ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ Π΄Π»Ρ ΡΠ΅ΡΠ²Π΅ΡΠ° Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² Π°Π½Π°Π»ΠΈΠ·Π° Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΡΠΌ ΡΠ΅Π»ΠΎΠΌ ΠΎΡΠ²Π΅ΡΠ° ΠΎΡ go-ast-processor.
ΠΡΡΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ Π½Π΅ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ Π²Π΅ΡΡ ΠΏΡΠΎΠ΅ΠΊΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° VTA, Π° Π±Π΅ΡΠ΅Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈΠ· ΠΎΡΡΠ΅ΡΠ° ΠΎΠ± ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠ°Ρ ΠΎΠ΄ΠΈΠΌ ΠΈΠΌΠΏΠΎΡΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΠΌ ΡΠ°ΡΡΠΈΡΠ½ΡΠΉ Π°Π½Π°Π»ΠΈΠ· VTA Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ². ΠΠ°Π»Π΅Π΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌ ΠΊΠ°ΠΆΠ΄ΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΈΠ· Π³ΡΠ°ΡΠ° Π²ΡΠ·ΠΎΠ²ΠΎΠ², Π΅ΡΠ»ΠΈ Π΅ΡΡΡ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ Π² ΠΌΠ΅ΡΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΠΌ Π°Π½Π°Π»ΠΈΠ· ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ. ΠΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ, ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠΎΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΈΡΠΎΠ³ΠΎΠ²ΡΠΌ, Π½ΠΎ Π½Π° ΠΏΠ΅ΡΠ²ΠΎΠΌ ΡΡΠ°ΠΏΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ Π²Π΅ΡΡ ΠΏΡΠΎΠ΅ΠΊΡ. ΠΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡ ΡΠ°Π½ΡΡΡ Π² redis Π΄Π»Ρ Π»ΡΡΡΠ΅ΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²ΡΠ΅ ΡΡΠ·Π²ΠΈΠΌΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π±ΡΠ΄ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Ρ.
ΠΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°:
- ΠΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ Π΄Π΅ΡΠ΅Π²Π° Π²ΡΠ·ΠΎΠ²ΠΎΠ² Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ
- ΠΠΎΠΆΠ½ΠΎ Π²ΡΡΠ²ΠΈΡΡ ΡΠ²ΡΠ·Ρ ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²ΡΠΌΡ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ, Π³Π΄Π΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ΄Π½Π° ΡΡΠ½ΠΊΡΠΈΡ Π²ΡΠ·ΡΠ²Π°Π΅Ρ Π΄ΡΡΠ³ΡΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΡΡΡΠΎΠΈΡΡ Π΄Π²Π° Π΄Π΅ΡΠ΅Π²Π° ΠΈ ΠΎΠ±ΠΎΠΉΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ· Π½ΠΈΡ .
- ΠΡΠ΅Π΄ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠΎ Π΄Π΅ΡΠ΅Π²Ρ Π²ΡΠ·ΠΎΠ²Π°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΈΠΏΠ΅.
- ΠΠΎΠΈΡΠΊ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ
ΠΠ»Π³ΠΎΡΠΈΡΠΌ VTA ΡΡΡΠΎΠΈΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠΉ Π³ΡΠ°Ρ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΡ ΡΠΈΠΏΠΎΠ², ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΡΠ΅Ρ ΠΏΠΎΡΠΎΠΊΠΈ Π΄Π°Π½Π½ΡΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅. ΠΠ½ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ ΡΠΈΠΏΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ Π»ΠΈΡΠ΅ΡΠ°Π»Ρ ΠΏΠΎ ΡΡΠΎΠΌΡ Π³ΡΠ°ΡΡ, ΡΡΠΎΠ±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΡΠΈΠΏΡ ΠΌΠΎΠ³ΡΡ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ. ΠΡΠΎΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠΎΡΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ².

