I am a big fan of the C++ Core Guidelines and I like to follow them in all projects I work on, so I enabled the following option in my project template in Visual Studio 2017
:
This tool is great and helps me write better code, but I simply cannot figure out how to make it only analyze my files. Whenever my project has a dependency such as Boost or OpenCV, I will get plastered with a wall of warnings:
These dependencies are added through vcpkg, however, the same thing happens when adding them manually with C/C++ > General > Additional Include Directories
.
Is there any way to only make these warnings apply to project files, and not all included files?
To open this page, right-click the project node in Solution Explorer and select Properties. Select the Code Analysis tab. To disable source analysis at build time, uncheck the Run on build option. To disable live source analysis, uncheck the Run on live analysis option.
In Solution Explorer, select the project. On the Analyze menu, select Run Code Analysis on [Project Name].
ReSharper helps you resolve most of the discovered code issues automatically. All you need is to press Alt+Enter when the caret is on a code issue highlighted in the editor and check the suggested quick-fixes.
As mentioned in the comments, right after the following section in your .vcxproj
near the end of the file:
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
The problem may be solved by adding the following after the section mentioned above:
<PropertyGroup Condition="'$(Language)'=='C++'">
<CAExcludePath>$(QTDIR)\include;.\GeneratedFiles;$(CAExcludePath)</CAExcludePath>
</PropertyGroup>
Furthermore, if you are using vcpkg, which was the case in my situation, you will need to add the following element to the CAExcludePath
:
$(VcpkgRoot)include
This will ensure that all headers from any packages will not be analyzed.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With