Visual Assist

Last updated
Visual Assist
Developer(s) Whole Tomato Software
Stable release
2022.6 (build 10.9.2476) / January 19, 2023;2 months ago (2023-01-19)
Operating system Microsoft Windows
Type Microsoft Visual Studio add-on for VC++ 6.0, .NET 2003, 2005, 2008, 2010, 2012, 2013, 2015, 2017, 2019, 2022
License Commercial, $129–279
Website www.wholetomato.com

Visual Assist is a plug-in for Microsoft Visual Studio developed by Whole Tomato Software. The plug-in primarily enhances IntelliSense and syntax highlighting, along with navigating through source code and providing flexible refactorings. It also enhances code suggestions, can generate or rewrite code, and includes spell checking support for comments, as well as adding enhanced debugging tools. [1] It can also detect syntax mistakes such as use of undeclared variables, and provides code analysis to detect potential bugs or performance issues in source code. [2]

Contents

Visual Assist supports Visual C++ and Visual C#.

As of March 2023, Visual Assist supports Visual C++ 2022 right back to Visual Studio 2005, including the Community Editions. Support for Visual Studio 6.0 - 2003 was deprecated in 2017, though the latest version to support those older IDEs is still available for download. (Visual Studio Express editions lack third-party extensibility and Visual Studio Code uses a separate extensibility model, thus Visual Assist cannot be used with them.)

Game Industry

Visual Assist is used by C++ development teams worldwide, but is especially popular in the game development industry. Many Unreal Engine developers list installing Visual Assist as a key requirement before beginning development with Unreal. [3] [4] [5]

Youtuber TheCherno states they've used Visual Assist for 90% of the C++ development they've ever done, and refers to the combination of Unreal Engine and Visual Assist as "a match made in heaven." [6]

The Unreal Engine Community wiki notes, "Many programmers simply prefer to disable [Visual Studio's inbuilt] Intellisense and use Visual Assist that has included support for Unreal Engine". [7]

Technology

Visual Assist has a custom language parser, which is not a compiler-style parser. Compiler-style parsers require well-formed code (badly formed code causes a compile error!) and will follow compiler directives, such as macros that can direct the compiler to include or exclude certain code. It's common for code tooling tools to use either compiler engines or compiler-style parsers, but Visual Assist's approach is more flexible and means the tool is more useful in real-world coding environments. When coding, a developer may have incompletely written code, but an assistance tool needs to still function correctly, as Visual Assist does. Similarly, Visual Assist is aware of macros, but can "see" inside macros that a compiler will exclude: this means it can refactor fully, rather than missing references that other tools would not see.

Visual Assist is tightly integrated into Visual Studio, which uses a different extensibility model to Visual Studio Code.

Until Visual Studio 2022, Visual Studio was a 32-bit application, constraining memory to a maximum of 4GB. It is common for developers to have multiple plugins loaded into Visual Studio, and the Visual Assist developers spent considerable effort on ensuring the memory impact of using Visual Assist was very low, [8] even parsing very large projects. Both this and the custom parser also result in high performance parsing or indexing code compared to other tools.

See also

  1. "Features in Visual Assist" . Retrieved 20 March 2023.
  2. "A Brief Introduction To Clang-Tidy And Its Role in Visual Assist" . Retrieved 20 March 2023.
  3. "Ari Arnbjörnsson (Housemarque): Lessons Learned from a Year of UE4 AAA Development" . Retrieved 20 March 2023.
  4. "Visual Studio Tips for UE4" . Retrieved 20 March 2023.
  5. "Top 5 Reasons Why I Use Visual Assist for Unreal Engine 5" . Retrieved 20 March 2023.
  6. "Unreal Engine + Visual Assist" . Retrieved 20 March 2023.
  7. "Choosing & Preparing Integrated Development Environment for Unreal C++" . Retrieved 20 March 2023.
  8. "Technical Deep Dive: Reducing Memory Consumption in Visual Assist build 2393" . Retrieved 20 March 2023.

Related Research Articles

An integrated development environment (IDE) is a software application that provides comprehensive facilities to computer programmers for software development. An IDE normally consists of at least a source code editor, build automation tools, and a debugger. Some IDEs, such as NetBeans and Eclipse, contain the necessary compiler, interpreter, or both; others, such as SharpDevelop and Lazarus, do not.

<span class="mw-page-title-main">Microsoft Access</span> Database manager part of the Microsoft Office package

Microsoft Access is a database management system (DBMS) from Microsoft that combines the relational Access Database Engine (ACE) with a graphical user interface and software-development tools. It is a member of the Microsoft 365 suite of applications, included in the Professional and higher editions or sold separately.

<span class="mw-page-title-main">Delphi (software)</span> General-purpose programming language and a software product

Delphi is a general-purpose programming language and a software product that uses the Delphi dialect of the Object Pascal programming language and provides an integrated development environment (IDE) for rapid application development of desktop, mobile, web, and console software, currently developed and maintained by Embarcadero Technologies.

A programming tool or software development tool is a computer program that software developers use to create, debug, maintain, or otherwise support other programs and applications. The term usually refers to relatively simple programs, that can be combined to accomplish a task, much as one might use multiple hands to fix a physical object. The most basic tools are a source code editor and a compiler or interpreter, which are used ubiquitously and continuously. Other tools are used more or less depending on the language, development methodology, and individual engineer, often used for a discrete task, like a debugger or profiler. Tools may be discrete programs, executed separately – often from the command line – or may be parts of a single large program, called an integrated development environment (IDE). In many cases, particularly for simpler use, simple ad hoc techniques are used instead of a tool, such as print debugging instead of using a debugger, manual timing instead of a profiler, or tracking bugs in a text file or spreadsheet instead of a bug tracking system.

<span class="mw-page-title-main">Unreal Engine</span> Video game engine developed by Epic Games

Unreal Engine (UE) is a 3D computer graphics game engine developed by Epic Games, first showcased in the 1998 first-person shooter game Unreal. Initially developed for PC first-person shooters, it has since been used in a variety of genres of games and has seen adoption by other industries, most notably the film and television industry. Unreal Engine is written in C++ and features a high degree of portability, supporting a wide range of desktop, mobile, console, and virtual reality platforms.

A domain-specific language (DSL) is a computer language specialized to a particular application domain. This is in contrast to a general-purpose language (GPL), which is broadly applicable across domains. There are a wide variety of DSLs, ranging from widely used languages for common domains, such as HTML for web pages, down to languages used by only one or a few pieces of software, such as MUSH soft code. DSLs can be further subdivided by the kind of language, and include domain-specific markup languages, domain-specific modeling languages, and domain-specific programming languages. Special-purpose computer languages have always existed in the computer age, but the term "domain-specific language" has become more popular due to the rise of domain-specific modeling. Simpler DSLs, particularly ones used by a single application, are sometimes informally called mini-languages.

Extensible Application Markup Language is a declarative XML-based language developed by Microsoft for initializing structured values and objects. It is available under Microsoft's Open Specification Promise.

In computer-based language recognition, ANTLR, or ANother Tool for Language Recognition, is a parser generator that uses a LL(*) algorithm for parsing. ANTLR is the successor to the Purdue Compiler Construction Tool Set (PCCTS), first developed in 1989, and is under active development. Its maintainer is Professor Terence Parr of the University of San Francisco.

jEdit Cross platform text editor

jEdit is a free software text editor available under GPL-2.0-or-later. It is written in Java and runs on any operating system with Java support, including BSD, Linux, macOS and Windows.

<span class="mw-page-title-main">Source-code editor</span> Text editor specializing in software code

A source-code editor is a text editor program designed specifically for editing source code of computer programs. It may be a standalone application or it may be built into an integrated development environment (IDE) or web browser. Source-code editors are a fundamental programming tool, as the fundamental job of programmers is to write and edit source code.

Extensible programming is a term used in computer science to describe a style of computer programming that focuses on mechanisms to extend the programming language, compiler and runtime environment. Extensible programming languages, supporting this style of programming, were an active area of work in the 1960s, but the movement was marginalized in the 1970s. Extensible programming has become a topic of renewed interest in the 21st century.

<span class="mw-page-title-main">Racket (programming language)</span> Lisp dialect

Racket is a general-purpose, multi-paradigm programming language and a multi-platform distribution that includes the Racket language, compiler, large standard library, IDE, development tools, and a set of additional languages including Typed Racket, Swindle, FrTime, Lazy Racket, R5RS & R6RS Scheme, Scribble, Datalog, Racklog, Algol 60 and several teaching languages.

<span class="mw-page-title-main">SlickEdit</span>

SlickEdit, previously known as Visual SlickEdit, is a cross-platform commercial source code editor, text editor, code editor and Integrated Development Environment developed by SlickEdit, Inc. SlickEdit supports Integrated Debuggers for GNU C/C++, Java, WinDbg, Clang C/C++ LLDB, Groovy, Google Go, Python, Perl, Ruby, PHP, Xcode, and Android JVM/NDK. SlickEdit includes such features as built in beautifiers that can beautify code as you type, code navigation, context tagging, symbol references, third party tool integration, DiffZilla, syntax highlighting, and over 13 keyboard emulations.

Azure DevOps Server is a Microsoft product that provides version control, reporting, requirements management, project management, automated builds, testing and release management capabilities. It covers the entire application lifecycle and enables DevOps capabilities. Azure DevOps can be used as a back-end to numerous integrated development environments (IDEs) but is tailored for Microsoft Visual Studio and Eclipse on all platforms.

<span class="mw-page-title-main">Vala (programming language)</span> Programming language

Vala is an object-oriented programming language with a self-hosting compiler that generates C code and uses the GObject system.

<span class="mw-page-title-main">Visual Studio</span> Code editor and IDE

Visual Studio is an integrated development environment (IDE) from Microsoft. It is used to develop computer programs including websites, web apps, web services and mobile apps. Visual Studio uses Microsoft software development platforms such as Windows API, Windows Forms, Windows Presentation Foundation, Windows Store and Microsoft Silverlight. It can produce both native code and managed code.

Incredibuild is a suite of grid computing software developed by Incredibuild Ltd. Incredibuild's mission is to help accelerate computationally-intensive tasks by distributing them over the network, with notable applications including compiling source code, building software generally, and other software development–related tasks. Jobs can be distributed to several computers over a network, giving both the possibility of accelerating the work by using more resources than were available on the initiating computer alone and potentially freeing local resources for other tasks.

Nemerle is a general-purpose, high-level, statically typed programming language designed for platforms using the Common Language Infrastructure (.NET/Mono). It offers functional, object-oriented, aspect-oriented, reflective and imperative features. It has a simple C#-like syntax and a powerful metaprogramming system.

<span class="mw-page-title-main">Nim (programming language)</span> Programming language

Nim is a general-purpose, multi-paradigm, statically typed, compiled high-level systems programming language, designed and developed by a team around Andreas Rumpf. Nim is designed to be "efficient, expressive, and elegant", supporting metaprogramming, functional, message passing, procedural, and object-oriented programming styles by providing several features such as compile time code generation, algebraic data types, a foreign function interface (FFI) with C, C++, Objective-C, and JavaScript, and supporting compiling to those same languages as intermediate representations.

BuildAMation (Bam) was a desktop multi-platform free and open-source software system for writing a single description of how to build software for desktop computers. It defines an extensible architecture based on the C#, exposing a declarative syntax to describe the dependencies between build-able modules. The core assembly exposes a generic dependency system, while packages of C# scripts extend support into multi-threaded command line builds, Microsoft Visual Studio project and solution generation, Apple Xcode project and workspace generation, and Makefile generation.