﻿# PVS\-Studio и open\-source

Решил написать о работе нашей команды с open\-source проектами\. Перечислю, какие открытые проекты к данному моменту уже проверены с помощью анализатора PVS\-Studio\. Расскажу о планах\.


> Данная статья устарела\\\. Обновляемый список статей о проверенных проектах находится \[здесь\]\(https://pvs\-studio\.ru/ru/blog/inspections/\)\\\.

Мы хорошо относимся к открытым проектам\. Только не забывайте, открытость проекта вовсе не означает, что он разрабатывается исключительно энтузиастами ради всеобщего блага\. Многие проекты разрабатываются сотрудниками крупных компаний за зарплату\. Люди сидят в офисах с печеньками, программируют и пишут статьи о преимуществах открытого кода\.

Я хочу привести в порядок мысли людей, считающих, что раз проект open\-source, то за это надо быть обязанным: проверять код, предоставить регистрационный ключ для PVS\-Studio\. Мы часто так и поступаем, и рады помочь\. Но открытость кода, всего лишь означает, что компании по каким\-то причинам удобнее этот формат развития проекта\. При этом компании легко могут позволить себе приобрести PVS\-Studio\. Зачем нам отказываться от этого?

Всё, я прекращаю ворчать\. Просто несправедливо после проверки такого количества проектов, розданных ключей, получать упрёк, что мы плохо поддерживаем open\-source\. Список проверенных open\-source проектов, проверенных к настоящему времени с помощью PVS\-Studio:

* [Проверка 64\-битной версии библиотеки Loki](https://pvs-studio.ru/ru/blog/posts/cpp/a0049/)\. \(сентябрь 2009\)
* [Проверка WinMerge](https://pvs-studio.ru/ru/blog/posts/cpp/0082/) \(октябрь 2010\), [вторая проверка](https://pvs-studio.ru/ru/blog/posts/cpp/0139/) \(март 2012\)
* [Проверка Notepad\+\+](https://pvs-studio.ru/ru/blog/posts/cpp/0083/) \(ноябрь 2010\), [вторая проверка](https://pvs-studio.ru/ru/blog/posts/cpp/0131/) \(февраль 2012\)
* [Проверка Fennec Media Project](https://pvs-studio.ru/ru/blog/posts/cpp/0084/) \(ноябрь 2010\)
* [Проверка qutIM](https://pvs-studio.ru/ru/blog/posts/cpp/0084/) \(ноябрь 2010\)
* [Проверка TortoiseSVN](https://pvs-studio.ru/ru/blog/posts/0085/) \(декабрь 2010\)
* [Проверка Ultimate Toolbox](https://pvs-studio.ru/ru/blog/posts/cpp/0090/) \(декабрь 2010\)
* [Проверка Intel IPP Samples](https://pvs-studio.ru/ru/blog/posts/cpp/a0069/) \(январь 2011\), [вторая проверка](https://pvs-studio.ru/ru/blog/posts/cpp/0112/) \(октябрь 2011\), [третья проверка](https://pvs-studio.ru/ru/blog/posts/0144/) \(апрель 2012\)
* [Проверка Miranda IM](https://pvs-studio.ru/ru/blog/posts/cpp/a0070/) \(март 2011\)
* [Проверка Chromium](https://pvs-studio.ru/ru/blog/posts/cpp/a0074/) \(май 2011\), [вторая проверка](https://pvs-studio.ru/ru/blog/posts/cpp/0113/) \(октябрь 2011\)
* [Проверка QT](https://pvs-studio.ru/ru/blog/posts/cpp/a0075/) \(июль 2011\)
* [Проверка Apache HTTP Server](https://pvs-studio.ru/ru/blog/posts/0105/) \(июль 2011\)
* Проверка [Intel Energy Checker SDK](https://pvs-studio.ru/ru/blog/posts/cpp/0106/) \(июль 2011\)
* [Проверка Clang](https://pvs-studio.ru/ru/blog/posts/0108/) \(август 2011\), [втора проверка](https://pvs-studio.ru/ru/blog/posts/cpp/0155/) \(август 2012\)
* [Проверка ReactOS](https://pvs-studio.ru/ru/blog/posts/cpp/a0076/) \(сентябрь 2011\), [вторая проверка](https://pvs-studio.ru/ru/blog/posts/cpp/0192/) \(апрель 2013\)
* [Проверка Doom 3](https://pvs-studio.ru/ru/blog/posts/cpp/0120/) \(ноябрь 2011\)
* [Проверка Firefox](https://pvs-studio.ru/ru/blog/posts/cpp/a0078/) \(декабрь 2011\)
* [Проверка Quake III Arena GPL](https://pvs-studio.ru/ru/blog/posts/cpp/0130/) \(февраль 2012\)
* [Проверка TrinityCore](https://pvs-studio.ru/ru/blog/posts/cpp/0133/) \(февраль 2012\)
* [Проверка Dolphin\-emu](https://pvs-studio.ru/ru/blog/posts/cpp/0134/) \(февраль 2012\)
* [Проверка Blender](https://pvs-studio.ru/ru/blog/posts/cpp/0145/) \(апрель 2012\)
* [Проверка MAME](https://pvs-studio.ru/ru/blog/posts/cpp/0154/) \(июль 2012\)
* [Проверка Trans\-Proteomic Pipeline](https://pvs-studio.ru/ru/blog/posts/cpp/0156/) \(август 2012\)
* Не open\-source, но всем на пользу\. [Проверка библиотек Visual C\+\+](https://pvs-studio.ru/ru/blog/posts/cpp/0163/) \(сентябрь 2012\)
* [Проверка Tor](https://pvs-studio.ru/ru/blog/posts/cpp/0178/) \(ноябрь 2012\)
* [Проверка OpenSSL](https://pvs-studio.ru/ru/blog/posts/cpp/0183/) \(декабрь 2012\)
* [Проверка Casablanca](https://pvs-studio.ru/ru/blog/posts/0189/) \(март 2013\)
* [Проверка OpenCV](https://pvs-studio.ru/ru/blog/posts/cpp/0191/) \(март 2013\)
* Разные мелкие проекты, о которых не было написано статей\.

Наша команда проверяет проекты не безвозмездно\. Заметки о найденных ошибках являются рекламой для нас\. Мы этого не скрываем\. Но мне кажется это самая полезная реклама, которую вы когда\-либо видели\! PVS\-Studio действительно помогает open\-source сообществу\.

Возможно, вы заметите, что приведённые статьи сильно различаются по объему\. Это объяснимо\. Например, при написании [первой](https://pvs-studio.ru/ru/blog/posts/cpp/a0076/) статьи про ReactOS, в анализаторе было реализовано гораздо меньше правил, чем при [второй](https://pvs-studio.ru/ru/blog/posts/cpp/0192/) проверке\. За это время, анализатор научился находить в несколько раз больше ошибок\. Так что подобные статьи будут становиться со временем всё длиннее\. Теперь, нам приходится пропускать множество неубедительных ошибок, чтобы не превращать статью в справочник\. 

Обо всех найденных ошибках мы уведомляем разработчиков проектов\. При этом часто перечисляем больше подозрительных мест, чем описываем в статьях\. Мы также предоставляем ключ на некоторое время, чтобы они могли более тщательно проверить проект\. Если вы участвуете в open\-source проекте, [напишите нам](https://pvs-studio.ru/ru/about-feedback/)\. С некоторыми open\-source проектами у нас вообще складываются хорошее сотрудничество\. Они пишут нам о недостатках в PVS\-Studio, предлагают новые правила, а мы предоставляем им ключи\. Так что мы совсем не жадные, даже наоборот\. Достаточно просто попросить, а не требовать\.

Ещё мы предоставляем ключи людям, имеющим статус Microsoft MVP\. Правда, что\-то так никто и не обращался\. Решил напомнить\.

Вообще, прошу смелее писать нам\. Мы открыты к разным видам сотрудничества\. Можем написать совместную статью, провести какое\-то исследование\. Мы маленькая компания и пока у нас нет бюрократии\.

О планах\. Мы и далее планируем проверять открытые проекты и писать про это\. Попробуем расширить охват\. Например, теперь мы можем проверять проекты, собираемые с помощью MinGW\. Кстати, пишите нам о проектах, которые стоит проверить\. Ограничение \- эти проекты должны собираться в Windows\. А если более детально, то вот, что мы поддерживаем на данный момент:

* Visual Studio 2013 \- C, C\+\+, C\+\+11, C\+\+/CX \(WinRT\)
* Visual Studio 2012 \- C, C\+\+, C\+\+11, C\+\+/CX \(WinRT\)
* Visual Studio 2010 \- C, C\+\+, C\+\+0x
* Visual Studio 2008 \- C, C\+\+
* Visual Studio 2005 \- C, C\+\+
* Embarcadero RAD Studio XE3 \- C, C\+\+, C\+\+11
* Embarcadero RAD Studio XE2 \- C, C\+\+, C\+\+0x
* Embarcadero RAD Studio XE \- C, C\+\+
* Embarcadero RAD Studio 2010 \- C, C\+\+
* Embarcadero RAD Studio 2009 \- C, C\+\+
* MinGW \-  C, C\+\+, C\+\+11

Да, чуть не забыл напомнить\. На нашем сайте мы ведем [базу найденных ошибок](https://pvs-studio.ru/ru/blog/examples/)\. Думаю, многим из читателей будет любопытно побродить по ней\. Но гораздо интересней, что эту базу можно использовать как ресурс для выработки стандартов кодирования, новых рекомендаций в книгах и статьях по программированию\. В общем, эта база ждет своего Макконнелла, который сможет вырастить из этого книгу в духе "50 рекомендаций, как не сесть в лужу"\.