<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: roma romas</title>
    <description>The latest articles on DEV Community by roma romas (@roma_romas_a6b25cfcc81610).</description>
    <link>https://dev.to/roma_romas_a6b25cfcc81610</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3877879%2Fd464b0ca-d166-4816-a8de-d0e277a510a6.png</url>
      <title>DEV Community: roma romas</title>
      <link>https://dev.to/roma_romas_a6b25cfcc81610</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/roma_romas_a6b25cfcc81610"/>
    <language>en</language>
    <item>
      <title>CodeMap: мой первый плагин для Android Studio, который рисует то, что я не мог удержать в голове</title>
      <dc:creator>roma romas</dc:creator>
      <pubDate>Tue, 14 Apr 2026 06:14:50 +0000</pubDate>
      <link>https://dev.to/roma_romas_a6b25cfcc81610/codemap-moi-piervyi-plaghin-dlia-android-studio-kotoryi-risuiet-to-chto-ia-nie-mogh-udierzhat-v-gholovie-2ak8</link>
      <guid>https://dev.to/roma_romas_a6b25cfcc81610/codemap-moi-piervyi-plaghin-dlia-android-studio-kotoryi-risuiet-to-chto-ia-nie-mogh-udierzhat-v-gholovie-2ak8</guid>
      <description>&lt;p&gt;Привет!&lt;/p&gt;

&lt;p&gt;Меня зовут Роман, я начинающий Android-разработчик. И это мой первый плагин для JetBrains Marketplace.&lt;/p&gt;

&lt;p&gt;Сразу скажу: я не сеньор с десятью годами опыта, и у меня нет портфолио из пятнадцати проектов. Я обычный разработчик, который столкнулся с проблемой — и попытался её решить. Кажется, получилось неплохо.&lt;/p&gt;

&lt;p&gt;🤯 Проблема, которая меня доканала&lt;br&gt;
Когда я только начинал разбираться с Kotlin и Android, всё было понятно. Один Activity, пара кнопок, setOnClickListener — красота, всё перед глазами.&lt;/p&gt;

&lt;p&gt;А потом появились ViewModel, UseCase, Repository, DataSource, Dagger/Hilt, корутины, Flow... И в какой-то момент я поймал себя на том, что просто не могу удержать в голове картину происходящего. Вот нажали на кнопку — данные пошли куда-то туда, потом завернули сюда, потом что-то заэмитили... Я постоянно терял нить.&lt;/p&gt;

&lt;p&gt;Ctrl+Click помогает перейти к определению метода, но он не показывает путь. Он показывает дверь, но не коридор. А мне нужна была карта.&lt;/p&gt;

&lt;p&gt;И я начал рисовать эти цепочки на бумаге. Честно. Квадратики, стрелочки. Потом в Miro. А потом подумал: «Слушай, я же программист. Почему я это делаю руками?»&lt;/p&gt;

&lt;p&gt;Так родилась идея CodeMap.&lt;/p&gt;

&lt;p&gt;🗺 Что делает CodeMap?&lt;br&gt;
Если коротко: он строит интерактивный граф вызовов функций в вашем Kotlin-проекте.&lt;/p&gt;

&lt;p&gt;Выбираете точку входа (например, onCreate в MainActivity) — и плагин показывает, какие функции она вызывает, те вызывают следующие, и так по цепочке вниз. Визуально это выглядит как дерево или граф, где каждая нода — функция, а стрелки — вызовы.&lt;/p&gt;

&lt;p&gt;Фичи, которые я запилил:&lt;br&gt;
🎨 Цветовое кодирование&lt;br&gt;
Разные типы вызовов красятся по-разному:&lt;/p&gt;

&lt;p&gt;UI-вызовы&lt;/p&gt;

&lt;p&gt;Сетевые запросы&lt;/p&gt;

&lt;p&gt;Работа с базой данных&lt;/p&gt;

&lt;p&gt;Асинхронные операции (корутины)&lt;/p&gt;

&lt;p&gt;Системные вызовы&lt;/p&gt;

&lt;p&gt;Глаз сразу цепляется: «Ага, вот тут ViewModel лезет напрямую в SharedPreferences, а должен бы через Repository».&lt;/p&gt;

&lt;p&gt;🔀 Ветвление условий&lt;br&gt;
Если в коде есть if или when, плагин показывает оба пути. Можно кликнуть и пройти по нужной ветке. Удобно, когда разбираешь сложную бизнес-логику.&lt;/p&gt;

&lt;p&gt;🏛 Аудит архитектуры&lt;br&gt;
Это, наверное, самая амбициозная часть. Плагин автоматически проверяет проект на соответствие с выбранной архитектурой и показывает нарушения которые можно скачать.&lt;/p&gt;

&lt;p&gt;⚡ Навигация в один клик&lt;br&gt;
Кликаешь по ноде в графе — и сразу прыгаешь на нужную строку в коде. Никакого поиска по проекту, никакого Ctrl+Shift+F.&lt;/p&gt;

&lt;p&gt;🔄 Поддержка K2&lt;br&gt;
Плагин полностью работает с новым компилятором Kotlin K2. Никаких «ой, у меня новая версия студии, всё сломалось».&lt;/p&gt;

&lt;p&gt;🛠 Как пользоваться&lt;br&gt;
Всё просто:&lt;/p&gt;

&lt;p&gt;Установить плагин из Marketplace&lt;/p&gt;

&lt;p&gt;Нажать «🚀 Анализировать проект»&lt;/p&gt;

&lt;p&gt;Выбрать файл и функцию на боковой панели&lt;/p&gt;

&lt;p&gt;Разглядывать граф и тыкать в ноды&lt;/p&gt;

&lt;p&gt;⚠️ Важное замечание про среду выполнения&lt;br&gt;
Если окно инструмента пустое — не пугайтесь. Это значит, что ваша Android Studio запущена на JDK без поддержки JCEF (Chromium Embedded Framework). Решается за минуту:&lt;/p&gt;

&lt;p&gt;Shift+Shift → «Choose Boot Java Runtime for the IDE»&lt;/p&gt;

&lt;p&gt;Выбрать встроенный JetBrains Runtime (JBR) с поддержкой JCEF&lt;/p&gt;

&lt;p&gt;Перезапустить студию&lt;br&gt;
Примеры разбора проектов &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw0a3yy1pdu44otryyy6h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw0a3yy1pdu44otryyy6h.png" alt=" " width="800" height="397"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F40begbf3ajx94eeu2t7a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F40begbf3ajx94eeu2t7a.png" alt=" " width="800" height="402"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw50bz7gxr568dyx2w942.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw50bz7gxr568dyx2w942.png" alt=" " width="800" height="397"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🤔 Что дальше?&lt;br&gt;
Плагин живёт в JetBrains Marketplace. Он бесплатный. Я продолжаю его допиливать в свободное время.&lt;/p&gt;

&lt;p&gt;Буду очень рад обратной связи. Если что-то сломалось, если есть идеи по фичам, если просто хотите сказать «прикольно» или «фигня» — пишите в комментарии или создавайте issue на GitHub.&lt;/p&gt;

&lt;p&gt;Для меня это первый серьёзный проект, который вышел за пределы моего ноутбука. И честно — мне немного страшно и очень интересно, что вы скажете.&lt;/p&gt;

&lt;p&gt;Всем добра и читаемого кода! 🚀&lt;/p&gt;

&lt;p&gt;P.S. Если плагин покажется полезным — поставьте звёздочку на GitHub и лайк в Marketplace. Для начинающего разработчика каждая звёздочка как допамин прямо в мозг 😅&lt;/p&gt;

</description>
      <category>android</category>
      <category>productivity</category>
      <category>showdev</category>
      <category>tooling</category>
    </item>
  </channel>
</rss>
