Version History

Over the past year we’ve released 31 Clang Power Tools updates, introducing exciting new features while making our product better than ever.

Clang Power Tools in Numbers







Version 4.9

March 7, 2019


  • Powershell scripts now using strict-mode -latest for increased safety


  • Format on save does not apply the Fallback-Style option
  • Clang Tidy settings are set back to default values when Visual Studio is open
  • Item definition groups evaluation loaded incorrectly for some projects
  • Expression expansion not working correctly for some expressions on machines with PS 3.0
  • HOME environment variable triggering error when present on machine
  • [MSBuild]::Utilities::ToolLocationHelper was not accessible
  • Default user-specific property sheets (microsoft.cpp.user.props) not loaded automatically

Version 4.8.1

February 19, 2019


  • Fix location detection when multiple versions of Visual Studio are installed

Version 4.8

February 18, 2019


  • Visual Studio 2019 Preview support
  • Keyboard shortcut for Clang Compile


  • User settings are sometimes set back to default values when closing Visual Studio
  • Compile or Tidy commands force saves the solution
  • When running Clang after the MSVC compile, Visual Studio does not switch to the Clang Power Tools log window

Version 4.7

February 4, 2019


  • Support for custom Clang Tidy executable path


  • The custom path for Clang Format cannot be changed after it was set
  • Output window did not display the Clang output properly
  • Unhandled exception in the status-bar caused errors

Version 4.6

January 17, 2019


  • Select files to ignore at compile and format from the Context Menu


  • Wrong format applied when clang-tidy and clang-format on save are checked
  • Access rights of the PowerShell script caused warning messages
  • Clang Format didn’t properly handle selected source
  • Crash when some options are missing from the config file

Version 4.5

December 12, 2018


  • Status bar support for Clang Format
  • Support for expanding Project Item Groups


  • Clang commands saving event caused changes on .sln level
  • Clang Format formats CMakeLists.txt file
  • [System.IO.Directory]::GetDirectories() calls not working

Version 4.4

November 27, 2018


  • Speed up the errors detection by sending refresh signals to the VS Error List
  • Include the new LLVM 7.0 clang tidy checks


  • The checks from .clang-tidy config file are ignored
  • Clang Tidy on save does not respond after a VS Solution is reopened
  • Extension upgrade is not detected

Version 4.3.2

November 13, 2018


  • New extension dependencies caused crashes

Version 4.3.1

November 9, 2018


  • Fix bug triggering regex error when using absolute paths in command line args

Version 4.3

November 7, 2018


  • Support for apply Clang-Format on VS Projects
  • Support for apply Clang-Format on VS Solution


  • Asynchronous writing in the Output Pane caused crashes
  • Sometimes crash when clang commands are executed

Version 4.2.1

October 29, 2018


  • After closing and reopening a VS Solution the clang commands did not work as expected
  • Clang-Format works just for files that are included in a VS project
  • Format after tidy option is not responding
  • VS Services are not registered in the right order

Version 4.2

October 15, 2018


  • Support for PCH configuration at file-level


  • VS Extension is not completely registered immediately after the VS solution was loaded
  • Wrong detection of VS 2015 when VS 2013 toolset is being used
  • Parallel processing causing file corruption for Tidy Fix

Version 4.1

October 9, 2018


  • Optimize the VS services access
  • Improve clang commands loading


  • Double quotes incorrectly escaped in preprocessor definitions (v4.0 regression)
  • …\ include directories not being correctly included (v4.0 regression)
  • Preprocessor definition characters being mistaken for comparison operators (v4.0 regression)
  • PCH detection not working when project force includes header directly at pch cpp level
  • Crash when VS services are not available
  • Clang commands registration does not always work
  • Project field from Error List sometimes is empty

Version 4.0

September 20, 2018


  • Support for CPT configuration files (see sample cpt.config in github repository)


  • Changed files are permanently open in the editor after clang-tidy command
  • Crash when changing the Show issues generated option from Visual Studio
  • Preprocessor definitions for raw string literals containing escaped quotes not working
  • Calls to Exists() using single quotes not resolved correctly

Version 3.9.2

August 29, 2018


  • Directory.Build.props global property sheet not loaded
  • Unicode project character set detection not working for some projects
  • Output Window does not display the entire output
  • Clang commands are not disabled when the VS build is running
  • Selecting system include directories did not worked for Treat additional includes as option

Version 3.9.1

August 16, 2018


  • Crash when showing output window notifications

Version 3.9

August 13, 2018


  • Project / File to ignore support for directory matching
  • Display names of ignored projects at beginning of log


  • MSBuild directory properties malfunctioning in some property sheets
  • Project specific variables not cleared when compilation failed
  • Newly created projects not detected by VS Extension
  • Clang output sometimes formatted wrong in the VS Output Window
  • Crash when switching Error List between Build Only, Build + IntelliSense and IntelliSense Only

Version 3.8

July 27, 2018


  • Improved error detection


  • Projects with large number of include directories could not be compiled
  • Closed files remained closed after the clang-tidy fix command caused changes
  • Error List displayed duplicates errors
  • Output Window did not displayed the entire content
  • VS reload file mechanism for external changes remains disabled after the clang-tidy fix command

Version 3.7.1

July 4, 2018


  • Missing trailing slashes for MakeRelative() special cases

Version 3.7

July 3, 2018


  • Optimize loading speed of the VS Extension
  • Optimize UI responsiveness when a command is executed
  • Display a dedicated command for Clang Tidy-Fix action
  • (Powershell Script) -file script parameter now accepts header files (.H), alongside source files This triggers compilation for all source files (.CPP) that include them


  • vcpkg package include directories not being detected
  • MSBuild::MakeRelative() property function not working
  • ‘C99 was disabled in PCH file’ error when compiling .C files
  • v140 projects not compiled using appropiate VS2017 toolset

Version 3.6

June 18, 2018


  • (Powershell Script) Automatically detect Visual Studio SK when not passed as script argument
  • Quick search support for the Predefined checks option page


  • Error when compiling projects without preprocessor definitions
  • Regex matching broken for File Ignore and Project Ignore filters
  • The clang-format custom path property did not persisted
  • Fix the check mechanism of the Use custom executable file checkbox

Version 3.5

June 5, 2018


  • Support for compiling C files


  • The File Ignore and Project Ignore filters didn’t worked
  • Clang Compile and Clang Tidy commands crashed when extra white spaces and extra delimitaters were added in UI text fields
  • Buttons have overlapped the text in the UI fields

Version 3.4.2

May 15, 2018


  • Selecting elements from the Tidy -> Predefined Checks page has caused crashes

Version 3.4.1

May 15, 2018


  • Auto clang-format on save did not work for upgraded installs

Version 3.4

May 14, 2018


  • Updated “clang-format.exe” to the latest version 6.0.0
  • Support to use different version of “clang-format.exe” from the one in the box
  • Redesigned settings panel


  • Errors in headers were shown multiple times if different folder delimiters were used

Version 3.3.1

April 24, 2018


  • Clang output text was separated into multiple lines
  • Source files with ExcludedFromBuild child property set to true were compiled
  • Empty project files were not correctly handled

Version 3.3

March 29, 2018


  • Improved responsiveness during lengthy operations
  • Added support for filter errors by “Project” field in the Error List
  • Cleanup errors when closing a project
  • Use the whole file name of PCH cpp to detect PCH header directory

Version 3.2.1

March 23, 2018


  • Clang compile fails when project has no Additional Include Directories
  • Error line number from error list was displayed wrong

Version 3.2

March 22, 2018


  • Added support for VS status bar
  • Added clang-tidy checker to output window messages


  • Last error message couldn’t be detected
  • Consecutive error messages couldn’t be detected
  • Did not work on Visual Studio 2017 Update 2 because vswhere does not support the -prerelease switch
  • Did not work when stdafx.cpp contained commented #include lines
  • Couldn’t detect default Configuration Platform if comment nodes were present in the <ItemGroup> XML element
  • PCH header couldn’t be detected when in a different physical location than that of PCH cpp
  • PCH header couldn’t be detected if not present in project <ClInclude> XML element
  • Compilation stopped on PCH-creation errors even if -continue switch was present

Version 3.1

March 12, 2018


  • Added support for [MSBuild]::GetDirectoryNameOfFileAbove
  • Added support for clang format selection


  • /MD and /MT project settings not propagated to clang

Version 3.0.1

March 2nd, 2018


  • Visual Studio loses focus on selected items

Version 3.0

March 1st, 2018

NEW: Built-in support for clang-format

Auto-format source file on save, configurable style options, file extension rules, etc.


  • Disable the clang commands when VS build is running


  • Automatic clang-tidy on save option was applying fixes even when Fix option was set to false
  • Running a command with different elements of VS selected (eg. properties window, toolbox) sometimes caused errors
  • Clang compile and tidy commands were not disabled for source files not loaded in a project context
  • Properly trim whitespace from #include paths
  • Whitespaces in VS project name were not supported

Version 2.8

February 20, 2018


  • Automatically run Clang-tidy when the current source file is saved
  • Automatically run Clang compile on the current source file after successful MSVC compilation


  • A project was saved even if it was not dirty
  • Stop Clang command crashed all Powershell processes
  • A single error found in a header was displayed multiple times
  • COM objects caused errors when a command was running

Version 2.7

February 8, 2018


  • Save all projects before running clang compile/tidy


  • The Treat additional includes as option was not loaded from the settings file
  • The toolbar was hidden on the first install
  • Source files / headers not detected when specified in property sheets

Version 2.6

January 29, 2018

Until now, we’ve used the %INCLUDE% environment variable for setting clang include directories. That was equivalent to using -isystem for each directory.

Unfortunately, this caused headers included relative to those include directories to be ignored when running compiling/tidying because they were treated as system headers.

Having this brought to our attention, going forward we will use -I and -isystem to pass include directories to clang, with the following defaults:

  • include directories passed using -isystem
  • additional include directories passed using -I

Q: What does this mean?
A: You’ll most likely see new warnings when compiling or tidying your code-base.

Q: Will my build fail?
A: Only if you have specified -Werror (treat warnings as errors).

Q: What should I do?
A: - Make sure to include third party library dependencies via the Include directories project option. Additional include directories should point only to code you can modernize. - Resolve remaining warnings related to your code.

Q: Can I use ClangPowerTools using the old behavior?
A: Yes. We’ve added, for compatibility reasons, a UI option that allows clang to treat additional includes as system headers. Keep in mind this means we will potentially miss some of your headers when calling clang.

You may want to use this option if using -Werror (treating warnings as errors) until you’ve reorganized your includes, since any new warnings will break your build.

Q: What about the continuous integration script (clang-build.ps1)?
A: You can specify the -treat-sai switch and it will have the old behavior.


  • Additional includes are now treated as regular includes using -I


  • Crash when using preprocessor definitions containing double quotes
  • Wild card project file includes were not recognized
  • Tooling detection did not work on Visual Studio pre-release versions

Version 2.5.1

January 17, 2018


  • Fixed the unexpectedly Visual Studio session ending

Version 2.5

January 12, 2018


  • Automatically show toolbar on the first time install


  • Fixed errors detection
  • Fixed commands execution when the project contains more files with the same name
  • Crash when multiple SKUs of Visual Studio 2017 installed simultaneously
  • Google.Test Nuget packages not working

Version 2.4.1

December 28, 2017


  • Regression in 2.4.0 preventing use of clang-tidy on header files

Version 2.4

December 21, 2017


  • Configurable header-filter for tidy-fix
  • Option to run clang-tidy only on cpp-corresponding headers


  • <Choose> project elements were not loaded
  • Same-file appended project settings caused crash
  • Wildcard-named property sheets were not loaded

Version 2.3

December 13, 2017


  • Tidy operation mode: ability to switch between explicitly specified tidy checks and .clang-tidy configuration files
  • Use PCH for clang-tidy workflow


  • Could not property detect C++17 standard from project
  • Project parse issues for MsBuild string member function calls
  • Files with extensions other than .cpp were not compiled from VS
  • HasTrailingSlash MsBuild function was not recognized

Version 2.2

December 11, 2017


  • Fixed the saving for user configurations from option pages
  • Increased the number of compilable file types. Now supporting: .c , .cpp , .cc , .cxx , .c++ , .cp
  • Could not be used in VS 2015 (regression in v2.1)
  • Could not create PCH when using forced includes and stdafx.cpp did not manually include stdafx.h
  • Could not handle multiple MSVC versions found in the same VS installation
  • Project load error when a project condition contained more than one call to MSBuild Exists()
  • Clang-tidy -header-filter flag was sometimes behaving incorrectly, ignored header files

Version 2.1

December 7, 2017


  • Possibility to abort clang compile and clang tidy commands
  • Eliminated delay caused by .sln and .vcxproj file scanning
  • Create PCH only for more than 2 cpps
  • Detect C++ standard automatically from project. Default to C++14 if not set


  • Environment variables were not used when evaluating MsBuild expressions
  • MsBuild expressions didn’t work when starting with ! operator
  • ForcedIncludes for clang compile were not working, regression in v2.0
  • ForcedIncludes were not taken into account for clang-tidy
  • Project > IncludePath was not taken into account for include directories
  • Error occured when include directories contained empty values
  • Fixed PCH crash when using Visual Studio 15.5 STL libraries (mscver 14.12.25827)
  • Fixed the commands execution for default console application

Version 2.0

November 26, 2017


  • Fully evaluate MsBuild conditions for project and property sheet XML data
    • XML nodes with conditions evaluated to false are ignored
  • Project settings can now reference:
    • User defined macros
      • e.g. $(MY_MACRO_DIR)\bin$(MY_MACRO_FILE)
    • Build-in macros:
      • $(VisualStudioVersion), $(ProjectDir), $(SolutionDir), $(Platform), $(Configuration), $(MSBuildProjectName), $(MSBuildProjectFullPath), $(MSBuildProjectDirectory), $(MSBuildThisFile), $(MSBuildThisFileName), $(MSBuildThisFileFullPath), $(MSBuildThisFileDirectory), $(MSBuildProgramFiles32)
    • .NET expressions
      • e.g. $([System.DateTime::Now.ToString(“yyyy.MM.dd”))]
  • Detect property sheets included in Directory.Build.props
  • Automatically detect the project solution file

Version 1.7.1

November 20, 2017


  • Fixed the support for Track Active Item in Solution Explorer set to Off

Version 1.7

November 16, 2017


  • Added support for Track Active Item in Solution Explorer option set to Off
  • Verbose-Mode now logs clang-build.ps1 and clang++ invocation arguments


  • Fixed the user settings saving
  • Fixed the script execution for clang-tidy options
  • Moved Clang Power Tools above the Properties item in Context Menu

Version 1.6

November 9, 2017


  • Improved handling of project value separator
  • Used the active project configuration


  • Fixed the commands launching from file tab
  • Fixed the default tidy settings page
  • Fixed the cleaning of all messages from Error tab when a command begins

Version 1.5.1

November 3rd, 2017


  • Created dedicated option page for tidy checks
  • Provided better defaults for “Tidy Checks” dialog


  • Fixed script building for tidy checks

Version 1.5

November 1st, 2017


  • Generalized property sheet usage for project data retrieval
  • Detect auto property sheets (Directory.Build.props). Merging not supported
  • Detect property sheets included indirectly, through other property sheets
  • Automatically detect the first project configuration platform

Version 1.4

October 27, 2017


  • Added verbose mode in settings
  • Created Clang Power Tools toolbar


  • Fixed logical core count detection on systems with more than one physical CPU
  • Disabled the commands when another command is running
  • Fixed MSCVER detection bug when VS is not installed in default location
  • Added WinSDKVer defaults for when not mentioned in project
  • Fixed error message when project does not include force include files

Version 1.3.1

October 23, 2017


  • Allow the path to include any non-whitespace character
  • Added support for project-specific force include files
  • Added support for Win 8/8.1 SDKs
  • Fix typo preventing detection of VS2015 install location
  • Fixed crash when project has no files to compile

Version 1.3

October 19, 2017


  • Added support for ignoring specific files
  • Added support for treating warnings as errors
  • Detect Visual Studio 2015 / 2017 custom installation paths
  • Enabled compilation for all files included in the Vcxproj section


  • Fixed project detection when the project name from UI is different of the project name on the disk
  • Prevents the Output window from stealing the focus
  • Fixed the detection for modified files after clang tidy fix
  • Fixed the “Project To Ignore” option

Version 1.2

October 13, 2017


  • Added clang warnings and messages with line navigation in both output pane and error list
  • Included clang notification(errors, warnings, messages) in Build Only category
  • Formatted clang output


  • Fixed clang error detection algorithm
  • Fixed clang errors line navigation from output pane
  • Fixed the vsix installer detection for VS2017

Version 1.1

October 8, 2017


  • Support for Visual Studio 2015.
  • Open the modified files after clang tidy format command
  • Suppress the reload popup shown by the Visual Studio
  • Integrated -quiet in the same way as other clag flags
  • Generalized PCH support for more than stdafx.h


  • Clean the output and errors before a new command and build action
  • Fixed the include directories option
  • Fixed error detection for error list
  • Fixed LLVM detection mechanism from Visual Studio Extension
  • Switched to -fix-errors when calling clang-tidy
  • Removed restriction to CPP files when looking for ClCompile entries
  • Fixed compilation when vcxproj has both 32 and 64 bit platform configrations

Version 1.0.1

September 30, 2017


  • Automatically detect clang installation folder
  • Support for projects without PCH/stdafx


  • Fixed navigation to clang error in code editor
  • Fixed clang error parse algorithm
  • Fixed detection when lightweight solution load is enabled

Version 1.0

September 27, 2017

First official release.