PVS-Studio corporate blog
Open source
Programming
C++
Machine learning
Comments 15
+1
Если проект разрабатывается Google, Microsoft или другими именитыми разработчиками, то его проверка и обнаружение ошибок – это, своего рода, вызов. К тому же, думаю, многим людям интересно, как ошибаются (или не ошибаются) разработчики из именитых корпораций.

Я наш статический анализ гоняю на коде AndroidStudio, потому что он под рукой. И как-то не в восторге от качества кода. Очень странная "индусятина" попадается. А ведь тоже гугл пишет. По-моему, качество кода наших ребят из JetBrains заметно лучше. Ну и плюс, видимо, процессы не на высоте. Вот улучшил dataflow-анализ, он теперь стал выдавать, что некоторое нетривиальное условие всегда ложно и тело if не выполняется. Глазами можно не увидеть, согласен. Но это значит, что не написан тест, который покрывает эту ветку, на покрытие тестами всем плевать и ревьюверы не заметили (если вообще ревью этого кода делалось).

+2
То есть, если подозрительное место окажется в макросе, и он используется в 1000 мест, то будет выдано 1000 предупреждений вместо одного? Если вы указываете исходные строки в предупреждении, то неужели так трудно проверить цепочку раскрытия макросов?
+2
Трудно. Мы используем внешний препроцессор и не контролируем процесс раскрытия. Но даже если бы контролировали, это не сильно что-то даст. Допустим мы видим где и как раскрывается макрос. Что дальше? Один раз макрос раскрылся в одном файле. Один раз в другом и так далее. Нужно ещё как-то понять взаимосвязь. Да и вообще, а кто сказал, что в макросе не может быть ошибки, которая к ужасу ещё и размножена?
0
Подозрительное место не в макросе, а в результате его раскрытия. Контрольный вопрос — если раскрытие макроса даёт ошибку в 1 случае из 1000, то выдавать ошибку в макросе или же в месте его раскрытия?
0
В месте раскрытия. Макросы могут раскрываться по разному (и иногда это дает ошибку, а иногда нет).
0
Правильный ответ :)

Возможно, конечно, имеет смысл в диагностике указать, что виноват макрос, но это спорный вопрос.
-1
Лучше сразу автора кода указывать виноватым :D Хотя что-то подобное в анализаторе уже есть.
-1

Я стесняюсь спросить, а вы найденные недостатки собираетесь оформить в виде баг репортов на github?

0

А вот это очень красиво и правильно. За это спасибо.


Раз уж речь зашла про машинное обучение, У вас нет в планах проверить пакет xgboost ?

0
Хм. Ну лет 5 мы уже не проверяли этот проект. Можно попробовать. Добавьте, пожалуйста, проект в список на GitHub, чтобы мы не забыли.
Only those users with full accounts are able to leave comments. , please.