Phoenix BSL β ΡΡΠΎ ΠΌΠΎΡΠ½ΡΠΉ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ ΠΊΠΎΠ΄Π° Π΄Π»Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ 1Π‘:ΠΡΠ΅Π΄ΠΏΡΠΈΡΡΠΈΠ΅, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ Π²ΡΡΠ²Π»ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ, ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π²ΡΡΠΎΠΊΠΎΠ΅ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΉ. ΠΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Π½Π° ΡΠ·ΡΠΊΠ΅ 1Π‘ (BSL), ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°Ρ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ Π±Π°Π³ΠΈ, ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ, Π½Π°ΡΡΡΠ΅Π½ΠΈΡ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠ² ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π΄Π°ΠΆΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ ΠΏΠΎ ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³Ρ.
Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΡΡΠ΅Π΄ΡΡΠ² ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ 1Π‘, Phoenix BSL ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ: ΠΎΡ ΠΏΠΎΠΈΡΠΊΠ° "ΠΌΡΡΡΠ²ΠΎΠ³ΠΎ" ΠΊΠΎΠ΄Π° Π΄ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² ΠΈ Π²ΡΡΠ²Π»Π΅Π½ΠΈΡ Π°Π½ΡΠΈΠΏΠ°ΡΡΠ΅ΡΠ½ΠΎΠ². ΠΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π²Π΅ΡΡΠΈΠΉ (Git, SVN), CI/CD-ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π°ΠΌΠΈ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°ΠΌΠΈ. Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΡΠ°Π·Π±Π΅ΡΡΠΌ, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ, Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Phoenix BSL Π΄Π»Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠΈΠΏΠΈΡΠ½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΈ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΈΡ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Phoenix BSL ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΎΠ½ Π½ΡΠΆΠ΅Π½ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ 1Π‘
Phoenix BSL β ΡΡΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ ΠΊΠΎΠ΄Π°, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ Π΄Π»Ρ ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΡ 1Π‘:ΠΡΠ΅Π΄ΠΏΡΠΈΡΡΠΈΠ΅. ΠΠ³ΠΎ ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ Π·Π°Π΄Π°ΡΠ° β Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° ΠΊΠΎΠ΄Π°, ΡΠ½ΠΈΠΆΠ°Ρ ΡΠΈΡΠΊ ΠΎΡΠΈΠ±ΠΎΠΊ Π½Π° ΡΡΠ°ΠΏΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΡ. ΠΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΡΠ·ΡΠΊΠΎΠΌ BSL (Built-in Script Language) ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π²ΡΠ΅ Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ 1Π‘, Π²ΠΊΠ»ΡΡΠ°Ρ 8.3.20+.
ΠΠ»ΡΡΠ΅Π²ΡΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° Phoenix BSL ΠΏΠ΅ΡΠ΅Π΄ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ:
- π ΠΠ»ΡΠ±ΠΎΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·: Π²ΡΡΠ²Π»ΡΠ΅Ρ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ, Π½ΠΎ ΠΈ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π±Π°Π³ΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ Π·Π°ΡΠΈΠΊΠ»ΠΈΠ²Π°Π½ΠΈΡ ΠΈΠ»ΠΈ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ Ρ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΠΌΠΈ.
- π ΠΠ΅ΡΡΠΈΠΊΠΈ ΠΊΠ°ΡΠ΅ΡΡΠ²Π°: ΠΎΡΠ΅Π½ΠΈΠ²Π°Π΅Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ ΠΊΠΎΠ΄Π° (ΡΠΈΠΊΠ»ΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ, Π³Π»ΡΠ±ΠΈΠ½Π° Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡΠΈ), ΡΡΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ "ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ½ΡΠ΅" ΡΡΠ°ΡΡΠΊΠΈ.
- π‘οΈ ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ: ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°Π΅Ρ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ SQL-ΠΈΠ½ΡΠ΅ΠΊΡΠΈΠΈ Π² Π·Π°ΠΏΡΠΎΡΠ°Ρ ΠΈΠ»ΠΈ Π½Π΅Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ².
- π ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ CI/CD: ΠΌΠΎΠΆΠ΅Ρ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈ ΠΊΠΎΠΌΠΌΠΈΡΠ΅ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ, Π±Π»ΠΎΠΊΠΈΡΡΡ ΡΠ±ΠΎΡΠΊΡ ΠΏΡΠΈ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΡΠΈΠ±ΠΊΠ°Ρ .
ΠΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΠΊΠ°ΠΊ Π΄Π»Ρ ΠΎΠ΄ΠΈΠ½ΠΎΡΠ½ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², ΡΠ°ΠΊ ΠΈ Π΄Π»Ρ ΠΊΡΡΠΏΠ½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ Ρ Π΄Π΅ΡΡΡΠΊΠ°ΠΌΠΈ ΡΡΡΡΡ ΡΡΡΠΎΠΊ ΠΊΠΎΠ΄Π° Phoenix BSL ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π΅Π΄ΠΈΠ½ΡΠΉ ΡΡΠΈΠ»Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΈΠ·Π±Π΅Π³Π°ΡΡ Π΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΈ ΡΠΎΠΊΡΠ°ΡΠ°ΡΡ Π²ΡΠ΅ΠΌΡ Π½Π° ΡΠ΅Π²ΡΡ ΠΊΠΎΠ΄Π°. ΠΠ°ΠΆΠ½ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ Π½Π΅ Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ ΡΡΡΠ½ΠΎΠ΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, Π½ΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΌΠ΅Π½ΡΡΠ°Π΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΡΠΈΠ±ΠΎΠΊ, ΠΏΠΎΠΏΠ°Π΄Π°ΡΡΠΈΡ Π² ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½, Π½Π° 30β50% (ΠΏΠΎ Π΄Π°Π½Π½ΡΠΌ ΠΎΡΡΡΡΠΎΠ² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ).
β οΈ ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: Phoenix BSL Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΌ ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠΌ ΡΠΈΡΠΌΡ 1Π‘. ΠΡΠΎ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΡΠΉ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎΠΌ. ΠΠ΅ΡΠ΅Π΄ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π² ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ Π»ΠΈΡΠ΅Π½Π·ΠΈΠΎΠ½Π½ΡΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ (MIT License).
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Phoenix BSL: ΠΏΠΎΡΠ°Π³ΠΎΠ²Π°Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ Π΄Π»Ρ Windows ΠΈ Linux
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Phoenix BSL ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ: ΡΠ΅ΡΠ΅Π· ΠΏΠ°ΠΊΠ΅ΡΠ½ΡΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ, ΠΈΠ· ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΎΠ² ΠΈΠ»ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π³ΠΎΡΠΎΠ²ΠΎΠ³ΠΎ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π°. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ°ΠΌΡΠΉ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ β ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ ΡΠ΅ΡΠ΅Π· Docker (ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΊΡΠΎΡΡ-ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ) ΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ Π½Π° Windows.
Π‘ΠΏΠΎΡΠΎΠ± 1: Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΠ΅ΡΠ΅Π· Docker (ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ)
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Docker ΡΠΏΡΠΎΡΠ°Π΅Ρ ΡΠ°Π·Π²ΡΡΡΡΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°. ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅:
docker pull ghcr.io/1c-syntax/bsl-language-server:latest
docker run -it --rm -v "${PWD}:/workspace" ghcr.io/1c-syntax/bsl-language-server:latest
ΠΠ΄Π΅ ${PWD} β ΠΏΡΡΡ ΠΊ Π²Π°ΡΠ΅ΠΌΡ ΠΏΡΠΎΠ΅ΠΊΡΡ 1Π‘. ΠΠΎΡΠ»Π΅ Π·Π°ΠΏΡΡΠΊΠ° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π½Π° ΠΏΠΎΡΡΡ 1145.
Π‘ΠΏΠΎΡΠΎΠ± 2: ΠΠΎΠΊΠ°Π»ΡΠ½Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π½Π° Windows
ΠΠ»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π±Π΅Π· Docker:
- Π‘ΠΊΠ°ΡΠ°ΠΉΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠ΅Π»ΠΈΠ· Ρ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ GitHub.
- Π Π°ΡΠΏΠ°ΠΊΡΠΉΡΠ΅ Π°ΡΡ
ΠΈΠ² Π² Π»ΡΠ±ΡΡ ΠΏΠ°ΠΏΠΊΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,
C:\PhoenixBSL\). - ΠΠΎΠ±Π°Π²ΡΡΠ΅ ΠΏΡΡΡ ΠΊ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠΌΡ ΡΠ°ΠΉΠ»Ρ (
bsl-language-server.exe) Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡPATH. - ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:
bsl-language-server --version
ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Phoenix BSL ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Java 11+, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° Kotlin/JVM. Π‘ΠΊΠ°ΡΠ°ΡΡ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ² Java ΠΌΠΎΠΆΠ½ΠΎ Ρ ΡΠ°ΠΉΡΠ° Adoptium.
- Docker
- ΠΠΎΠΊΠ°Π»ΡΠ½Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π½Π° Windows
- ΠΠΎΠΊΠ°Π»ΡΠ½Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π½Π° Linux
- ΠΡΡ Π½Π΅ ΡΠ΅ΡΠΈΠ»
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° Phoenix BSL Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° 1Π‘
ΠΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ Phoenix BSL Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π²Π°ΡΠΈΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ. ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π·Π°Π΄Π°ΡΡΡΡ Π² ΡΠ°ΠΉΠ»Π΅ .bsl-config.json, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡΡ Π² ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ°. ΠΡΠΈΠΌΠ΅Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ:
{
"mode": "full",
"srcDir": ["./src"],
"exclude": ["**/Tests/**"],
"rules": {
"FunctionShouldHaveReturn": "error",
"CyclesShouldNotBeNested": "warning"
}
}
ΠΠ»ΡΡΠ΅Π²ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ:
| ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ | ΠΡΠΈΠΌΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ |
|---|---|---|
mode |
Π Π΅ΠΆΠΈΠΌ Π°Π½Π°Π»ΠΈΠ·Π°: full (ΠΏΠΎΠ»Π½ΡΠΉ), quick (Π±ΡΡΡΡΡΠΉ) |
"full" |
srcDir |
ΠΠ°ΠΏΠΊΠΈ Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π° | ["src", "cf"] |
exclude |
ΠΡΠΊΠ»ΡΡΠ°Π΅ΠΌΡΠ΅ ΡΠ°ΠΉΠ»Ρ/ΠΏΠ°ΠΏΠΊΠΈ (ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ glob-ΡΠ°Π±Π»ΠΎΠ½Ρ) | ["**/Tests/**", "**/Old/**"] |
rules |
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΠΏΡΠ°Π²ΠΈΠ» (ΡΡΠΎΠ²Π½ΠΈ: error, warning, info) |
{"EmptyStatement": "error"} |
ΠΠ»Ρ Π·Π°ΠΏΡΡΠΊΠ° Π°Π½Π°Π»ΠΈΠ·Π° Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
bsl-language-server analyze --configPath ./.bsl-config.json --outputFile report.json
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΡΠΎΡ
ΡΠ°Π½ΡΠ½ Π² ΡΠ°ΠΉΠ» report.json Π² ΡΠΎΡΠΌΠ°ΡΠ΅, ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΠΌ Ρ SonarQube ΠΈ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° ΠΊΠ°ΡΠ΅ΡΡΠ²Π° ΠΊΠΎΠ΄Π°. ΠΠ»Ρ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΡΡΡΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ»Π°Π³ΠΈΠ½Ρ Π΄Π»Ρ VS Code ΠΈΠ»ΠΈ IntelliJ IDEA.
Π‘ΠΎΠ·Π΄Π°ΡΡ ΡΠ°ΠΉΠ» .bsl-config.json|Π£ΠΊΠ°Π·Π°ΡΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠ΅ ΠΏΡΡΠΈ ΠΊ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠ°ΠΌ|ΠΡΠΊΠ»ΡΡΠΈΡΡ ΡΠ΅ΡΡΠΎΠ²ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ|ΠΠ°ΡΡΡΠΎΠΈΡΡ ΠΊΡΠΈΡΠΈΡΠ½ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π° Π½Π° ΡΡΠΎΠ²Π΅Π½Ρ "error"|ΠΡΠΎΠ²Π΅ΡΠΈΡΡ Π²Π΅ΡΡΠΈΡ Java-->
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π° Π°Π½Π°Π»ΠΈΠ·Π° Π² Phoenix BSL: ΡΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ
Phoenix BSL Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π±ΠΎΠ»Π΅Π΅ 200 Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΠΏΡΠ°Π²ΠΈΠ», ΠΏΠΎΠΊΡΡΠ²Π°ΡΡΠΈΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π°ΡΠΏΠ΅ΠΊΡΡ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° ΠΊΠΎΠ΄Π°: ΠΎΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° Π΄ΠΎ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ½ΡΡ Π°Π½ΡΠΈΠΏΠ°ΡΡΠ΅ΡΠ½ΠΎΠ². ΠΡΠ°Π²ΠΈΠ»Π° ΡΠ°Π·Π΄Π΅Π»Π΅Π½Ρ Π½Π° ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ:
- π§ ΠΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΡ: ΠΎΡΠΈΠ±ΠΊΠΈ, ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡΠΈΠ΅ ΠΊ ΠΏΠ°Π΄Π΅Π½ΠΈΡΠΌ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ Π½Π΅ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΌ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌ).
- π Π‘ΡΠΈΠ»Ρ: Π½Π°ΡΡΡΠ΅Π½ΠΈΡ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠΉ ΠΎ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ (ΠΈΠΌΠ΅Π½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , ΠΎΡΡΡΡΠΏΡ).
- β‘ ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ: Π½Π΅ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΡΠΈΠΊΠ»Ρ ΠΏΠΎ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡΠΌ).
- π‘οΈ ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ: ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ (SQL-ΠΈΠ½ΡΠ΅ΠΊΡΠΈΠΈ, Ρ Π°ΡΠ΄ΠΊΠΎΠ΄ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ).
- π§© ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°: Π°Π½ΡΠΈΠΏΠ°ΡΡΠ΅ΡΠ½Ρ (Π±ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ, Π΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°).
ΠΡΠΈΠΌΠ΅ΡΡ ΠΊΡΠΈΡΠΈΡΠ½ΡΡ ΠΏΡΠ°Π²ΠΈΠ», ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠΎΠΈΡ Π²ΠΊΠ»ΡΡΠΈΡΡ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ:
- π¨
EmptyStatement: ΠΏΡΡΡΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ (ΠΡΠ»ΠΈ ... Π’ΠΎΠ³Π΄Π° ΠΠΎΠ½Π΅ΡΠΡΠ»ΠΈΠ±Π΅Π· ΡΠ΅Π»Π°). - π
NestedTernaryOperator: Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΡΠ΅ΡΠ½Π°ΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ (ΡΡ ΡΠ΄ΡΠ°ΡΡ ΡΠΈΡΠ°Π΅ΠΌΠΎΡΡΡ). - π
HardcodePassword: Ρ Π°ΡΠ΄ΠΊΠΎΠ΄ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ Π² ΠΊΠΎΠ΄Π΅. - π
CognitiveComplexity: Π²ΡΡΠΎΠΊΠ°Ρ ΠΊΠΎΠ³Π½ΠΈΡΠΈΠ²Π½Π°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² (ΠΏΠΎΡΠΎΠ³ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΡΡΡ).
Π§ΡΠΎΠ±Ρ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ Π½Π΅Π½ΡΠΆΠ½ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π°, Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΠΈΡ
Π² ΠΊΠΎΠ½ΡΠΈΠ³ Ρ ΡΡΠΎΠ²Π½Π΅ΠΌ "off":
"rules": {
"LineLength": "off", // ΠΡΠΊΠ»ΡΡΠ°Π΅ΠΌ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ Π΄Π»ΠΈΠ½Ρ ΡΡΡΠΎΠΊΠΈ
"MethodSize": "warning" // ΠΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΡΠΈ Π±ΠΎΠ»ΡΡΠΎΠΌ ΡΠ°Π·ΠΌΠ΅ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π°
}
β οΈ ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΠ΅ ΠΎΡΠΊΠ»ΡΡΠ°ΠΉΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ "ΠΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΡ" (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,UnreachableCodeΠΈΠ»ΠΈEmptyExceptBlock). ΠΡ Π½Π°ΡΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΡΠΈ Π²ΡΠ΅Π³Π΄Π° Π²Π΅Π΄ΡΡ ΠΊ Π±Π°Π³Π°ΠΌ Π² ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½Π΅.
ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Phoenix BSL Ρ VS Code ΠΈ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ°ΠΌΠΈ
ΠΠ»Ρ ΡΠ΄ΠΎΠ±Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Ρ Phoenix BSL ΠΏΡΡΠΌΠΎ Π² ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅ ΠΊΠΎΠ΄Π° ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ»Π°Π³ΠΈΠ½Ρ. ΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ:
- π VS Code: ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ BSL Language Server (ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ ΠΈΠ· Marketplace). ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΊΡ ΠΎΡΠΈΠ±ΠΎΠΊ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π°Π²ΡΠΎΠ΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈ Π±ΡΡΡΡΡΠ΅ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ (
Quick Fix). - π IntelliJ IDEA: ΠΏΠ»Π°Π³ΠΈΠ½ 1C:BSL (Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π² JetBrains Marketplace). ΠΠ½ΡΠ΅Π³ΡΠΈΡΡΠ΅ΡΡΡ Ρ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΠΈΠ½ΡΠΏΠ΅ΠΊΡΠΈΠΉ IDE.
- π GitHub Actions: ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΏΡΠΈ ΠΏΡΠ»Π»-ΡΠ΅ΠΊΠ²Π΅ΡΡΠ°Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ action.
ΠΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π΄Π»Ρ VS Code (.vscode/settings.json):
{
"bsl.languageServer.path": "C:/PhoenixBSL/bsl-language-server.exe",
"bsl.languageServer.trace.server": "verbose",
"bsl.diagnostics.enable": true
}
ΠΠΎΡΠ»Π΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΠ»Π°Π³ΠΈΠ½ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ΄ΡΡΡΠΊΠΈΠ²Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΏΡΡΠΌΠΎ Π² ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΈ ΠΏΠΎ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ Π½Π°ΡΡΡΠ΅Π½ΠΈΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π° FunctionShouldHaveReturn ΠΏΠΎΡΠ²ΠΈΡΡΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΠΎΠ·Π²ΡΠ°Ρ.
Π§ΡΠΎΠ±Ρ ΡΡΠΊΠΎΡΠΈΡΡ ΡΠ°Π±ΠΎΡΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° Π² Π±ΠΎΠ»ΡΡΠΈΡ
ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ
, ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅ ΠΈΠ· ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΏΠ°ΠΏΠΊΠΈ Ρ ΡΠ΅ΡΡΠ°ΠΌΠΈ ΠΈ Π²Π½Π΅ΡΠ½ΠΈΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ ΡΠ΅ΡΠ΅Π· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ exclude Π² ΠΊΠΎΠ½ΡΠΈΠ³Π΅.
Π’ΠΈΠΏΠΈΡΠ½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ Π² ΠΊΠΎΠ΄Π΅ 1Π‘, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°Ρ ΠΎΠ΄ΠΈΡ Phoenix BSL
Phoenix BSL ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π΅Π½ Π΄Π»Ρ Π²ΡΡΠ²Π»Π΅Π½ΠΈΡ ΡΠΊΡΡΡΡΡ Π±Π°Π³ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ Π»ΠΎΠ²ΡΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ 1Π‘. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ½Π½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΈ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΈΡ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ.
1. "ΠΡΡΡΠ²ΡΠΉ" ΠΊΠΎΠ΄ (UnusedLocalMethod)
ΠΡΠΎ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Ρ, Π½ΠΎ Π½ΠΈΠ³Π΄Π΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ. ΠΠ½ΠΈ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°ΡΡ ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΈ ΡΡΠ»ΠΎΠΆΠ½ΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ.
ΠΡΠΈΠΌΠ΅Ρ ΠΎΡΠΈΠ±ΠΊΠΈ:
ΠΡΠΎΡΠ΅Π΄ΡΡΠ° ΠΠ΅ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠ°ΡΠΡΠΎΡΠ΅Π΄ΡΡΠ°()
// ΠΡΠΎΡ ΠΊΠΎΠ΄ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ
ΠΠΎΠ½Π΅ΡΠΡΠΎΡΠ΅Π΄ΡΡΡ
ΠΠ°ΠΊ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ: Π£Π΄Π°Π»ΠΈΡΠ΅ Π½Π΅Π½ΡΠΆΠ½ΡΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΠΈΡ Π²ΡΠ·ΠΎΠ² Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΠΌΠ΅ΡΡΠ°Ρ .
2. ΠΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ Π·Π°ΡΠΈΠΊΠ»ΠΈΠ²Π°Π½ΠΈΡ (PossibleInfiniteLoop)
ΠΠ½Π°Π»ΠΈΠ·Π°ΡΠΎΡ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠΈΠΊΠ»Ρ Π±Π΅Π· ΡΠ²Π½ΠΎΠ³ΠΎ ΡΡΠ»ΠΎΠ²ΠΈΡ Π²ΡΡ ΠΎΠ΄Π°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
ΠΠΎΠΊΠ° ΠΡΡΠΈΠ½Π° Π¦ΠΈΠΊΠ»
// ΠΠ΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ ΡΠΈΠΊΠ»!
ΠΠΎΠ½Π΅ΡΠ¦ΠΈΠΊΠ»Π°;
Π Π΅ΡΠ΅Π½ΠΈΠ΅: ΠΠΎΠ±Π°Π²ΡΡΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ Π²ΡΡ ΠΎΠ΄Π° ΠΈΠ»ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΡΡΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ.
3. ΠΠ΅Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ ΠΊ Π±Π°Π·Π΅ (UnsafeQuery)
ΠΡΠΎ SQL-ΠΈΠ½ΡΠ΅ΠΊΡΠΈΠΈ ΠΈΠ»ΠΈ Π·Π°ΠΏΡΠΎΡΡ Π±Π΅Π· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², ΡΡΠ·Π²ΠΈΠΌΡΠ΅ ΠΊ Π°ΡΠ°ΠΊΠ°ΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
ΠΠ°ΠΏΡΠΎΡ = ΠΠΎΠ²ΡΠΉ ΠΠ°ΠΏΡΠΎΡ;
ΠΠ°ΠΏΡΠΎΡ.Π’Π΅ΠΊΡΡ = "ΠΠ«ΠΠ ΠΠ’Π¬ * ΠΠ Π‘ΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊ.ΠΠΎΠ½ΡΡΠ°Π³Π΅Π½ΡΡ ΠΠΠ ΠΠ°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ = """ + ΠΠ΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΉΠΠ²ΠΎΠ΄ + """";
ΠΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅: ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π·Π°ΠΏΡΠΎΡΠ°:
ΠΠ°ΠΏΡΠΎΡ.Π’Π΅ΠΊΡΡ = "ΠΠ«ΠΠ ΠΠ’Π¬ * ΠΠ Π‘ΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊ.ΠΠΎΠ½ΡΡΠ°Π³Π΅Π½ΡΡ ΠΠΠ ΠΠ°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ = &ΠΠ°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅";
ΠΠ°ΠΏΡΠΎΡ.Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΠΠ°ΡΠ°ΠΌΠ΅ΡΡ("ΠΠ°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅", ΠΠ΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΉΠΠ²ΠΎΠ΄);
Π§ΡΠΎ Π±ΡΠ΄Π΅Ρ, Π΅ΡΠ»ΠΈ ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ Phoenix BSL?
ΠΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ ΠΎ Π²ΡΡΠΎΠΊΠΎΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΊΠΎΠ΄Π° (CognitiveComplexity) ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ ΡΡΠ°Π½Π΅Ρ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° Ρ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡΡΡ ΡΡΠ»ΠΎΠ²ΠΈΠΉ Π±ΠΎΠ»Π΅Π΅ 5 ΡΡΠΎΠ²Π½Π΅ΠΉ ΡΡΠ΅Π±ΡΠ΅Ρ Π² 3 ΡΠ°Π·Π° Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π° ΠΎΡΠ»Π°Π΄ΠΊΡ (ΠΏΠΎ Π΄Π°Π½Π½ΡΠΌ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ Software Engineering Institute). ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΎΡΠΈΠ±ΠΊΠΈ ΡΠΈΠΏΠ° UnsafeQuery ΠΌΠΎΠ³ΡΡ ΡΡΠ°ΡΡ ΠΏΡΠΈΡΠΈΠ½ΠΎΠΉ ΡΡΠ΅ΡΠ΅ΠΊ Π΄Π°Π½Π½ΡΡ
ΠΈΠ»ΠΈ Π°ΡΠ°ΠΊ Π½Π° Π±Π°Π·Ρ 1Π‘.
ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Phoenix BSL
Phoenix BSL ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ, Π½ΠΎ ΠΈ ΡΠ»ΡΡΡΠ°ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ 1Π‘-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π²ΡΡΠ²Π»ΡΠ΅Ρ:
- π’ ΠΠ΅ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠ΅ ΡΠΈΠΊΠ»Ρ: Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΡΠΈΠΊΠ»Ρ ΠΏΠΎ Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡΠΌ (
NestedLoops). - ποΈ ΠΠΈΡΠ½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠ°Π±Π»ΠΈΡΡ: ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π΅Π½ΡΠΆΠ½ΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ°Π±Π»ΠΈΡ Π² Π·Π°ΠΏΡΠΎΡΠ°Ρ .
- π Π§Π°ΡΡΡΠ΅ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ Π±Π°Π·Π΅: ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΡΠ΅ Π²ΡΠ±ΠΎΡΠΊΠΈ ΠΎΠ΄Π½ΠΈΡ ΠΈ ΡΠ΅Ρ ΠΆΠ΅ Π΄Π°Π½Π½ΡΡ .
ΠΡΠΈΠΌΠ΅Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ: Π·Π°ΠΌΠ΅Π½Π° Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π° Π½Π° ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΠΎΠ²:
ΠΠ»ΠΎΡ ΠΎ (Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠΉ ΡΠΈΠΊΠ»):
ΠΠ»Ρ ΠΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π‘ΡΡΠΎΠΊΠ° ΠΠ· Π’Π°Π±Π»ΠΈΡΠ°1 Π¦ΠΈΠΊΠ»
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ = ΠΠ°ΠΏΡΠΎΡΡ.ΠΡΠΏΠΎΠ»Π½ΠΈΡΡ("ΠΠ«ΠΠ ΠΠ’Π¬ * ΠΠ Π’Π°Π±Π»ΠΈΡΠ°2 ΠΠΠ Π‘ΡΡΠ»ΠΊΠ° = " + Π‘ΡΡΠΎΠΊΠ°.Π‘ΡΡΠ»ΠΊΠ°);
ΠΠΎΠ½Π΅ΡΠ¦ΠΈΠΊΠ»Π°;
Π₯ΠΎΡΠΎΡΠΎ (ΠΎΠ΄ΠΈΠ½ Π·Π°ΠΏΡΠΎΡ):
ΠΠ°ΠΏΡΠΎΡ = ΠΠΎΠ²ΡΠΉ ΠΠ°ΠΏΡΠΎΡ;
ΠΠ°ΠΏΡΠΎΡ.Π’Π΅ΠΊΡΡ = "ΠΠ«ΠΠ ΠΠ’Π¬ Π’1.ΠΠΎΠ»Π΅1, Π’2.ΠΠΎΠ»Π΅2
|ΠΠ Π’Π°Π±Π»ΠΈΡΠ°1 ΠΠΠ Π’1
| ΠΠΠΠΠ Π‘ΠΠΠΠΠΠΠΠΠ Π’Π°Π±Π»ΠΈΡΠ°2 ΠΠΠ Π’2
| ΠΠ Π’1.Π‘ΡΡΠ»ΠΊΠ° = Π’2.Π‘ΡΡΠ»ΠΊΠ°";
ΠΠ»Ρ Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ PerformanceCriticalCode ΠΈ ΠΌΠ΅ΡΡΠΈΠΊΡ CognitiveComplexity. ΠΡΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΏΡΠ΅Π²ΡΡΠ°Π΅Ρ 20, ΡΠ°ΡΡΠΌΠΎΡΡΠΈΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π΅Π³ΠΎ ΡΠ°Π·Π±ΠΈΠ΅Π½ΠΈΡ Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π»ΠΊΠΈΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ.
Π Π΅Π³ΡΠ»ΡΡΠ½ΡΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΊΠΎΠ΄Π° Ρ Phoenix BSL ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠΊΡΠ°ΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠΆΠ΅Π»ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π² 1Π‘ Π½Π° 15β40% Π·Π° ΡΡΡΡ ΡΡΡΡΠ°Π½Π΅Π½ΠΈΡ "ΡΠ·ΠΊΠΈΡ ΠΌΠ΅ΡΡ".
FAQ: Π§Π°ΡΡΡΠ΅ Π²ΠΎΠΏΡΠΎΡΡ ΠΏΠΎ ΡΠ°Π±ΠΎΡΠ΅ Ρ Phoenix BSL
ΠΠ°ΠΊ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ Phoenix BSL Π΄ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ Π²Π΅ΡΡΠΈΠΈ?
ΠΠ»Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠ΅ΡΠ΅Π· Docker Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅:
docker pull ghcr.io/1c-syntax/bsl-language-server:latest
ΠΠ»Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠΊΠ°ΡΠ°ΠΉΡΠ΅ Π½ΠΎΠ²ΡΠΉ ΡΠ΅Π»ΠΈΠ· Ρ GitHub ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π² ΠΏΠ°ΠΏΠΊΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ.
ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Phoenix BSL Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΉ Π½Π° ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ ΡΠΎΡΠΌΠ°Ρ ?
ΠΠ°, ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π°Π½Π°Π»ΠΈΠ· ΠΊΠΎΠ΄Π° ΠΊΠ°ΠΊ Π΄Π»Ρ ΠΎΠ±ΡΡΠ½ΡΡ
, ΡΠ°ΠΊ ΠΈ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ
ΡΠΎΡΠΌ. ΠΠ»Π°Π²Π½ΠΎΠ΅ β ΡΠΊΠ°Π·Π°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠ΅ ΠΏΡΡΠΈ ΠΊ ΠΈΡΡ
ΠΎΠ΄Π½ΠΈΠΊΠ°ΠΌ Π² ΠΊΠΎΠ½ΡΠΈΠ³Π΅ (srcDir).
ΠΠ°ΠΊ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡ Phoenix BSL Ρ Jenkins?
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½ BSL Plugin Π΄Π»Ρ Jenkins ΠΈΠ»ΠΈ Π½Π°ΡΡΡΠΎΠΉΡΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ bsl-language-server analyze Π² ΡΡΠ°ΠΏΠ΅ ΡΠ±ΠΎΡΠΊΠΈ. ΠΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π΄Π»Ρ Jenkinsfile:
pipeline {
agent any
stages {
stage('BSL Analysis') {
steps {
bat 'bsl-language-server analyze --configPath .bsl-config.json --outputFile report.json'
}
}
}
}
Π§ΡΠΎ Π΄Π΅Π»Π°ΡΡ, Π΅ΡΠ»ΠΈ Phoenix BSL Π²ΡΠ΄Π°ΡΡ Π»ΠΎΠΆΠ½ΡΠ΅ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π½ΠΈΡ?
ΠΠΎΠΆΠ½ΡΠ΅ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π°Π²ΠΈΡΡ Π΄Π²ΡΠΌΡ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ:
- ΠΠΎΠ±Π°Π²ΠΈΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΠΈΠ»ΠΈ ΡΡΡΠΎΠΊΠΈ ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
// bsl:ignore:RuleName. - ΠΡΠΊΠ»ΡΡΠΈΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎ Π² ΠΊΠΎΠ½ΡΠΈΠ³Π΅, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΎ Π½Π΅Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎ Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
ΠΡΠΈΠΌΠ΅Ρ:
// ΠΡΠΎΡ ΠΊΠΎΠ΄ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ, ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅ΠΌ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅
// bsl:ignore:UnusedLocalVariable
ΠΠ΅ΡΠ΅ΠΌ ΠΠ΅ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠ°ΡΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ;
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π»ΠΈ Phoenix BSL Π°Π½Π°Π»ΠΈΠ· Π²Π½Π΅ΡΠ½ΠΈΡ ΠΎΡΡΡΡΠΎΠ² ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΎΠΊ?
ΠΠ°, Π½ΠΎ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ:
- Π Π°Π·ΠΌΠ΅ΡΡΠΈΡΡ ΡΠ°ΠΉΠ»Ρ ΠΎΡΡΡΡΠΎΠ²/ΠΎΠ±ΡΠ°Π±ΠΎΡΠΎΠΊ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΏΠ°ΠΏΠΎΠΊ, ΡΠΊΠ°Π·Π°Π½Π½ΡΡ
Π²
srcDir. - Π£Π±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΡΠ°ΠΉΠ»Ρ ΠΈΠΌΠ΅ΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅
.bslΠΈΠ»ΠΈ.os.
ΠΠ»Ρ Π°Π½Π°Π»ΠΈΠ·Π° .epf-ΡΠ°ΠΉΠ»ΠΎΠ² ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠΉΡΠ΅ ΠΈΡ
Π² ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉ ΡΠΎΡΠΌΠ°Ρ.