Msbuild 我想为所有文件运行一个任务,并排除那些没有更改的文件
我有两个构建目标来检查我的代码质量 每次编译时,我都会运行以下构建目标。这占用了太多的时间,我希望他们只检查更改过的文件 换句话说,我想从Msbuild 我想为所有文件运行一个任务,并排除那些没有更改的文件,msbuild,Msbuild,我有两个构建目标来检查我的代码质量 每次编译时,我都会运行以下构建目标。这占用了太多的时间,我希望他们只检查更改过的文件 换句话说,我想从ItemGroupCppCheckFiles/LinterFiles中筛选未更改的文件 <Target Name="CppCheck"> <ItemGroup> <CppCheckFiles Include="*main.c" /> <CppCheckFiles Include="S
ItemGroup
CppCheckFiles
/LinterFiles
中筛选未更改的文件
<Target Name="CppCheck">
<ItemGroup>
<CppCheckFiles Include="*main.c" />
<CppCheckFiles Include="Source/*/*.c" />
</ItemGroup>
<Message Text="$(Configuration) starting." Importance="High" />
<Exec Command="C:\Cppcheck\cppcheck.exe %(CppCheckFiles.FullPath) --enable=style --template="{file}({line}): error:{severity}-{id}: {message}"" />
</Target>
<Target Name="SPLint">
<ItemGroup>
<LinterFiles Include="*main.c" />
<LinterFiles Include="Source/*/*.c" />
<LinterFiles Include="Source/*/*.h" />
</ItemGroup>
<Message Text="$(Configuration) starting." Importance="High" />
<Exec Command="splintCaller %(LinterFiles.FullPath)" />
</Target>
我知道常规的构建过程可以做到这一点,我想知道我是否必须如此快速地编写自己的任务。嗯。。这听起来很有趣。我帮不了你。但是,如果cppcheck wiki或手册中有一些小的示例项目可以做到这一点,那就太好了 有些人使用cppcheck-in-commit钩子。我自己也尝试过GIT(我添加了一个linux shell脚本)。还有一个陆龟VN插件,你可以试试(http://sourceforge.net/apps/phpbb/cppcheck/viewtopic.php?f=3&t=443).解决方案是。其中,如果未发生任何更改,MSBuild将比较时间戳以排除完整的构建目标 以下目标为每个文件创建一个时间戳,并跳过那些未更改的文件 如果检测到错误且未写入时间戳,cppcheck.exe将返回-1
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="CppCheck" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<CppCheckFiles Include="*main.c" />
<CppCheckFiles Include="Source/*/*.c" />
</ItemGroup>
<Target Name="CppCheck"
Inputs="@(CppCheckFiles)"
Outputs="CCPCheck\%(CppCheckFiles.Filename)%(CppCheckFiles.Extension).stamp">
<Exec Command="C:\Cppcheck\cppcheck.exe %(CppCheckFiles.FullPath) --enable=style --template="{file}({line}): error:{severity}-{id}: {message}"" />
<MakeDir Directories="CCPCheck"/>
<Touch Files="CCPCheck\%(CppCheckFiles.Filename)%(CppCheckFiles.Extension).stamp" AlwaysCreate = "true" />
</Target>
</Project>