intellisense visual studio что это

Возможности IntelliSense для Visual C++

IntelliSense — это имя, присвоенное набору возможностей, которые делают процесс кодирования более удобным. Технология IntelliSense для C++ доступна для автономных файлов, а также для файлов, являющихся частью проекта C++. В кроссплатформенных проектах некоторые возможности IntelliSense доступны в файлах .cpp и .c в проекте с общим кодом даже в том случае, если вы находитесь в контексте Android или iOS.

В этой статье представлены общие сведения о функциях IntelliSense в C++. Сведения о том, как настроить проект для IntelliSense, а также устранять проблемы, см. в статье Настройка проекта C++ для IntelliSense.

Возможности IntelliSense в C++

IntelliSense — это имя, присвоенное набору возможностей, которые делают процесс кодирования более удобным. У каждого человека существуют свои представления об удобстве, поэтому мы предоставили возможность включать и отключать почти все функции IntelliSense в разделе Текстовый редактор > C/C++ > Дополнительно в диалоговом окне Параметры. Диалоговое окно Параметры доступно через пункт Средства в строке меню.

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

Завершение операторов и список элементов

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

При первом вызове списка элементов отображаются только те элементы, которые доступны для текущего контекста. Если нажать сочетание клавиш CTRL+J, вы увидите полный список элементов, независимо от их доступности. Если данный список вызвать третий раз, будет показан еще более широкой список программных элементов. Список элементов можно отключить в диалоговом окне Параметры, выбрав Текстовый редактор > C/C++ > Общие > Автоматически отображать список членов.

Справка по параметрам

При наборе на клавиатуре открывающей фигурной скобки для вызова функции или угловой скобки в объявлении переменной шаблона класса редактор отображает небольшое окно с типами параметров для каждого события перегрузки функции или конструктора. Полужирным шрифтом выделяется тот элемент, который считается активным в текущий момент. Сведения о параметрах можно отключить в диалоговом окне Параметры, выбрав Текстовый редактор > C/C++ > Общие > Сведения о параметрах.

Краткие сведения

При наведении курсора мыши на переменную появляется небольшое окно, где отображаются сведения о типе и заголовок, в котором определяется тип. Чтобы увидеть сигнатуру функции, наведите указатель мыши на вызов функции. Краткие сведения можно отключить в диалоговом окне Параметры, выбрав Текстовый редактор > C/C++ > Расширенные > Auto Quick Info (Автоматически предоставляемые краткие сведения).

Выделение ошибок

Волнистые линии под программным элементом (переменной, ключевым словом, фигурной скобкой, именем типа и т. д.) указывают на фактическую или возможную ошибку в коде. Зеленая волнистая линия появляется при написании опережающего объявления и напоминает о том, что необходимо написать реализацию. Фиолетовая волнистая линия появляется в общем проекте при наличии ошибки в коде, который не является активным, например, когда вы работаете в контексте Windows, но вводите что-то, что будет ошибкой в контексте Android. Красная волнистая линия указывает на ошибку компилятора или предупреждение в активном коде, с которыми необходимо разобраться.

Выделение кода цветом и шрифты

Используемые по умолчанию цвета и шрифты можно изменить в диалоговом окне Параметры, выбрав Среда > Шрифты и цвета. Здесь можно изменять шрифты не только для редактора, но и для различных окон пользовательского интерфейса. Параметры, относящиеся к C++, начинаются с «C++». Другие параметры относятся ко всем языкам.

Кроссплатформенная технология IntelliSense

В проекте с общим кодом некоторые возможности IntelliSense, например волнистые линии, доступны даже в том случае, если вы работаете в контексте Android. При написании кода, который приводит к ошибке в неактивном проекте, IntelliSense будет по-прежнему отображать волнистые линии, но они будут иметь другой цвет, чем волнистые линии для ошибок в текущем контексте.

Рассмотрим приложение OpenGLES, настроенное для сборки для Android и iOS. На иллюстрации показан редактируемый общий код. На этом изображении активным проектом является iOS.StaticLibrary:

Обратите внимание на следующее.

Ветвь #ifdef в строке 6 неактивна, что означает неактивный регион, так как __ANDROID__ не определен для проекта iOS.

Идентификатор BYE в строке 12 подчеркнут фиолетовой волнистой линией. Этот идентификатор не определен в неактивном на данный момент проекте Android.NativeActivity. Несмотря на то, что эта строка компилируется, когда iOS является активным проектом, она не будет компилироваться, когда Android является активным проектом. Так как это общий код, его следует исправить, даже если он компилируется в активной конфигурации.

Если вы измените активный проект на Android, волнистые линии изменятся:

Ветвь #else в строке 8 неактивна, что означает неактивный регион, так как __ANDROID__ определяется для проекта Android.

Идентификатор BYE в строке 12 подчеркнут красной волнистой линией. Этот идентификатор не определен в активном проекте.

IntelliSense для автономных файлов

При открытии одного файла за пределами любого проекта функции IntelliSense по-прежнему остаются доступными. Отдельные возможности IntelliSense можно включить и (или) отключить в диалоговом окне Параметры, выбрав Текстовый редактор > C/C++ > Общие. Чтобы настроить IntelliSense для отдельных файлов, которые не входят в проект, найдите раздел IntelliSense и обозреватель для файлов, не входящих в проект.

По умолчанию в IntelliSense с одним файлом используются только стандартные каталоги включения для поиска файлов заголовка. Чтобы добавить дополнительные каталоги, откройте контекстное меню в узле Решение и добавьте каталог в список Исходный код отладки, как показано на следующей иллюстрации:

Включение и отключение функций

У каждого человека существуют свои представления об удобстве, поэтому мы предоставили возможность включать и отключать почти все функции IntelliSense в разделе Текстовый редактор > C/C++ > Дополнительно в диалоговом окне Параметры. Диалоговое окно Параметры доступно через пункт Средства в строке меню.

Читайте также:  различение звуков в соответствии с фонематическими признаками речи какой этап

Источник

Технология IntelliSense в Visual Studio

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

— это общее название автоматизированной справочной системы и технологии, лежащей в основе приложений, созданных с помощью инструментов компании Microsoft. Наиболее широко известным аспектом технологии IntelliSense является подчеркивание волнистой линией слов с орфографическими ошибками в текстовом редакторе Microsoft Word, а также небольшие визуальные индикаторы в листах электронной таблицы Microsoft Excel, информирующие пользователя о том что содержание конкретной ячейки не соответствует ожидаемому.

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

В системе Visual Studio уже довольно давно были реализованы аналогичные возможности. Фактически простейшие функции технологии IntelliSense были реализованы уже в среде разработки Visual Basic 6. С каждым новым выпуском системы Visual Studio компания Microsoft совершенствовала технологию IntelliSense, делая ее все более контекстно-чувствительной и внедряя ее более широко, чтобы разработчик всегда мог легко получить необходимую информацию.

Основы технологии IntelliSense

Простейшим свойством технологии IntelliSense является немедленная реакция на неправильный код. На рисунке ниже приведен один из примеров, в котором для инициализации объекта используются данные неизвестного типа. Поскольку тип этих данных неизвестен в том месте, где введен код, система Visual Studio подчеркивает строку красной (для языка C#) или синей (для языка VB) волнистой линией, чтобы обозначить проблему.

Изменить цвет линии подчеркивания можно с помощью группы переключателей Fonts and Colors в окне Options.

Оставив курсор мыши над неправильным фрагментом кода, разработчик увидит подсказку, объясняющую проблему. В данном примере курсор находится над типом данных, поэтому разработчик увидит подсказку «The type or namespace name ‘Customer’ could not be found».

Система Visual Studio имеет возможность обнаруживать такие ошибки, потому что она непрерывно осуществляет предварительную компиляцию кода, который вводится разработчиком, и ищет все, что может привести к ошибкам компиляции. Если бы разработчик добавил класс Customer в свой проект, то система Visual Studio автоматически обработала бы это действие и удалила бы маркер, поставленный средствами IntelliSense.

На рисунке ниже показан интеллектуальный дескриптор, ассоциированный с этой ошибкой. Он применяется только к ошибкам, для которых система Visual Studio 2013 может предложить конструктивный способ исправления. Непосредственно под неправильным фрагментом кода на экране появляется небольшой синий (для языка C#) или красный (для языка VB) маркер в виде прямоугольника. Поместив курсор мыши на этот маркер, разработчик увидит меню команд интеллектуального дескриптора для ошибок данного типа. В данном случае это меню содержит команды для генерации пользовательского класса Customer, с помощью которого система Visual Studio может определить способ его использования.

Технология интеллектуальных дескрипторов, применяемая в системе Visual Studio, предназначена не только для редактирования кода. По существу, система Visual Studio 2013 позволяет применять интеллектуальные дескрипторы и к визуальным элементам управления, когда разработчик редактирует форму или элемент управления в окне Design view.

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

Дополнение слова и фраз

Мощь технологии IntelliSense в системе Visual Studio 2013 становится очевидной сразу, как только пользователь начинает набирать код. По мере набора текста на экране открываются разнообразные списки, помогающие выбрать правильные типы членов класса, функций и их параметров, тем самым уменьшая количество потенциальных ошибок компиляции еще до того, как разработчик закончит набирать текст программы. Ознакомившись с функционированием инструментов IntelliSense, легко заметить, что существует возможность значительно сократить объем кода, который требуется набрать на самом деле. Это особенно важно для пользователей, работающих на таких многословных языках, как Visual Basic.

В старых версиях системы Visual Studio (ниже 2010) технология IntelliSense позволяла находить лишь члены классов, имена которых начинались с символов, набранных программистом в окне редактора кода. Начиная с системы Visual Studio 2010 это не так. Теперь можно найти слова, которые появляются и в середине имен членов класса. Для этого система осуществляет поиск границ слова в именах членов классов. На рисунке ниже приведен пример на языке C#, в котором, набрав слово Console.In, пользователь получает варианты In, InputEncoding, OpenStandardInput, SetIn и TreatControlCAsInput, но не LargestWindowHeight, несмотря на то, что это слово содержит подстроку «in».

Если вы точно знаете, что ищете; введите первую букву каждого слова в верхнем регистре. Например, если набрать System.Console.OSI, то подсистема IntelliSense найдет слово OpenStandardInput.

Список членов классов

Поскольку технология IntelliSense разрабатывается уже давно, большинство разработчиков знакомы со списком членов классов, который появляется при наборе имен, завершающихся точкой. Это значит, что программист собирается сослаться на член класса и система Visual Studio автоматически выводит список членов классов, доступных для данного объекта:

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

На рисунке выше продемонстрирован также еще один полезный аспект списка членов классов для программистов, работающих на языке Visual Basic. Корешки закладок Common и All (в нижней части списка членов класса) позволяют увидеть либо совместно используемые члены классов, либо их полный список. Фильтровать список свойств, методов и событий по свойствам доступа можно только для языка Visual Basic.

Читайте также:  что делать если котят раздали а у кошки осталось молоко

Режим подсказок

По умолчанию, когда система Visual Studio 2013 выводит на экран список членов IntelliSense, можно выбрать только один элемент списка. По мере ввода последующих символов подсветка перемещается на элемент, который лучше остальных соответствует набранным символам. Если нажать клавиши или или набрать один из символов фиксации (например, открывающую скобку), то выделенный в данный момент элемент списка будет вставлен в окно редактора кода. Это поведение, предусмотренное по умолчанию, называется режимом дополнения (completion mode).

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

На рисунке ниже приведен пример задачи, для решения которой предназначен режим подсказок. В левой части рисунка программист набирает текст для нового метода Load из класса CustomerData. Класс CustomerData еще не содержит метода Load, но в нем уже есть класс LoadAll. Справа, показано, что программист набрал имя Load, за которым следует открывающая круглая скобка. Система IntelliSense неправильно предположила, что разработчик подразумевал метод LoadAll, и вставила его в окно редактора.

Stub Completion

Режим заглушки в системе Visual Studio 2013 представляет собой новый этап, позволяя программистам делать то же самое при перегрузке интерфейсов и методов. Когда разработчик добавляет определенные конструкции кода, такие как интерфейс или определение класса, в языке C#, система Visual Studio дает ему возможность автоматически генерировать код, необходимый для реализации данного интерфейса. Для того чтобы продемонстрировать, как это работает, рассмотрим этапы, которые проходит система IntelliSense, генерируя реализацию интерфейса для простого класса.

Запускаем систему Visual Studio 2013 и создаем проект типа C# Windows Forms Application. Когда интегрированная среда разработки сгенерирует первоначальный код, открываем файл Form1.cs в окне редактора кода.

В начало файла добавляем директиву using, чтобы открыть доступ к пространству имен System.Collections.Generic.

Добавляем в начало определения класса строку:

Поскольку мы набираем интерфейс IEnumerable, система Visual Studio сначала добавляет красную волнистую линию в конце фрагмента, чтобы показать, что в определении класса нет фигурных скобок, а затем добавляет индикатор интеллектуального дескриптора перед именем интерфейса:

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

Интерфейс, который получится в результате, показан на рисунке ниже:

Свойство Generate From Usage

Для того чтобы понять, как это свойство можно использовать на практике, рассмотрим этапы создания очень простого класса Customer с помощью некоего клиентского кода, использующего этот класс, а затем генерирующего его в зависимости от способа использования:

Запускаем систему Visual Studio 2013 и создаем проект типа C# Command Line. Когда интегрированная система разработки будет готова к работе, открываем файл Program.cs.

Включаем в метод Main следующий код C#:

Оба раза, когда имя Customer встречается в тексте программы, оно подчеркивается красной волнистой линией. Щелкаем правой кнопкой на одном из них и выбираем команду Generate Class. Она создает новый класс Customer в нашем проекте. Открываем файл Customer.cs и видим пустое объявление класса. Система Visual Studio выяснит, что FirstName, LastName, FullName и Save не являются членами класса.

Для каждого не существующего в классе свойства щелкаем правой кнопкой на его имени и выбираем команду Generated Property. Снова открываем файл Customer.cs и видим, что система Visual Studio способна сама создать его реализацию.

То же самое можно повторить для метода Save, щелкнув на его имени правой кнопкой и выбрав команду Generated Method Stub.

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

Если неопределенный код, который разработчик пытается сгенерировать, является типом, то можно выбрать команду Generate Class или Generate New Type. Если выбрать команду Generate New Type, то откроется диалоговое окно Generate New Туре:

Оно предоставляет пользователю много возможностей для конфигурации нового типа, включая выбор его разновидности: класс, перечисление, интерфейс или структура; уровень доступа: открытый (public), закрытый (private) или внутренний (internal), а также его местонахождение.

Информация о параметрах

В старых версиях инструментов разработки программ, выпущенных компанией Microsoft, например в системе Visual Basic 6, как только пользователь создавал вызов Функции, при наборе параметров система IntelliSense сразу выводила на экран информацию о них. К счастью, это невероятно полезное свойство по-прежнему доступно в системе Visual Studio 2013.

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

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

На рисунке ниже метод Regex.Replace имеет три параметра, в версии по умолчанию. Если параметр является необязательным, то он выводится в квадратных скобках с указанием его значения по умолчанию. Программисты, работающие на языке VB, уже знакомы с этой синтаксической конструкцией, для языка C# 4.0 она является новой.

Читайте также:  какой коммуникативный барьер возникает у слушающего когда говорящий обладает неразборчивой дикцией

Команда Quick Info

Комбинации клавиш в системе VS2013 зависят от выбранных параметров инсталляции (например, Visual Basic Developer, Visual C# Developer и т.д.). Все комбинации клавиш в этой статье соответствуют настройкам профиля General Developer Profile.

Источник

IntelliSense в Visual Studio

IntelliSense — это вспомогательное средство для написания кода, включающее несколько возможностей: «Список членов», «Сведения о параметрах», «Краткие сведения» и «Завершить слово». Эти возможности помогают получать дополнительные сведения об используемом коде, отслеживать параметры при вводе и добавлять вызовы свойств и методов путем нескольких нажатий клавиш.

Многие аспекты IntelliSense зависят от конкретного языка. Дополнительные сведения об IntelliSense для различных языков приведены в разделах, перечисленных в подразделе См. также.

Список членов

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

В списке членов значок слева указывает на тип члена, такой как пространство имен, класс, функция или переменная. Список значков см. в разделе Значки представления классов и обозревателя объектов. Список может быть достаточно длинным; перемещаться вверх и вниз по списку можно с помощью клавиш PAGE UP и PAGE DOWN.

Функцию Список членов можно вызывать вручную, нажав клавиши CTRL+J, выбрав пункт Edit > IntelliSense > Список членов или нажав кнопку Список членов на панели инструментов редактора. При вызове в пустой строке или за пределами распознаваемой области в списке отображаются символы глобального пространства имен.

Чтобы отключить список членов по умолчанию (чтобы он не отображался без специального вызова), перейдите в раздел меню Сервис > Параметры > Все языки и снимите флажок Автоматически отображать список членов. Если требуется отключить список членов только для конкретного языка, перейдите к параметрам Общие для этого языка.

Можно также включить режим подсказки, в котором в код будет вставляться только печатаемый текст. Например, если ввести идентификатор, отсутствующий в списке, и нажать клавишу TAB, в режиме завершения введенный идентификатор был бы заменен записью из списка. Для переключения между режимом завершения и режимом подсказки нажмите CTRL+ALT+ПРОБЕЛ или выберите Изменить > IntelliSense > Переключить режим завершения.

Сведения о параметрах

Функция «Сведения о параметрах» предоставляет сведения о числе параметров, необходимых методу, параметру атрибута универсального типа (в C#) или шаблону (в C++), а также об именах и типах таких параметров.

Выделение параметра полужирным шрифтом указывает на следующий параметр, необходимый при вводе функции. Для перегруженных функций можно использовать клавиши СТРЕЛКА ВВЕРХ и СТРЕЛКА ВНИЗ для просмотра сведений об альтернативных параметрах для перегрузок функций.

При аннотировании функций и параметров при помощи комментариев XML-документации комментарии будут отображаться в качестве сведений о параметрах. Дополнительные сведения см. в разделе Создание XML-примечаний к коду.

Сведения о параметрах можно вызвать вручную, выбрав Изменить > IntelliSense > Сведения о параметрах, нажав клавиши CTRL+SHIFT+ПРОБЕЛ или кнопку Сведения о параметрах на панели инструментов редактора.

Краткие сведения

Функция «Краткие сведения» отображает полное объявление любого идентификатора в коде.

При выборе члена в поле Список членов для него также отображаются краткие сведения.

Краткие сведения можно открыть вручную, выбрав пункт меню Изменить > IntelliSense > Краткие сведения или нажав клавиши CTRL+K, CTRL+I или кнопку Краткие сведения на панели инструментов редактора.

Если функция перегружена, IntelliSense может не отображать информацию для всех форм перегрузки.

Завершение слов

Функция «Завершить слово» завершает оставшуюся часть имени переменной, команды или функции после ввода достаточного количества символов для однозначного определения термина. Чтобы вызвать функцию «Завершить слово», можно выбрать пункт меню Изменить > IntelliSense > Завершить слово либо нажать клавиши CTRL+ПРОБЕЛ или кнопку Завершить слово на панели инструментов редактора.

Параметры IntelliSense

Параметры IntelliSense включены по умолчанию. Чтобы отключить их, выберите Сервис > Параметры > Текстовый редактор и снимите флажок Сведения о параметрах или Автоматически отображать список членов, если вам не нужна функция списка членов.

Значки IntelliSense

Значки в IntelliSense могут передавать дополнительные значения с помощью модификаторов значков. Это звезды, сердечки и замки, расположенные поверх значка объекта, которые означают защищенное, внутреннее или закрытое использование соответственно.

Значок Возможности доступа Description
Открытый класс Неограниченный доступ.
Защищенный класс Доступ ограничен содержащим классом или типами, которые являются производными от содержащего класса.
Защищенный внутренний класс Доступ ограничен текущей сборкой или типами, которые являются производными от содержащего класса.
Внутренний класс Доступ ограничен текущей сборкой.
Закрытый класс Доступ ограничен содержащим классом или типами, которые являются производными от содержащего класса в текущей сборке. (Доступно с версии C# 7.2.)

Устранение неполадок IntelliSense

В некоторых случаях параметры IntelliSense могут не работать должным образом.

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

Курсор находится в комментарии к коду. Если курсор находится в комментарии в файле исходного кода, вы не сможете использовать IntelliSense.

Курсор находится в строковом литерале. Вы не сможете использовать IntelliSense, если курсор находится внутри кавычек, в которые заключен строковый литерал, как показано в следующем примере:

Автоматические параметры отключены. По умолчанию функция IntelliSense работает автоматически, но ее можно отключить. Вы можете вызывать функцию IntelliSense, даже если автоматическое завершение операторов отключено.

Источник

Сказочный портал