Найти Ρ‚Π΅ΠΌΡƒ
2015 подписчиков

πŸ‘£ NilAway: Practical Nil Panic Detection for Go


Uber ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Go Π² качСствС основного языка программирования для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… сСрвисов ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ благодаря Π΅Π³ΠΎ высокой ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

Моно Ρ€Π΅ΠΏΠΎ Go являСтся самой большой ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·ΠΎΠΉ Π² Uber, Π½Π°ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ 90 ΠΌΠ»Π½. строк ΠΊΠΎΠ΄Π° (ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ расти). Π­Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ инструмСнтарий для написания Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π½Π° Go критичСски Π²Π°ΠΆΠ½ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ нашСй инфраструктуры Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ (ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, хранящиС Π² памяти адрСса Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π° Π½Π΅ ΠΈΡ… Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ значСния) ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π΅ΠΎΡ‚ΡŠΠ΅ΠΌΠ»Π΅ΠΌΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ языка программирования Go ΠΈ ΡΠΏΠΎΡΠΎΠ±ΡΡ‚Π²ΡƒΡŽΡ‚ эффСктивному ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ ΠΈ эффСктивному ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ программисты ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΏΡ€ΠΈ написании ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° языкС Go для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ†Π΅Π»Π΅ΠΉ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ модификация Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΎΠ±ΠΌΠ΅Π½ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, оптимизация использования памяти, ΠΎΠ±Π»Π΅Π³Ρ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с интСрфСйсами ΠΈ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ.

НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΌΠΎΡ‰Π½Ρ‹ΠΌ ΠΈ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌ инструмСнтом, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½ΠΎ ΠΈ Ρ€Π°Π·ΡƒΠΌΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ распространСнных ошибок, связанных с nil-ΠΏΠ°Π½ΠΈΠΊΠ°ΠΌΠΈ Π² ΠΊΠΎΠ΄Π΅.

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ описаны ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, Π° Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΎ интсрмСнтС ΠΎΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Uber NilAway β€” Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ статичСского Π°Π½Π°Π»ΠΈΠ·Π° для обнаруТСния Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… nil-ΠΏΠ°Π½ΠΈΠΊ Π² ΠΊΠΎΠ΄Π΅ Π½Π° Go, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Π»ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈΡ… Π²ΠΎ врСмя компиляции, Π° Π½Π΅ Π²ΠΎ врСмя выполнСния.

NilAway ΠΏΠΎΡ…ΠΎΠΆ Π½Π° nilness, Π½ΠΎ являСтся Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹ΠΌ инструмСнтом ΠΈ содСрТит ΠΌΠΎΡ‰Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ статичСского Π°Π½Π°Π»ΠΈΠ·Π° для отслСТивания ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² nil ΠΊΠ°ΠΊ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π°, Ρ‚Π°ΠΊ ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ.

πŸ“Œ Github

πŸ‘£ NilAway: Practical Nil Panic Detection for Go  Uber ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Go Π² качСствС основного языка программирования для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… сСрвисов ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ благодаря Π΅Π³ΠΎ высокой...
1 ΠΌΠΈΠ½ΡƒΡ‚Π°