
Igor
07.05.2018
11:03:44
Вопрос... Статического анализиатора под goland пока не существует?

Sergey
07.05.2018
11:09:55

Mike
07.05.2018
11:12:12
Зачем там факториал я так и не понял

Виктор
07.05.2018
11:12:13

Google

Виктор
07.05.2018
11:12:42
типа statickcheck или в сборке megacheck или еще больше gometalinter но там не только статический но и стилистический и другие
Просто го изначально разработан чтобы давать по рукам так что там много не насобираешь

Tigran
07.05.2018
11:13:38
Это что за статья?

Igor
07.05.2018
11:13:42
Просто по факту даже обращение с выходом за предела слайса не детектится
грустно же

Mike
07.05.2018
11:14:03

Igor
07.05.2018
11:14:03
panic: runtime error: index out of range

Виктор
07.05.2018
11:14:06
Так....это слайс же динамическая штука
туда и докинуть можно

Igor
07.05.2018
11:14:23
Согласен. Но простейший статик анализатор может указать по крайне мере ворнингом
Что может выйти обращение за предел

Виктор
07.05.2018
11:14:44
Он может путем глбокого изучения кода узнать что болше нигде в него не добавляют и тогда проверить границы
но это немного глупо

Google

Sergey
07.05.2018
11:14:54

Jentry
07.05.2018
11:15:08

Sergey
07.05.2018
11:15:10

Igor
07.05.2018
11:15:24
Нуу... как глупо. Я просто видел похожие проблемы в других языках и оно детектилось)
Просто думал есть инструмент и тут.

Виктор
07.05.2018
11:15:31
я сам пользуюсь металинтером
типа забытых ерроров
забытых контекстов
неправильное форматирование в принтах
и еще куча мелких вещей. Даже велосипеды иногда находит и говорит как лучше сделать стандартными средствами

Daniel
07.05.2018
11:16:57
металиннтер, как мы понимаем, обертка над десятком линтеров.

Виктор
07.05.2018
11:17:07
да да

Tigran
07.05.2018
11:17:12

Виктор
07.05.2018
11:17:17
неэффективно но пока других вариантов нет
Я слушал что собираются делать все линтеры в одном
а не вызовы в другим инструментам

Daniel
07.05.2018
11:17:57
а про анализатор, который ловит выход за границы слайса - это утопия в конкурентной программе. для однопоточной можно и написать, че...

Sergey
07.05.2018
11:18:38

Tigran
07.05.2018
11:18:38
ну, локального слайса

Google

Виктор
07.05.2018
11:18:43
Я про то и говорил что это глупо. Слишком много статическому анализатору нужно знать о коде чтобы такие вещи думать

Daniel
07.05.2018
11:19:00
фактически, надо его исполнять

Mike
07.05.2018
11:19:26
Два фаззера этому господину :)

Виктор
07.05.2018
11:19:47
А в многопоточной что отличается?
Конкурентное изменение его. Когда в однопоточном можно спрогнозировать примерно что проиойдет одно за другим то тут может наслаиваться и спрогнозировать почти невозможно

Sergey
07.05.2018
11:20:03

Виктор
07.05.2018
11:20:05
лучше тесты писать
они тебе и найдут много вещей таких

Daniel
07.05.2018
11:21:06

Tigran
07.05.2018
11:22:04
ну, тесты - это дорого

Daniel
07.05.2018
11:22:16
да

Виктор
07.05.2018
11:22:21
Дороже когда их нет чаще всего

Tigran
07.05.2018
11:22:23
и не то чтобы гонку данных легко было поймать тестом

Daniel
07.05.2018
11:22:26
поэтому их пишут, когда без них еще дороже

Tigran
07.05.2018
11:22:40
ну я к тому, что тесты - не альтернатива статическому анализу
иначе статических анализаторов вообще бы не существовало

Виктор
07.05.2018
11:22:52
Нет ни в коем случае

Tigran
07.05.2018
11:23:08
лучше иметь и то, и другое

Daniel
07.05.2018
11:23:31
кэп, перелогиньтесь

Google

Виктор
07.05.2018
11:23:34
Ну тут спорно) У них разные задачи да и тесты допустим в том же Си++ и Тесты в го это разные плюшки. ТАк как в Го они выполняются чуть ли не мгновенно
поэтому их удобно использовать

Igor
07.05.2018
11:23:49
Стоп... Вопрос же не в том что-бы гарантированно предсказать результат в конкуренции.

Виктор
07.05.2018
11:24:00
и поэтому тесты являются приятностью

Igor
07.05.2018
11:24:04
Вопрос в том что-бы предупредить о потенциальной возможности выхода за пределы слайса

Admin
ERROR: S client not available

Виктор
07.05.2018
11:24:17
Я могу такой написать

Daniel
07.05.2018
11:24:44

Виктор
07.05.2018
11:24:52
fmt.Println("Потенциально возможно выйти за пределы слайса. Апасна")

Igor
07.05.2018
11:25:25

Виктор
07.05.2018
11:25:27
Чтобы не выйти за пределы слайся

Daniel
07.05.2018
11:25:53

Виктор
07.05.2018
11:25:56
Простые случаи вроде локальных переменных внутри конкретной функции , которым не присвоен адрес извне ты можешь и сам санализировать. напиши линтер и бог с тобой
Но что-то реально полезное это уже морока
И то даже тут могут быть допущения

Ilya
07.05.2018
11:58:54
Привет, всем, есть вопрос: есть ли практики по шарингу swagger api schem-ы, я так понимаю можно просто отдельным рутом, но каким, и как версии отделять?

Daniel
07.05.2018
12:07:45
а?!

Artem
07.05.2018
12:23:16
а?!
Как я понял, как делиться свпггером с клиентами и как поставлять разные версии схемы

Alexander
07.05.2018
13:37:48
const End = 1
func main() {
var end byte = 1
fmt.Println(end == End)
}
всегда ли такой код будет корректно работать? или лучше привести константу к byte или переменную к int?

Google

Daniel
07.05.2018
13:39:24
такой - всегда, потому, что константа безтиповая, все приведения нужные сделает компилятор

Alexander
07.05.2018
13:39:31
вывод true в данном случае
понял, спасибо

Alexey
07.05.2018
15:14:36
коллега, а вы потестите производительность? очень интересно, будет ли быстрее (я вот думаю, что будет медленнее)
Ускорил в разы, но эта вещь только для определения совпадения регулярке, FindStringSubmatch из этого сделать сложно. Сделал этой вещью предварительную проверку на совпадение строки, а потом, если совпала, то уже штатным, этой же регуляркой как и раньше разбираю.
Load 27006 lines, skiped 1480858. Execution time: 26.199211173s
против
Load 27006 lines, skiped 1480858. Execution time: 6m28.098714719s

Daniel
07.05.2018
15:17:03
Круто! Спасибо за инфу

The
07.05.2018
16:03:59
за re2 идет спич чтобы включить в Go regexp пакет

Aleksandr
07.05.2018
16:06:05

The
07.05.2018
16:06:57
https://github.com/golang/go/issues/11646#issue-94162042

Aleksandr
07.05.2018
16:07:26
2015 год?

The
07.05.2018
16:08:27
ну не закрыто же

Aleksandr
07.05.2018
16:08:37
ну и спич же не идет

The
07.05.2018
16:09:49
спич идет, просто не так быстро, как хотелось бы. во всяком случае, все прекрасно знают, что регулярки в го медленные. а значит решение этой проблемы востребованно.
там если мне не изменяет память все упирается в то, что никто не выродил гошную версию re2.
точнее она вроде была
но не очень то тянет на то, чтобы её протащили в regexp

Nazary
07.05.2018
16:16:58
Медленные относительно го в принципе, или относительно других языков?