Рекомендуемый add-ons/plugins для [закрытого] Microsoft Visual Studio

Что такое NullPointerException?

Хорошим местом для начала является JavaDocs . Они охватывают это:

Брошено, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:

  • Вызов метода экземпляра нулевого объекта.
  • Доступ или изменение поля нулевого объекта.
  • Выполнение длины null, как если бы это был массив.
  • Доступ или изменение слотов с нулевым значением, как если бы это был массив.
  • Бросать нуль, как если бы это было значение Throwable.

Приложения должны бросать экземпляры этого класса для указания других незаконных видов использования нулевого объекта.

blockquote>

Также, если вы попытаетесь использовать нулевую ссылку с synchronized, который также выдаст это исключение, за JLS :

SynchronizedStatement:
    synchronized ( Expression ) Block
  • В противном случае, если значение выражения равно null, NullPointerException.
blockquote>

Как это исправить?

Итак, у вас есть NullPointerException. Как вы это исправите? Возьмем простой пример, который выдает NullPointerException:

public class Printer {
    private String name;

    public void setName(String name) {
        this.name = name;
    }

    public void print() {
        printString(name);
    }

    private void printString(String s) {
        System.out.println(s + " (" + s.length() + ")");
    }

    public static void main(String[] args) {
        Printer printer = new Printer();
        printer.print();
    }
}

Идентифицирует нулевые значения

. Первый шаг - точно определить , значения которого вызывают исключение . Для этого нам нужно выполнить некоторую отладку. Важно научиться читать stacktrace . Это покажет вам, где было выбрано исключение:

Exception in thread "main" java.lang.NullPointerException
    at Printer.printString(Printer.java:13)
    at Printer.print(Printer.java:9)
    at Printer.main(Printer.java:19)

Здесь мы видим, что исключение выбрано в строке 13 (в методе printString). Посмотрите на строку и проверьте, какие значения равны нулю, добавив протоколирующие операторы или используя отладчик . Мы обнаруживаем, что s имеет значение null, а вызов метода length на него вызывает исключение. Мы видим, что программа перестает бросать исключение, когда s.length() удаляется из метода.

Трассировка, где эти значения взяты из

Затем проверьте, откуда это значение. Следуя вызовам метода, мы видим, что s передается с printString(name) в методе print(), а this.name - null.

Трассировка, где эти значения должны быть установлены

Где установлен this.name? В методе setName(String). С некоторой дополнительной отладкой мы видим, что этот метод вообще не вызывается. Если этот метод был вызван, обязательно проверьте порядок , что эти методы вызывают, а метод set не будет называться после методом печати. ​​

Этого достаточно, чтобы дать нам решение: добавить вызов printer.setName() перед вызовом printer.print().

Другие исправления

Переменная может иметь значение по умолчанию setName может помешать ему установить значение null):

private String name = "";

Либо метод print, либо printString может проверить значение null например:

printString((name == null) ? "" : name);

Или вы можете создать класс, чтобы name всегда имел ненулевое значение :

public class Printer {
    private final String name;

    public Printer(String name) {
        this.name = Objects.requireNonNull(name);
    }

    public void print() {
        printString(name);
    }

    private void printString(String s) {
        System.out.println(s + " (" + s.length() + ")");
    }

    public static void main(String[] args) {
        Printer printer = new Printer("123");
        printer.print();
    }
}

См. также:

Я все еще не могу найти проблему

Если вы попытались отладить проблему и до сих пор не имеете решения, вы можете отправить вопрос для получения дополнительной справки, но не забудьте включить то, что вы пробовали до сих пор. Как минимум, включите stacktrace в вопрос и отметьте важные номера строк в коде. Также попробуйте сначала упростить код (см. SSCCE ).

207
задан 10 revs, 9 users 50% 8 August 2012 в 16:29
поделиться

74 ответа

SmartPaster - (СВОБОДНЫЙ) Скопировать/вставить генератор кода для строк

AnkhSvn - (СВОБОДНАЯ) Интеграция Управления исходным кодом SVN для VS.NET

Сервер VisualSVN - (БЕСПЛАТНОЕ) Управление исходным кодом

ReSharper - улучшение IDE, которое помогает с рефакторингом и производительностью

CodeRush - генерал Code макросы на стероидах

, Осуществляет рефакторинг - помощь для рефакторинга Кода

(СВОБОДНЫЙ) CodeMaid - очистка Кода, организация и анализ сложности

CodeSmith - Генератор кода

GhostDoc - (СВОБОДНЫЙ) Простой инструмент комментария кода

(СВОБОДНЫЙ) DXCore и его много потрясающих плагинов: Плагины Сообщества DxCore , CR_Documentor, CodeStyleEnforcer, RedGreen

TestDriven. Сеть - (ОСВОБОЖДАЕТ/ПЛАТИТ) Поблочное тестирование, помогают

Отражатель - (ПЛАТА) Многофункциональный.Net Дизассемблер Отражатель AddIn

, веб-Проекты Развертывания - Обеспечивают дополнительную функциональность, чтобы создать и развернуть веб-сайты и веб-приложения ( источник ).

StudioTools - (БЕСПЛАТНЫЙ) помощник Навигации, кодируйте метрический инструмент, возрастающий поиск, файловый менеджер в Visual Studio и оторвите окна редактора. Перемещенный от [1 119] старый сайт (archive.org) к [1 120] новый сайт и прекращенный.

137
ответ дан 9 revs, 6 users 76% 23 November 2019 в 04:42
поделиться

шрифт Consolas Свободный шрифт от MS разработан для чтения кода.

5
ответ дан Seth Morris 23 November 2019 в 04:42
поделиться
7
ответ дан Glennular 23 November 2019 в 04:42
поделиться

+1 для Визуального Помогают, И я добавлю VLH (Визуальная Локальная История), который обеспечивает своего рода локальную систему управления исходным кодом. Каждый раз, когда Вы сохранили файл, плагин добавляют копию в локальном репозитории.

7
ответ дан 2 revs 23 November 2019 в 04:42
поделиться

Я использовал Визуальный, Помогают X в течение почти двух лет теперь, и я нахожу его столь полезным, что я могу честно сказать, что, если бы мой работодатель не обеспечил его, я должен был бы заплатить за него сам.
я также использую Прохладные Команды и SlickEdit (бесплатная версия), чьи инструменты File Explorer и Command Spy довольно полезны.

8
ответ дан Charles Anderson 23 November 2019 в 04:42
поделиться

http://trolltech.com/products/qt/"> спокойная Межплатформенная Среда разработки приложения

кварта является межплатформенной средой разработки приложения для настольной и встроенной разработки. Это включает интуитивный API и богатую библиотеку класса C++, интегрированные инструменты для разработки GUI и интернационализации, и поддержки Javaв „ў и разработки C++

, у Них есть плагин для Visual Studio, которая стоит небольшого количества денег, но это стоит каждого пенса.

8
ответ дан CodingWithoutComments 23 November 2019 в 04:42
поделиться

менеджер по Буферу обмена

Поддерживает Ваши данные буфера обмена посредством удаления строк, нескольких других хороших объектов, но что один один делает меня счастливым.

Regionerate

, В то время как у некоторых есть проблемы с регионами, я думаю, используете ли Вы их, этот инструмент для Вас. Автоматически region'izes Ваш код в соответствующие блоки региона. Полностью настраивающийся для пользовательских объектов и т.д.

9
ответ дан 2 revs 23 November 2019 в 04:42
поделиться

Что относительно IncrediBuild? Это - хорошая распределенная система сборки с интеграцией Visual Studio.

11
ответ дан Thomas Koschel 23 November 2019 в 04:42
поделиться

LinqPad является большим для тестирования linq к objects/xml/sql. Бесплатная загрузка.

12
ответ дан Wavel 23 November 2019 в 04:42
поделиться

+1 Визуальный Помогают.

неудачно, что Вам нужен плагин для получения действительно хорошего intellisense, но за это определенно стоит заплатить.

14
ответ дан Andrew Grant 23 November 2019 в 04:42
поделиться

Если Вы используете SVN для управления исходным кодом, определенно получаете VisualSVN. Это включает взаимодействия TortoiseSVN из IDE Visual Studio.

я также повторяю комментарий Resharper. Розничная цена немного крута, но если Вы - студент или иначе с точки зрения образования связанный, это на самом деле довольно дешево.

14
ответ дан Chris Farmer 23 November 2019 в 04:42
поделиться

Я нахожу Ghost Doc быть очень полезным.

GhostDoc является свободным дополнением для Visual Studio, которая автоматически генерирует комментарии документации XML для C#. Или при помощи существующей документации, наследованной от базовых классов или при помощи реализованных интерфейсов, или путем выведения комментариев из имени и типа, например, методов, свойств или параметров.

15
ответ дан Ray 23 November 2019 в 04:42
поделиться
18
ответ дан Brett Veenstra 23 November 2019 в 04:42
поделиться

Я - большой поклонник CodeRush и Осуществляю рефакторинг! Pro DevExpress. Я использовал их в течение многих лет, и без сомнения это делает меня более быстрым разработчиком. Кроме того, оба основаны на свободной платформе, названной DXCore, который позволяет Вам разрабатывать свои собственные плагины для Visual Studio, и небо является пределом там...

20
ответ дан Brian G Swanson 23 November 2019 в 04:42
поделиться

RockScroll является потрясающим, и свободным.

<час>

Приложение

Как @Andrei указывает, , MetalScroll является лучшей альтернативой. Это - Открытый исходный код и исправляет некоторые раздражающие вещи о RS

25
ответ дан 2 revs 23 November 2019 в 04:42
поделиться

PowerCommands является созданным Microsoft плагином, который предлагает множество новых возможностей, что можно было бы думать, вероятно, должен был быть в Visual Studio во-первых.

Они включают

  • Копирование/Вставка ссылок проекта!
  • "Открытый Содержащий Папку" для перехода прямо к местоположению жесткого диска файла или проекта
  • Автоматический reorganizig и сортирующий использования операторов
  • "Открытая Командная строка Здесь" для открытия командной строки в любой из папок проекта.
  • Проекты Коллапса
35
ответ дан Brad Tutterow 23 November 2019 в 04:42
поделиться

Я нашел этот сайт названным галерея Visual Studio - это имеет много дополнений Visual Studio. Я просматриваю его прямо сейчас, и я рекомендую всем посетить его.

5
ответ дан Paulius 23 November 2019 в 04:42
поделиться

Звуковое Средство поиска Файла для того, когда у Вас есть загрузки файлов в Ваших решениях и поиске их в проводнике решения, становится болью в запястье.

Вы могли бы также найти DPack интересный. Несколько инструментов и улучшений одновременно аккуратный пакет.

4
ответ дан Ishmaeel 23 November 2019 в 04:42
поделиться

Целый Помидор Визуальный Помогает X . Я абсолютно клянусь им. Я хотел бы видеть, что лучшее включает для Линт , чем Визуальный Линт Riverblade, но так как это в конечном счете перейдется на сервер сборки, я не возражаю выполнять его каждые несколько дней вручную.

52
ответ дан graham.reeds 23 November 2019 в 04:42
поделиться

Для связанного ноутбука или для тех с vi/vim привязками клавиш врезался в мозг, который я рекомендую ViEmu.

, Если Вы не попытались редактировать с vi привязками клавиш, вот то, почему можно хотеть попробовать ", Да ведь О, ДА ВЕДЬ сделайте те #?! nutheads используют vi?"

3
ответ дан 2 revs 23 November 2019 в 04:42
поделиться

Я люблю CopySourceAsToHTML как прохладное небольшое дополнение. Замечательно, если Вы хотите скопировать блоки кода для блоггинга и т.п. при поддержании форматирования синтаксиса.

я думаю, что это - все еще URL.. необходимо сделать некоторый физический труд для установки его с 08. http://www.jtleigh.com/people/colin/software/CopySourceAsHtml/

4
ответ дан Quintin Robinson 23 November 2019 в 04:42
поделиться

Если Вы делаете кодирование C++, передает Визуальный, Помогают .

4
ответ дан Michael Burr 23 November 2019 в 04:42
поделиться
  1. Microsoft StyleCop обеспечивает проверку стиля кода C#, мы используем все это время и любим его (свободный)
  2. , Axialis IconWorkshop имеет дополнение Visual Studio, которое теперь свободно для пользователей VS2008.
  3. Resharper Да другое голосование, потому что я не могу upvote все, кто предлагает его:)
  4. Свист Рабочей области для C++, я раньше жил Свистом Рабочей области, но не использовал его в VS2008, поскольку я не понял, что было обновление. Должен будет дать ему попытку снова.
4
ответ дан Simon Steele 23 November 2019 в 04:42
поделиться

+1 для CodeRush & Осуществите рефакторинг Pro. Я использовал CodeRush начиная с его воплощений Дельфи, и это совершенно замечательно. Молитва "Кода на скорости мысли" очень близко к действительности;)

4
ответ дан moobaa 23 November 2019 в 04:42
поделиться

MZTools является большим также.

4
ответ дан Scott Dorman 23 November 2019 в 04:42
поделиться

Не свободный, но ReSharper является определенно одной рекомендацией.

98
ответ дан Michael Stum 23 November 2019 в 04:42
поделиться

Документация AtomineerUtils Pro - автоматическое создание / обновление комментариев к документам DocXml / Doxygen / JavaDoc / Qt (аналогично GhostDoc, но более мощное и гибкое и поддерживает C #, C ++, C ++ / CLI, C, Java и код Visual Basic).

Стиль сгенерированных комментариев очень настраиваемый, и можно дополнительно применить автоматическое переформатирование (например, управление пробелами и перенос слов), чтобы комментарии оставались как можно более читаемыми. . Он также имеет множество помощников, позволяющих пользователям читать и преобразовывать большинство устаревших комментариев к документам в любой из вышеперечисленных форматов.

(Я автор, но считаю, что приведенное выше описание является точным и объективным. Эта надстройка был бесплатным, когда этот ответ был впервые добавлен, но для покрытия расходов на хостинг, поддержку и продолжение улучшения надстройки в ежемесячных выпусках,

3
ответ дан 23 November 2019 в 04:42
поделиться

Для разработки C# я использую:

  • ReSharper, в большой степени настроенный и с парой дюжины пользовательских действий, я записал (не говоря уже о странных но замечательных Живых Шаблонах)
  • GhostDoc - очень полезный для постобработки сгенерированного кода
  • Планировщик Исходного кода
  • , P/factor (ряд внутренне разработанного генерала кода инструменты для VS) - видят пример здесь
  • CodeGenUtils - другой внутренний dev для генерации кода, доступной на CodePlex
  • SharpWizard - дополнение VS для быстрого прототипирования. Поддержки усовершенствовали поколение интерфейсной поддержки, операторов, шаблонов, метаданных.
  • Анализатор Зависимости - действительно изящный инструмент (другой внутренний dev.) для идентификации зависимостей между свойствами CLR. Полезный для автоматической генерации уведомлений об изменении на основе графов зависимостей.

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

1
ответ дан Dmitri Nesteruk 23 November 2019 в 04:42
поделиться

Вот мой список:

1
ответ дан Enrico Campidoglio 23 November 2019 в 04:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: