Pull to refresh
  • by relevance
  • by date
  • by rating

Опыт разработки плагина для Yasca

PHPDesigning and refactoring
В этой статье я хочу поделиться опытом использования одной полезной утилиты, позволяющей автоматизировать сборку и анализ качества кода. Речь пойдет о Yasca — свободно распространяемом ПО, представляющем собой небольшой PHP движок и набор утилит для выполнения анализа Java, С++ или PHP кода, включающего в себя PMD, JLint и RATS. Сама интеграция выполнения этих утилит осуществляется путем разработки небольших плагинов, на языке PHP. О процессе разработки такого плагина и пойдет речь далее.
Читать дальше →
Total votes 8: ↑4 and ↓4 0
Views2K
Comments 4

Проверка симулятора The Powder Toy

PVS-Studio corporate blogOpen sourceC++Game development
The Powder Toy является песочницей со свободной физикой, которая имитирует давление и скорость воздуха, тепла, тяжести и бесчисленное количество взаимодействий между различными веществами. Игра предоставляет различные строительные материалы, жидкости, газы и электронные компоненты, которые могут быть использованы для построения сложных машин, оружия, бомб, реалистичной местности и почти всего, что угодно. Вы можете просматривать и воспроизводить тысячи различных сделанных построек. Вот только в игре оказалось не всё так замечательно: для небольшого проекта размером в ~350 файлов было получено довольно много предупреждений статического анализатора. В этой статье будут описаны наиболее интересные места.
Читать дальше →
Total votes 29: ↑22 and ↓7 +15
Views15.3K
Comments 12

JetBrains на RubyConfBy в Минске 22 марта

JetBrains corporate blogRubyRuby on Rails
Привет, Хабр!

Уже в это воскресенье, 22 марта, в Минске пройдет однодневная конференция RubyConfBY, и наши докладчики уже пакуют чемоданы. В этот раз два Андрея, Андрей Вокин и Андрей Власовских, расскажут об инструментах, позволяющих находить ошибки в Ruby-коде без его выполнения. При этом, представляя команды RubyMine и PyCharm, они также попробуют сравнить Ruby и Python, чтобы понять, как стиль программирования влияет на статический анализ кода.

И немного о самой конференции со слов ее организаторов:
Читать дальше →
Total votes 4: ↑4 and ↓0 +4
Views1.9K
Comments 0

Вышел Upsource 3.5 с многочисленными изменениями

JetBrains corporate blogPHPJava
Привет, Хабр! На прошлой неделе мы выпустили новую версию нашего инструмента для code review и навигации по репозиториям, Upsource. Давайте посмотрим, какие изменения мы включили в этот релиз.

Обновленная страница проектов


Мы переосмыслили домашнюю страницу продукта и сделали ее более удобной как для тех компаний, у которых дюжина проектов, так и для тех, у кого счет проектов идет на сотни.

Помимо этого, домашняя страница в целом стала более информативной – теперь вы можете сразу увидеть не только проекты, добавленные в закладки, но и проекты с наибольшей активностью, недавно созданные проекты и проекты, в которых вы принимаете участие.

image
Читать дальше →
Total votes 18: ↑17 and ↓1 +16
Views5.9K
Comments 8

Стильный код на Python, или учимся использовать Flake8

DataArt corporate blogPython
Tutorial

Автор: Анатолий Соловей, developer

Язык программирования Python очень востребован на современном рынке, он развивается изо дня в день, и вокруг него сложилось активное сообщество. Во избежание конфликтов между разработчиками-питонистами, создатели языка написали соглашение PEP 8, описывающее правила оформления кода, однако даже там отмечено, что:
Many projects have their own coding style guidelines. In the event of any conflicts, such project-specific guides take precedence for that project.

В результате добавления новых правил количество требований к оформлению кода увеличилось настолько, что удержать их в голове стало очень трудно. При этом обращение к гайдам может занимать много времени и отвлекать от процесса разработки.

За долгое время работы у программистов вырабатывается собственный стиль написания кода, предпочтения в стайлгайдах и прочие мелочи, которые оставляют авторскую печать на программах девелопера. Убедить разработчиков отказаться от привычных им кодстайлов очень сложно, но, даже если это удастся, велик шанс, что в их коде будут проскакивать старые фишки, добавленные в силу привычки.

Когда каждый апдейт проходит строгий код ревью, включающий в себя проверку стилей, подобные ошибки могут очень сильно замедлять процесс разработки. А если ошибки в итоге не заметят даже в процессе ревью, в системе контроля версий проекта очень скоро появится куча нечитаемого и непонятного кода.

На помощь в этом случае приходят линтеры — инструменты, контролирующие оформление кода в проекте. Именно они помогают поддерживать его чистоту и, в нашем случае, предотвращать создание коммитов, которые могут содержать ошибки. Я для контроля качества использую Flake8 и сейчас постараюсь объяснить, почему выбрал именно его, и расскажу, как его настроить, чтобы получить максимальный результат. Заинтересовались? Добро пожаловать под кат.
Читать дальше →
Total votes 28: ↑26 and ↓2 +24
Views82.7K
Comments 15

Вышел Upsource 2017.2 с поддержкой внешних инспекций кода, Python, NPM и многим другим

JetBrains corporate blogPythonJavaScriptJava
Всем привет! У нас отличные новости — вышел Upsource 2017.2! В этом релизе мы добавили ряд наиболее часто запрашиваемых возможностей, и, как обычно, улучшили уже имеющуюся функциональность. Давайте посмотрим, что попало в этот релиз.

Поддержка внешних инспекций кода

Если Вы используете встроенные в TeamCity инспекции кода на базе ReSharper или IntelliJ IDEA, или пользуетесь инспекциями SonarQube, теперь Вы сможете извлечь из них дополнительную пользу. Upsource 2017.2 умеет показывать результаты такого анализа в своем UI, наряду с результатами встроенных инспекций. Рецензирование кода становится немного проще, если сразу видно, какие новые потенциальные проблемы привнесло именно это изменение.

Инспекции ReSharper в Upsource
Читать дальше →
Total votes 8: ↑8 and ↓0 +8
Views4.5K
Comments 10

Использование Roslyn для редактирования игрового контента

.NETGame developmentC#
Sandbox
Болтовня ничего не стоит. Покажите мне код.
— Linus Torvalds

Всем привет! Я работаю программистом в маленькой (но гордой) gamedev-конторе. В последние несколько лет фирма выпускает casual игры под мобилки в жанре match3. Пишем мы на C# (что не может не радовать) и не используем Unity (ну почти). Так сложилось, что основная зона моей ответственности — gameplay и UI. А ещё я без ума от C#’а и его экосистемы. Сегодня хочу рассказать, как у меня получилось применить инструмент анализа и модификации кода Roslyn для редактирования игрового контента. Кому интересно — прошу под кат.

Примечание. Разделы, в которых разбирается способ реализации и приводятся примеры кода отмечены с помощью [технический раздел] в заголовках. Если нет желания погружаться в детали на таком уровне, просто пропускайте их. На общем понимании идеи это не скажется.
Читать дальше →
Total votes 25: ↑25 and ↓0 +25
Views5.3K
Comments 7

Автоматизация импортов в Python

Abnormal programmingOpen sourcePythonProgrammingPerfect code
До После
import math
import os.path

import requests

# 100500 other imports

print(math.pi)
print(os.path.join('my', 'path'))
print(requests.get)
import smart_imports

smart_imports.all()

print(math.pi)
print(os_path.join('my', 'path'))
print(requests.get)
Так получилось, что аж с 2012 года я разрабатываю open source браузерку, являясь единственным программистом. На Python само собой. Браузерка — штука не самая простая, сейчас в основной части проекта больше 1000 модулей и более 120 000 строк кода на Python. В сумме же с проектами-спутниками будет раза в полтора больше.

В какой-то момент мне надоело возиться с этажами импортов в начале каждого файла и я решил разобраться с этой проблемой раз и навсегда. Так родилась библиотека smart_imports (github, pypi).

Идея достаточно проста. Любой сложный проект со временем формирует собственное соглашение об именовании всего. Если это соглашение превратить в более формальные правила, то любую сущность можно будет импортировать автоматически по имени ассоциированной с ней переменной.

Например, не надо будет писать import math чтобы обратиться к math.pi — мы и так можем понять, что в данном случае math — модуль стандартной библиотеки.

Smart imports поддерживают Python >= 3.5 Библиотека полностью покрыта тестами, coverage > 95%. Сам пользуюсь уже год.

За подробностями приглашаю под кат.
Читать дальше →
Total votes 45: ↑36 and ↓9 +27
Views15.4K
Comments 31

PVS-Studio: Engine of Progress

PVS-Studio corporate blog

Рисунок 1

A PVS-Studio team and our product make a great contribution to upgrading of software quality. Moreover, in addition to detecting errors in closed and open source projects, there is an indirect contribution to the development of compilers and other tools of code analysis. We are pleased that in some cases we are trendsetters and we decided to dedicate a small note to this in our blog.
Read more →
Total votes 24: ↑22 and ↓2 +20
Views412
Comments 0

PVS-Studio — двигатель прогресса

PVS-Studio corporate blog

Рисунок 1

Команда PVS-Studio и наш продукт делают большой вклад в развитие качества программного обеспечения. Причем, помимо явного обнаружения ошибок в закрытых и открытых проектах, происходит косвенный вклад в развитие компиляторов и других инструментов анализа кода. Нам приятно, что мы иногда являемся законодателями мод и мы решили посвятить этому небольшую заметку в нашем блоге.
Читать дальше →
Total votes 70: ↑54 and ↓16 +38
Views4.9K
Comments 25

VVVVVV??? VVVVVV!!! :)

PVS-Studio corporate blogProgrammingC++Game development
Если вы читаете этот текст – значит, вы либо подумали, что с заголовком статьи что-то не то, либо увидели в нём название знакомой компьютерной игры. VVVVVV – это инди-игра в жанре «платформер», завоевавшая сердца многих игроков своей приятной внешней простотой и не менее приятной внутренней сложностью. Несколько дней назад VVVVVV исполнилось 10 лет, и автор игры – Terry Cavanagh – отметил этот праздник публикацией её исходного кода. Что же «вкусненького» можно в нём найти? Ответ читайте в данной статье.

Рисунок 1

Читать дальше →
Total votes 43: ↑43 and ↓0 +43
Views25.7K
Comments 39

VVVVVV??? VVVVVV!!! :)

PVS-Studio corporate blogProgrammingC++Game development
If you're reading this text, you've either thought that something was wrong with the headline or you've seen the name of a familiar computer game. VVVVVV is an indie platformer game that has stolen the hearts of many players by its pleasant external simplicity and no less pleasant internal complexity. A few days ago, VVVVVV turned 10 years, and the author of the game — Terry Cavanagh — celebrated this holiday by publishing its source code. What mind-boggling things is it hiding? Read the answer in this article.

Рисунок 1
Read more →
Total votes 3: ↑3 and ↓0 +3
Views2K
Comments 0

CLion 2020.2: поддержка проектной модели Makefile, больше C++20 и не только

JetBrains corporate blogProgrammingC++C
Привет, Хабр!

У нашей команды выдалось очень насыщенное лето, результатами которого мы и спешим сегодня поделиться. Итак, встречайте новый релиз CLion 2020.2!

CLion release

Коротко о том, что вошло в новую версию:

  • Поддержка проектной модели Makefile.
  • Последние обновления в CMake.
  • Новые возможности C++20: explicit(bool), назначенные инициализаторы (designated initializers), циклы for на основе диапазонов с инициализаторами.
  • Обновленный статический анализатор кода: анализ на висячие указатели (dangling pointers), поиск возможностей упрощения кода, поиск неиспользуемого кода, анализ возвращаемого значения функции, ограниченной концептом.
  • Юнит-тестирование: поддержка нового фреймворка doctest, новые возможности Catch2 и Google Test. А также упрощение сбора метрик покрытия кода.
  • Обновления в плагине PlatformIO для разработки встроенных систем.
  • Улучшения в поддержке систем контроля версий.
  • Улучшения производительности редактора.
  • Исправления в отладчиках.
Читать дальше →
Total votes 24: ↑23 and ↓1 +22
Views4.9K
Comments 21

Финальный релиз этого года — CLion 2020.3! С новыми функциями в отладчике, проверками MISRA и улучшениями для Qt

JetBrains corporate blogProgrammingC++C
Привет, Хабр!

Год подходит к концу, и мы в JetBrains выпускаем традиционный «паровоз» релизов для наших десктопных инструментов. Про некоторые из них (WebStorm, DataGrip) мы уже писали тут на Хабре. А сегодня пришло время рассказать про обновление нашей кроссплатформенной среды разработки на C и C++ — CLion 2020.3!

CLion 2020.3 release

Коротко о самом главном:

  • В отладчике появились возможности исследовать дампы памяти и запускать конфигурацию с привилегиями администратора. А еще теперь можно перемещать точку исполнения по коду в любом направлении прямо во время сеанса отладки.
  • Для модульного тестирования мы добавили поддержку CTest — инструмента запуска тестов, идущего в комплекте с проектной моделью CMake.
  • Для проектов на Qt добавлены шаблоны для создания новых Qt-проектов и новых классов UI, функция автодополнения адаптирована для работы с сигналами и слотами, а автоимпорт следует принятому в Qt стилю.
  • Существенно расширилось множество проектов, использующих Makefile, которые можно успешно открывать в CLion. А для проектов CMake появилась возможность отключать временно неиспользуемые профили CMake.
  • Для разработчиков встроенных систем мы включили начальную поддержку стандартов MISRA C 2012 и MISRA C ++ 2008.
  • А также множество других улучшений для конфигураций запуска и отладки, в поддержке систем контроля версий и для режима удаленной разработки. Разнообразные приятные улучшения в UI. И… долгожданное превью нового сервиса для совместной разработки и парного программирования.

Новую версию можно скачать с сайта и попробовать бесплатно в течение 30 дней.Если у вас есть активная подписка на CLion или All Products Pack, просто обновите версию на 2020.3. Напоминаем, что при покупке годовой подписки на любой продукт предоставляется резервная бессрочная лицензия.

А теперь поговорим о нововведениях и улучшения версии 2020.3 подробнее.
Читать дальше →
Total votes 12: ↑12 and ↓0 +12
Views3.9K
Comments 45

Стоило ли столько ждать, чтобы найти баг?

PVS-Studio corporate blogC++Game developmentDevelopment Management
image1.png

Наверняка Вы задавались вопросом, чей код качественнее: у проекта с открытым кодом или закрытым? После прочтения нашего блога можно подумать, что все ошибки собрали проекты с открытым исходным кодом. Но это не совсем так. Ошибки есть во всех проектах, независимо от способа их хранения. А качество будет лучше там, где его повышают. Эта небольшая заметка о том, как в одном проекте исправляли баг 2 года, а могли бы сделать это за 5 минут.
Читать дальше →
Total votes 27: ↑22 and ↓5 +17
Views4.1K
Comments 14

Релиз CLion 2021.1: глобальный анализ потоков данных, улучшения для удаленной работы, постфиксное автодополнение

JetBrains corporate blogProgrammingC++C

Привет, Хабр!

В JetBrains стартовал новый релизный год: все наши десктопные продукты обновились или обновятся в самое ближайшее время. Сегодня мы хотим поговорить о CLion 2021.1 — новейшей версии нашей кроссплатформенной IDE для разработки на C и C++.

В этом обновлении много яркого и интересно
Total votes 12: ↑10 and ↓2 +8
Views3K
Comments 72