Ми вирішили в міру своїх сил регулярно шукати і усувати уразливості і баги в різних проектах. Можна назвати це допомогою open-source проектів. Можна — різновидом реклами або тестуванням аналізатора. Ще варіант — черговий спосіб залучення уваги до питань якості та надійності коду. Насправді, не важливо назва, просто нам подобається це робити. Назвемо це незвичайним хобі. Давайте подивимося, що цікавого було виявлено в коді різних проектів на цьому тижні. Ми знайшли час зробити виправлення і пропонуємо вам ознайомитися з ними.

Читати далі →

Перевіряємо вихідний код MSBuild з допомогою PVS-Studio



Працюючи над розвитком статичного аналізатора вихідного коду PVS-Studio, ми часто стикаємося з необхідністю перевірки на наявність помилок великих відкритих проектів від іменитих розробників. Той факт, що навіть в таких проектах вдається знайти помилки, робить нашу роботу набагато більш осмисленим. На жаль, все допускають помилки. Як грамотно була вибудувана система контролю якості готового програмного коду, немає абсолютно ніякої можливості уникнути особливостей «людського фактора». До тих пір, поки розробкою програм займаються люди, актуальність використання інструментів для пошуку помилок в коді, таких як PVS-Studio, не зменшиться. Сьогодні ми будемо шукати помилки у вихідному коді MSBuild, який, на жаль, теж не ідеальний.

Читати далі →

Боротьба з загадковими падіннями MSBuild на XamlTaskFactory

Наша команда розробляє багатоплатформовий ядро додатків, яке має збиратися на Windows під Visual Studio 2015, Linux з gcc 4.9+, MacOS, iOS, Android і Windows Phone 8.1+. Для автоматичної перевірки коду на Jenkins налаштовані складання під всі необхідні конфігурації. Завдання збірок відловити код, який не збирається на одній або декількох з платформ або не проходить юніт-тести і не дати йому потрапити до команд кінцевих додатків до внесення відповідних виправлень. Такий процес CI дозволяє розробнику локально використовувати зручну йому операційну систему і середовище розробки, будь то Visual Studio, XCode, QtCreator або взагалі vim + ninja, при цьому не боятися, що його зміни не зберуться або будуть валити тести в іншому оточенні.

В ідеальному світі червона зборка на Jenkins (саме він у нас використовується в ролі билдсервера) говорить про проблеми в коді. Побачивши червоне світло на висить у кутку кімнати моніторі, «черговий за збірку» повинен піти і поправити знайдену проблему. В реальності ж причини падіння білду можуть бути самими різними, наприклад, обрив з'єднання з нодой, на якій проходила компіляція, що закінчилося місце на диску або приліт інопланетян. Такі помилкові спрацьовування забирають зайвий час у команди, притупляють увагу і в цілому знижують довіру до CI в команді. Історію боротьби з однією з таких проблем я хочу розповісти.

Читати далі →

Впроваджуємо StyleCop в MSBuild

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

StyleCop

Завдання: реалізувати тотальну примусову перевірку коду (C#) на відповідність правилам оформлення.

Умова: тотально, примусово. Тобто весь код, що потрапляє на збірку, повинен бути перевірений в обов'язковому порядку. У разі виявлення порушень — build error і вперед, рефакторіть.

Інструменти: StyleCop, MSBuild (TFS або TeamCity — неважливо).

Читати далі →

Пишемо Custom MSBuild Task для деплоя (WMI included)

Добрий день! Одним прекрасним днем ми виявили, що наш MSBuild деплой проект не хоче працювати в новому середовищі: для створення і управління сайтами і пулами він використовував MSBuild.ExtensionPack. Падали помилки, пов'язані з недоступністю DCOM. Середовище міняти було не можна, тому до речі прийшлася можливість написання власних завдань для MSBuild: msdn.microsoft.com/en-us/library/t9883dzc.aspx, було прийнято рішення написати свої, які працювали б через WMI (доступний на середовищі) Кому цікаво, що вийшло, прошу під кат.

Читати далі →

Подієва модель побудови проектів і рішень Visual Studio для розробників

Ця невелика стаття допоможе:

  • Ознайомитися з подієвою моделлю побудови проектів і рішень MS Visual Studio;
  • Зрозуміти, як отримати підтримку Command-Line режиму devenv.exe для VSPackage (де він спочатку не передбачений);
  • Зрозуміти, як емулювати схожу модель подій від MSBuild Tools і транслювати на головний плагін;
  • Дізнатися, як працювати з пріоритетної підписці;
  • Дізнатися варіанти отримання контексту побудови при обробці подій Visual Studio / MSBuild Tools;
  • Дізнатися про оцінку MSBuild Property & MSBuild Property Functions;
  • Отримати загальні відомості міжмодульної взаємодії на шарі абстракції для різнорідних компонентів системи.

Синопсис

Мені досить часто доводиться займатися автоматизацією тих чи інших процесів, тому не дивно, що частина рішень рано чи пізно торкнулися і Visual Studio.

Насправді, ця стаття, або навіть замітка — результат робочого і вже давно написаного плагіна, який ще роки 2 тому був лише побічним продуктом при роботі над одним проектом на C++. Однак мій дебют на Хабрахабре буде, мабуть, з цього.

Читати далі →

MSBuild - Open Source на github

Сьогодні ми особливо раді повідомити що MSBuild (напевно, найбільш часто використовувана і найтаємничіша по документованості — прим. перекл.) — тепер доступний на github і ми вносимо його в список .NET Foundation! The Microsoft Build Engine (MSBuild) — це платформа для побудови додатків. Викликаючи msbuild на вашому проекті чи рішенні, ви можете організовувати і будувати свої продукти в середовищах, де немає встановленої MS Visual Studio. Наприклад, MSBuild використовується щоб будувати такі Open Source проекти, як .NET Core Libraries і .NET Core Runtime.



Ядро, бібліотеки, міграція на Mac/Linux, msbuild… Ще трохи і я повірю в вихід на github MS Visual Studio =)

Читати далі →

Visual Studio Extensibility. Частина перша: MSBuild

Привіт Хабр, в цих статтях я спробую висвітлити тему розширень Microsoft Visual Studio(а попутно ще й MSBuild), оскільки ця сфера є вкрай погано документованої і взагалі покрита пеленою якоїсь загадковості.



Читати далі →

AppVeyor

    Привіт, Хабр.
 
Я розробляю плагін під Java програми для запуску коду на. Net. Проект відкритий, викладений на GitHub. І в якийсь час я вирішив, що добре б знайти Continious Build & Test такий, щоб я зміг у ньому збирати продукт.
 
Після невеликих пошуків мені попалося на очі досить цікаве і просте рішення.
 
 Disclaimer: я не маю ніякого відношення до розробки цього продукту, не знаю автора і т.д. Мені просто сподобався цей сервіс, і я вирішив написати пост.
 
Читати далі →