albacore 0.3.6 → 0.6.2.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (643) hide show
  1. data/.gitignore +3 -22
  2. data/.travis.yml +13 -15
  3. data/Gemfile +14 -13
  4. data/Guardfile +7 -0
  5. data/README.md +148 -0
  6. data/Rakefile +9 -25
  7. data/albacore.gemspec +20 -5
  8. data/lib/albacore.rb +3 -9
  9. data/lib/albacore/albacore_module.rb +53 -0
  10. data/lib/albacore/application.rb +32 -0
  11. data/lib/albacore/asmver.rb +67 -0
  12. data/lib/albacore/asmver/cpp.rb +20 -0
  13. data/lib/albacore/asmver/cs.rb +17 -0
  14. data/lib/albacore/asmver/engine.rb +43 -0
  15. data/lib/albacore/asmver/fs.rb +25 -0
  16. data/lib/albacore/asmver/vb.rb +17 -0
  17. data/lib/albacore/build.rb +203 -0
  18. data/lib/albacore/cmd_config.rb +55 -0
  19. data/lib/albacore/cross_platform_cmd.rb +177 -0
  20. data/lib/albacore/dsl.rb +118 -0
  21. data/lib/albacore/errors/unfilled_property_error.rb +14 -0
  22. data/lib/albacore/ext/README.md +12 -0
  23. data/lib/albacore/ext/teamcity.rb +64 -0
  24. data/lib/albacore/facts.rb +25 -0
  25. data/lib/albacore/logging.rb +29 -0
  26. data/lib/albacore/migrate.rb +175 -0
  27. data/lib/albacore/nugets_authentication.rb +9 -0
  28. data/lib/albacore/nugets_pack.rb +283 -0
  29. data/lib/albacore/nugets_restore.rb +131 -0
  30. data/lib/albacore/paths.rb +30 -0
  31. data/lib/albacore/project.rb +104 -0
  32. data/lib/albacore/restore_hint_paths.rb +112 -0
  33. data/lib/albacore/semver.rb +5 -0
  34. data/lib/albacore/tasks/README.md +16 -0
  35. data/lib/albacore/tasks/albasemver.rb +49 -0
  36. data/lib/albacore/tasks/projectlint.rb +81 -0
  37. data/lib/albacore/tasks/versionizer.rb +65 -0
  38. data/lib/albacore/test_runner.rb +39 -0
  39. data/lib/albacore/version.rb +3 -0
  40. data/spec/Rakefile +5 -0
  41. data/spec/albacore_spec.rb +35 -0
  42. data/spec/cross_platform_cmd_spec.rb +77 -0
  43. data/spec/ext_teamcity_spec.rb +71 -0
  44. data/spec/facts_spec.rb +7 -0
  45. data/spec/migrate_spec.rb +80 -0
  46. data/spec/nugets_pack_spec.rb +66 -0
  47. data/spec/nugets_restore_spec.rb +55 -0
  48. data/spec/project_spec.rb +26 -0
  49. data/spec/projectlint/added_but_not_on_filesystem/aproject.csproj +29 -0
  50. data/spec/projectlint/correct/File.cs +1 -0
  51. data/spec/projectlint/correct/Image.txt +1 -0
  52. data/spec/projectlint/correct/MyHeavy.heavy +1 -0
  53. data/spec/projectlint/correct/Schema.xsd +1 -0
  54. data/spec/projectlint/correct/SubFolder/AnotherFile.cs +1 -0
  55. data/spec/projectlint/correct/aproject.csproj +29 -0
  56. data/spec/projectlint/on_filesystem_but_not_added/File.cs +1 -0
  57. data/spec/projectlint/on_filesystem_but_not_added/Image.txt +1 -0
  58. data/spec/projectlint/on_filesystem_but_not_added/aproject.csproj +11 -0
  59. data/spec/projectlint_spec.rb +77 -0
  60. data/spec/sh_interceptor.rb +33 -0
  61. data/spec/smoke_spec.rb +9 -0
  62. data/spec/spec_helper.rb +13 -15
  63. data/spec/testdata/Library1.fs +4 -0
  64. data/spec/testdata/Project.fsproj +58 -0
  65. data/spec/testdata/Project/Project.sln +20 -0
  66. data/spec/testdata/Project/Project.v11.suo +0 -0
  67. data/spec/testdata/example.nuspec +14 -0
  68. data/spec/testdata/packages.config +6 -0
  69. metadata +235 -662
  70. data/.bundle/config +0 -2
  71. data/.rspec +0 -2
  72. data/.rvmrc +0 -1
  73. data/README.markdown +0 -71
  74. data/lib/albacore/albacoretask.rb +0 -50
  75. data/lib/albacore/aspnetcompiler.rb +0 -58
  76. data/lib/albacore/assemblyinfo.rb +0 -172
  77. data/lib/albacore/assemblyinfolanguages/assemblyinfoengine.rb +0 -41
  78. data/lib/albacore/assemblyinfolanguages/cppcliengine.rb +0 -18
  79. data/lib/albacore/assemblyinfolanguages/csharpengine.rb +0 -15
  80. data/lib/albacore/assemblyinfolanguages/fsharpengine.rb +0 -23
  81. data/lib/albacore/assemblyinfolanguages/vbnetengine.rb +0 -15
  82. data/lib/albacore/config/aspnetcompilerconfig.rb +0 -29
  83. data/lib/albacore/config/assemblyinfoconfig.rb +0 -20
  84. data/lib/albacore/config/config.rb +0 -22
  85. data/lib/albacore/config/cscconfig.rb +0 -28
  86. data/lib/albacore/config/docuconfig.rb +0 -23
  87. data/lib/albacore/config/execconfig.rb +0 -15
  88. data/lib/albacore/config/fluentmigratorrunnerconfig.rb +0 -15
  89. data/lib/albacore/config/ilmergeconfig.rb +0 -24
  90. data/lib/albacore/config/msbuildconfig.rb +0 -29
  91. data/lib/albacore/config/msdeployconfig.rb +0 -15
  92. data/lib/albacore/config/mspectestrunnerconfig.rb +0 -15
  93. data/lib/albacore/config/mstesttestrunnerconfig.rb +0 -15
  94. data/lib/albacore/config/nantconfig.rb +0 -15
  95. data/lib/albacore/config/nchurnconfig.rb +0 -15
  96. data/lib/albacore/config/ncoverconsoleconfig.rb +0 -15
  97. data/lib/albacore/config/ncoverreportconfig.rb +0 -15
  98. data/lib/albacore/config/ndependconfig.rb +0 -15
  99. data/lib/albacore/config/netversion.rb +0 -24
  100. data/lib/albacore/config/nugetpackconfig.rb +0 -19
  101. data/lib/albacore/config/nugetpublishconfig.rb +0 -19
  102. data/lib/albacore/config/nugetpushconfig.rb +0 -19
  103. data/lib/albacore/config/nugetupdateconfig.rb +0 -19
  104. data/lib/albacore/config/nunittestrunnerconfig.rb +0 -14
  105. data/lib/albacore/config/specflowreportconfig.rb +0 -24
  106. data/lib/albacore/config/sqlcmdconfig.rb +0 -15
  107. data/lib/albacore/config/unzipconfig.rb +0 -15
  108. data/lib/albacore/config/vssgetconfig.rb +0 -14
  109. data/lib/albacore/config/xbuildconfig.rb +0 -15
  110. data/lib/albacore/config/xunittestrunnerconfig.rb +0 -15
  111. data/lib/albacore/config/zipdirectoryconfig.rb +0 -15
  112. data/lib/albacore/csc.rb +0 -67
  113. data/lib/albacore/docu.rb +0 -41
  114. data/lib/albacore/exec.rb +0 -18
  115. data/lib/albacore/fluentmigratorrunner.rb +0 -51
  116. data/lib/albacore/ilmerge.rb +0 -65
  117. data/lib/albacore/msbuild.rb +0 -78
  118. data/lib/albacore/msdeploy.rb +0 -122
  119. data/lib/albacore/mspectestrunner.rb +0 -50
  120. data/lib/albacore/mstesttestrunner.rb +0 -43
  121. data/lib/albacore/nant.rb +0 -38
  122. data/lib/albacore/nchurn.rb +0 -74
  123. data/lib/albacore/ncoverconsole.rb +0 -68
  124. data/lib/albacore/ncoverreport.rb +0 -62
  125. data/lib/albacore/ncoverreports/assemblyfilter.rb +0 -10
  126. data/lib/albacore/ncoverreports/branchcoverage.rb +0 -10
  127. data/lib/albacore/ncoverreports/classfilter.rb +0 -9
  128. data/lib/albacore/ncoverreports/codecoveragebase.rb +0 -25
  129. data/lib/albacore/ncoverreports/cyclomaticcomplexity.rb +0 -23
  130. data/lib/albacore/ncoverreports/documentfilter.rb +0 -9
  131. data/lib/albacore/ncoverreports/fullcoveragereport.rb +0 -13
  132. data/lib/albacore/ncoverreports/methodcoverage.rb +0 -10
  133. data/lib/albacore/ncoverreports/methodfilter.rb +0 -9
  134. data/lib/albacore/ncoverreports/namespacefilter.rb +0 -9
  135. data/lib/albacore/ncoverreports/reportfilterbase.rb +0 -26
  136. data/lib/albacore/ncoverreports/summaryreport.rb +0 -18
  137. data/lib/albacore/ncoverreports/symbolcoverage.rb +0 -9
  138. data/lib/albacore/ndepend.rb +0 -33
  139. data/lib/albacore/nugetinstall.rb +0 -57
  140. data/lib/albacore/nugetpack.rb +0 -54
  141. data/lib/albacore/nugetpublish.rb +0 -47
  142. data/lib/albacore/nugetpush.rb +0 -46
  143. data/lib/albacore/nugetupdate.rb +0 -51
  144. data/lib/albacore/nunittestrunner.rb +0 -41
  145. data/lib/albacore/nuspec.rb +0 -178
  146. data/lib/albacore/output.rb +0 -103
  147. data/lib/albacore/plink.rb +0 -47
  148. data/lib/albacore/specflowreport.rb +0 -62
  149. data/lib/albacore/sqlcmd.rb +0 -82
  150. data/lib/albacore/support/attrmethods.rb +0 -33
  151. data/lib/albacore/support/createtask.rb +0 -50
  152. data/lib/albacore/support/failure.rb +0 -15
  153. data/lib/albacore/support/logging.rb +0 -38
  154. data/lib/albacore/support/openstruct.rb +0 -13
  155. data/lib/albacore/support/runcommand.rb +0 -45
  156. data/lib/albacore/support/supportlinux.rb +0 -21
  157. data/lib/albacore/support/updateattributes.rb +0 -13
  158. data/lib/albacore/support/yamlconfig.rb +0 -18
  159. data/lib/albacore/unzip.rb +0 -28
  160. data/lib/albacore/vssget.rb +0 -44
  161. data/lib/albacore/xbuild.rb +0 -54
  162. data/lib/albacore/xunittestrunner.rb +0 -56
  163. data/lib/albacore/zipdirectory.rb +0 -106
  164. data/lib/version.rb +0 -3
  165. data/samples/Rakefile +0 -154
  166. data/spec/README.md +0 -9
  167. data/spec/albacoremodel_spec.rb +0 -53
  168. data/spec/assemblyinfo_contexts.rb +0 -52
  169. data/spec/assemblyinfo_spec.rb +0 -459
  170. data/spec/attrmethods_spec.rb +0 -136
  171. data/spec/config_spec.rb +0 -34
  172. data/spec/createtask_spec.rb +0 -237
  173. data/spec/csc_spec.rb +0 -253
  174. data/spec/docu_spec.rb +0 -109
  175. data/spec/exec_spec.rb +0 -45
  176. data/spec/fluentmigratorrunner_spec.rb +0 -256
  177. data/spec/ilmerge_spec.rb +0 -93
  178. data/spec/msbuild_spec.rb +0 -287
  179. data/spec/msdeploy_spec.rb +0 -124
  180. data/spec/mspec_spec.rb +0 -28
  181. data/spec/mstesttestrunner_spec.rb +0 -144
  182. data/spec/nant_spec.rb +0 -110
  183. data/spec/nchurn_spec.rb +0 -75
  184. data/spec/ncoverconsole_spec.rb +0 -353
  185. data/spec/ncoverreport_spec.rb +0 -619
  186. data/spec/ndepend_spec.rb +0 -72
  187. data/spec/netversion_spec.rb +0 -53
  188. data/spec/nugetinstall_spec.rb +0 -47
  189. data/spec/nugetupdate_spec.rb +0 -42
  190. data/spec/nunittestrunner_spec.rb +0 -115
  191. data/spec/nuspec_spec.rb +0 -85
  192. data/spec/output_spec.rb +0 -149
  193. data/spec/patches/docu_patch.rb +0 -13
  194. data/spec/patches/fail_patch.rb +0 -9
  195. data/spec/patches/system_patch.rb +0 -20
  196. data/spec/plink_spec.rb +0 -62
  197. data/spec/runcommand_spec.rb +0 -94
  198. data/spec/spec.opts +0 -1
  199. data/spec/specflowreport_spec.rb +0 -143
  200. data/spec/sqlcmd_spec.rb +0 -334
  201. data/spec/support/AssemblyInfo/AssemblyInfo.test +0 -9
  202. data/spec/support/AssemblyInfo/AssemblyInfoInput.test +0 -9
  203. data/spec/support/AssemblyInfo/assemblyinfo.yml +0 -2
  204. data/spec/support/CodeCoverage/mspec/assemblies/Machine.Specifications.dll +0 -0
  205. data/spec/support/CodeCoverage/mspec/assemblies/TestSolution.MSpecTests.dll +0 -0
  206. data/spec/support/CodeCoverage/mspec/assemblies/TestSolution.dll +0 -0
  207. data/spec/support/CodeCoverage/mspec/assemblies/nunit.framework.dll +0 -0
  208. data/spec/support/CodeCoverage/mstest/TestSolution.MSTestTests.NET40.dll +0 -0
  209. data/spec/support/CodeCoverage/mstest/TestSolution.MSTestTests.dll +0 -0
  210. data/spec/support/CodeCoverage/nunit/assemblies/TestSolution.Tests.dll +0 -0
  211. data/spec/support/CodeCoverage/nunit/assemblies/TestSolution.dll +0 -0
  212. data/spec/support/CodeCoverage/nunit/assemblies/nunit.framework.dll +0 -0
  213. data/spec/support/CodeCoverage/nunit/assemblies/with spaces/TestSolution.Tests.dll +0 -0
  214. data/spec/support/CodeCoverage/nunit/assemblies/with spaces/TestSolution.dll +0 -0
  215. data/spec/support/CodeCoverage/nunit/assemblies/with spaces/nunit.framework.dll +0 -0
  216. data/spec/support/CodeCoverage/nunit/failing_assemblies/TestSolution.FailingTests.dll +0 -0
  217. data/spec/support/CodeCoverage/nunit/failing_assemblies/nunit.framework.dll +0 -0
  218. data/spec/support/CodeCoverage/report/coverage.xml +0 -4578
  219. data/spec/support/CodeCoverage/xunit/assemblies/TestSolution.XUnitTests.dll +0 -0
  220. data/spec/support/CodeCoverage/xunit/assemblies/TestSolution.dll +0 -0
  221. data/spec/support/CodeCoverage/xunit/assemblies/xunit.dll +0 -0
  222. data/spec/support/CodeCoverage/xunit/assemblies/xunit.xml +0 -2604
  223. data/spec/support/FluentMigrator/FluentMigrator.dll +0 -0
  224. data/spec/support/FluentMigrator/TestSolution.FluentMigrator.dll +0 -0
  225. data/spec/support/SpecFlow/TechTalk.SpecFlow.dll +0 -0
  226. data/spec/support/SpecFlow/TestSolution.SpecFlow.dll +0 -0
  227. data/spec/support/SpecFlow/TestSolution.SpecFlow.pdb +0 -0
  228. data/spec/support/SpecFlow/TestSolution.dll +0 -0
  229. data/spec/support/SpecFlow/TestSolution.pdb +0 -0
  230. data/spec/support/SpecFlow/nunit.framework.dll +0 -0
  231. data/spec/support/TestSolution/LocalTestRun.testrunconfig +0 -5
  232. data/spec/support/TestSolution/NDependProject.xml +0 -315
  233. data/spec/support/TestSolution/TestSolution.5.0.ReSharper.user +0 -27
  234. data/spec/support/TestSolution/TestSolution.FailingTests/FailingTestFixture.cs +0 -19
  235. data/spec/support/TestSolution/TestSolution.FailingTests/Properties/AssemblyInfo.cs +0 -36
  236. data/spec/support/TestSolution/TestSolution.FailingTests/TestSolution.FailingTests.csproj +0 -101
  237. data/spec/support/TestSolution/TestSolution.FluentMigrator/M001_SampleMigration.cs +0 -19
  238. data/spec/support/TestSolution/TestSolution.FluentMigrator/Properties/AssemblyInfo.cs +0 -36
  239. data/spec/support/TestSolution/TestSolution.FluentMigrator/TestSolution.FluentMigrator.csproj +0 -101
  240. data/spec/support/TestSolution/TestSolution.MSDeploy/TestSolution.MSDeploy.sln +0 -20
  241. data/spec/support/TestSolution/TestSolution.MSDeploy/TestSolution.MSDeploy/About.aspx +0 -13
  242. data/spec/support/TestSolution/TestSolution.MSDeploy/TestSolution.MSDeploy/About.aspx.cs +0 -17
  243. data/spec/support/TestSolution/TestSolution.MSDeploy/TestSolution.MSDeploy/About.aspx.designer.cs +0 -17
  244. data/spec/support/TestSolution/TestSolution.MSDeploy/TestSolution.MSDeploy/Account/ChangePassword.aspx +0 -60
  245. data/spec/support/TestSolution/TestSolution.MSDeploy/TestSolution.MSDeploy/Account/ChangePassword.aspx.cs +0 -17
  246. data/spec/support/TestSolution/TestSolution.MSDeploy/TestSolution.MSDeploy/Account/ChangePassword.aspx.designer.cs +0 -26
  247. data/spec/support/TestSolution/TestSolution.MSDeploy/TestSolution.MSDeploy/Account/ChangePasswordSuccess.aspx +0 -13
  248. data/spec/support/TestSolution/TestSolution.MSDeploy/TestSolution.MSDeploy/Account/ChangePasswordSuccess.aspx.cs +0 -17
  249. data/spec/support/TestSolution/TestSolution.MSDeploy/TestSolution.MSDeploy/Account/ChangePasswordSuccess.aspx.designer.cs +0 -17
  250. data/spec/support/TestSolution/TestSolution.MSDeploy/TestSolution.MSDeploy/Account/Login.aspx +0 -49
  251. data/spec/support/TestSolution/TestSolution.MSDeploy/TestSolution.MSDeploy/Account/Login.aspx.cs +0 -17
  252. data/spec/support/TestSolution/TestSolution.MSDeploy/TestSolution.MSDeploy/Account/Login.aspx.designer.cs +0 -35
  253. data/spec/support/TestSolution/TestSolution.MSDeploy/TestSolution.MSDeploy/Account/Register.aspx +0 -75
  254. data/spec/support/TestSolution/TestSolution.MSDeploy/TestSolution.MSDeploy/Account/Register.aspx.cs +0 -32
  255. data/spec/support/TestSolution/TestSolution.MSDeploy/TestSolution.MSDeploy/Account/Register.aspx.designer.cs +0 -35
  256. data/spec/support/TestSolution/TestSolution.MSDeploy/TestSolution.MSDeploy/Account/Web.config +0 -18
  257. data/spec/support/TestSolution/TestSolution.MSDeploy/TestSolution.MSDeploy/Default.aspx +0 -17
  258. data/spec/support/TestSolution/TestSolution.MSDeploy/TestSolution.MSDeploy/Default.aspx.cs +0 -17
  259. data/spec/support/TestSolution/TestSolution.MSDeploy/TestSolution.MSDeploy/Default.aspx.designer.cs +0 -17
  260. data/spec/support/TestSolution/TestSolution.MSDeploy/TestSolution.MSDeploy/Global.asax +0 -1
  261. data/spec/support/TestSolution/TestSolution.MSDeploy/TestSolution.MSDeploy/Global.asax.cs +0 -47
  262. data/spec/support/TestSolution/TestSolution.MSDeploy/TestSolution.MSDeploy/Properties/AssemblyInfo.cs +0 -35
  263. data/spec/support/TestSolution/TestSolution.MSDeploy/TestSolution.MSDeploy/Scripts/jquery-1.4.1-vsdoc.js +0 -8061
  264. data/spec/support/TestSolution/TestSolution.MSDeploy/TestSolution.MSDeploy/Scripts/jquery-1.4.1.js +0 -6111
  265. data/spec/support/TestSolution/TestSolution.MSDeploy/TestSolution.MSDeploy/Scripts/jquery-1.4.1.min.js +0 -167
  266. data/spec/support/TestSolution/TestSolution.MSDeploy/TestSolution.MSDeploy/Site.Master +0 -51
  267. data/spec/support/TestSolution/TestSolution.MSDeploy/TestSolution.MSDeploy/Site.Master.cs +0 -17
  268. data/spec/support/TestSolution/TestSolution.MSDeploy/TestSolution.MSDeploy/Site.Master.designer.cs +0 -71
  269. data/spec/support/TestSolution/TestSolution.MSDeploy/TestSolution.MSDeploy/Styles/Site.css +0 -294
  270. data/spec/support/TestSolution/TestSolution.MSDeploy/TestSolution.MSDeploy/TestSolution.MSDeploy.Publish.xml +0 -2
  271. data/spec/support/TestSolution/TestSolution.MSDeploy/TestSolution.MSDeploy/TestSolution.MSDeploy.csproj +0 -163
  272. data/spec/support/TestSolution/TestSolution.MSDeploy/TestSolution.MSDeploy/Web.Debug.config +0 -30
  273. data/spec/support/TestSolution/TestSolution.MSDeploy/TestSolution.MSDeploy/Web.Release.config +0 -31
  274. data/spec/support/TestSolution/TestSolution.MSDeploy/TestSolution.MSDeploy/Web.config +0 -52
  275. data/spec/support/TestSolution/TestSolution.MSTestTests.NET40/Properties/AssemblyInfo.cs +0 -36
  276. data/spec/support/TestSolution/TestSolution.MSTestTests.NET40/TestSolution.MSTestTests.NET40.csproj +0 -53
  277. data/spec/support/TestSolution/TestSolution.MSTestTests.NET40/Tests.cs +0 -20
  278. data/spec/support/TestSolution/TestSolution.MSTestTests/Properties/AssemblyInfo.cs +0 -35
  279. data/spec/support/TestSolution/TestSolution.MSTestTests/TestSolution.MSTestTests.csproj +0 -97
  280. data/spec/support/TestSolution/TestSolution.MSTestTests/Tests.cs +0 -20
  281. data/spec/support/TestSolution/TestSolution.MSpecTests/Properties/AssemblyInfo.cs +0 -36
  282. data/spec/support/TestSolution/TestSolution.MSpecTests/SomeSpecTest.cs +0 -18
  283. data/spec/support/TestSolution/TestSolution.MSpecTests/TestSolution.MSpecTests.csproj +0 -110
  284. data/spec/support/TestSolution/TestSolution.SpecFlow/OneFeature.feature +0 -8
  285. data/spec/support/TestSolution/TestSolution.SpecFlow/OneFeature.feature.cs +0 -73
  286. data/spec/support/TestSolution/TestSolution.SpecFlow/Properties/AssemblyInfo.cs +0 -36
  287. data/spec/support/TestSolution/TestSolution.SpecFlow/StepDefinition.cs +0 -30
  288. data/spec/support/TestSolution/TestSolution.SpecFlow/TestSolution.SpecFlow.csproj +0 -122
  289. data/spec/support/TestSolution/TestSolution.Tests/Properties/AssemblyInfo.cs +0 -36
  290. data/spec/support/TestSolution/TestSolution.Tests/SomeTestFixture.cs +0 -23
  291. data/spec/support/TestSolution/TestSolution.Tests/TestSolution.Tests.csproj +0 -107
  292. data/spec/support/TestSolution/TestSolution.XUnitTests/Class1.cs +0 -20
  293. data/spec/support/TestSolution/TestSolution.XUnitTests/FailingTestFixture.cs +0 -14
  294. data/spec/support/TestSolution/TestSolution.XUnitTests/Properties/AssemblyInfo.cs +0 -36
  295. data/spec/support/TestSolution/TestSolution.XUnitTests/TestSolution.XUnitTests.csproj +0 -108
  296. data/spec/support/TestSolution/TestSolution.build +0 -25
  297. data/spec/support/TestSolution/TestSolution.sln +0 -75
  298. data/spec/support/TestSolution/TestSolution.vsmdi +0 -6
  299. data/spec/support/TestSolution/TestSolution/Class1.cs +0 -17
  300. data/spec/support/TestSolution/TestSolution/Properties/AssemblyInfo.cs +0 -36
  301. data/spec/support/TestSolution/TestSolution/TestSolution.csproj +0 -97
  302. data/spec/support/Tools/FluentMigrator-0.9/FluentMigrator.MSBuild.dll +0 -0
  303. data/spec/support/Tools/FluentMigrator-0.9/FluentMigrator.NAnt.dll +0 -0
  304. data/spec/support/Tools/FluentMigrator-0.9/FluentMigrator.Runner.dll +0 -0
  305. data/spec/support/Tools/FluentMigrator-0.9/FluentMigrator.Runner.pdb +0 -0
  306. data/spec/support/Tools/FluentMigrator-0.9/FluentMigrator.Tests.dll +0 -0
  307. data/spec/support/Tools/FluentMigrator-0.9/FluentMigrator.Tests.pdb +0 -0
  308. data/spec/support/Tools/FluentMigrator-0.9/FluentMigrator.dll +0 -0
  309. data/spec/support/Tools/FluentMigrator-0.9/FluentMigrator.pdb +0 -0
  310. data/spec/support/Tools/FluentMigrator-0.9/Migrate.exe +0 -0
  311. data/spec/support/Tools/FluentMigrator-0.9/Migrate.exe.config +0 -6
  312. data/spec/support/Tools/FluentMigrator-0.9/Moq.dll +0 -0
  313. data/spec/support/Tools/FluentMigrator-0.9/Moq.xml +0 -3467
  314. data/spec/support/Tools/FluentMigrator-0.9/MySql.Data.dll +0 -0
  315. data/spec/support/Tools/FluentMigrator-0.9/NAnt.Core.dll +0 -0
  316. data/spec/support/Tools/FluentMigrator-0.9/NAnt.Core.xml +0 -14880
  317. data/spec/support/Tools/FluentMigrator-0.9/Oracle.DataAccess.dll +0 -0
  318. data/spec/support/Tools/FluentMigrator-0.9/System.Data.SQLite.DLL +0 -0
  319. data/spec/support/Tools/FluentMigrator-0.9/log4net.dll +0 -0
  320. data/spec/support/Tools/FluentMigrator-0.9/nunit.framework.dll +0 -0
  321. data/spec/support/Tools/FluentMigrator-0.9/nunit.should.dll +0 -0
  322. data/spec/support/Tools/FluentMigrator-0.9/testscript.sql +0 -1
  323. data/spec/support/Tools/MSTest-2008/MSTest.exe +0 -0
  324. data/spec/support/Tools/MSTest-2008/Microsoft.VisualStudio.QualityTools.CommandLine.dll +0 -0
  325. data/spec/support/Tools/MSTest-2008/Microsoft.VisualStudio.QualityTools.Common.dll +0 -0
  326. data/spec/support/Tools/MSTest-2008/Microsoft.VisualStudio.QualityTools.ControllerObject.dll +0 -0
  327. data/spec/support/Tools/MSTest-2008/Microsoft.VisualStudio.QualityTools.ExecutionCommon.dll +0 -0
  328. data/spec/support/Tools/MSTest-2008/Microsoft.VisualStudio.QualityTools.TMI.dll +0 -0
  329. data/spec/support/Tools/MSTest-2008/Microsoft.VisualStudio.QualityTools.Tips.UnitTest.Adapter.dll +0 -0
  330. data/spec/support/Tools/MSTest-2008/Microsoft.VisualStudio.QualityTools.Tips.UnitTest.AssemblyResolver.dll +0 -0
  331. data/spec/support/Tools/MSTest-2008/Microsoft.VisualStudio.QualityTools.Tips.UnitTest.ObjectModel.dll +0 -0
  332. data/spec/support/Tools/MSTest-2008/Microsoft.VisualStudio.QualityTools.Tips.UnitTest.Tip.dll +0 -0
  333. data/spec/support/Tools/MSTest-2010/MSTest.exe +0 -0
  334. data/spec/support/Tools/MSTest-2010/MSTest.exe.config +0 -31
  335. data/spec/support/Tools/MSTest-2010/Microsoft.VisualStudio.QualityTools.AgentObject.dll +0 -0
  336. data/spec/support/Tools/MSTest-2010/Microsoft.VisualStudio.QualityTools.AgentProcessManager.dll +0 -0
  337. data/spec/support/Tools/MSTest-2010/Microsoft.VisualStudio.QualityTools.CMI.dll +0 -0
  338. data/spec/support/Tools/MSTest-2010/Microsoft.VisualStudio.QualityTools.CheckinPolicies.dll +0 -0
  339. data/spec/support/Tools/MSTest-2010/Microsoft.VisualStudio.QualityTools.CodeCoverage.dll +0 -0
  340. data/spec/support/Tools/MSTest-2010/Microsoft.VisualStudio.QualityTools.CodedUITest.Controls.dll +0 -0
  341. data/spec/support/Tools/MSTest-2010/Microsoft.VisualStudio.QualityTools.CodedUITestFramework.dll +0 -0
  342. data/spec/support/Tools/MSTest-2010/Microsoft.VisualStudio.QualityTools.CodedUITestPackage.dll +0 -0
  343. data/spec/support/Tools/MSTest-2010/Microsoft.VisualStudio.QualityTools.CommandLine.dll +0 -0
  344. data/spec/support/Tools/MSTest-2010/Microsoft.VisualStudio.QualityTools.Common.dll +0 -0
  345. data/spec/support/Tools/MSTest-2010/Microsoft.VisualStudio.QualityTools.Controller.SpooledJob.dll +0 -0
  346. data/spec/support/Tools/MSTest-2010/Microsoft.VisualStudio.QualityTools.ControllerObject.dll +0 -0
  347. data/spec/support/Tools/MSTest-2010/Microsoft.VisualStudio.QualityTools.DataCollectionAgentObject.dll +0 -0
  348. data/spec/support/Tools/MSTest-2010/Microsoft.VisualStudio.QualityTools.ExecutionCommon.dll +0 -0
  349. data/spec/support/Tools/MSTest-2010/Microsoft.VisualStudio.QualityTools.HostAdapters.ASPNETAdapter.dll +0 -0
  350. data/spec/support/Tools/MSTest-2010/Microsoft.VisualStudio.QualityTools.HostAdapters.ASPNETAgent.dll +0 -0
  351. data/spec/support/Tools/MSTest-2010/Microsoft.VisualStudio.QualityTools.Linking.dll +0 -0
  352. data/spec/support/Tools/MSTest-2010/Microsoft.VisualStudio.QualityTools.LoadTest.dll +0 -0
  353. data/spec/support/Tools/MSTest-2010/Microsoft.VisualStudio.QualityTools.LoadTestExcelAddIn.dll +0 -0
  354. data/spec/support/Tools/MSTest-2010/Microsoft.VisualStudio.QualityTools.LoadTestExcelAddIn.dll.manifest +0 -296
  355. data/spec/support/Tools/MSTest-2010/Microsoft.VisualStudio.QualityTools.LoadTestExcelAddIn.vsto +0 -150
  356. data/spec/support/Tools/MSTest-2010/Microsoft.VisualStudio.QualityTools.LoadTestExcelCommon.dll +0 -0
  357. data/spec/support/Tools/MSTest-2010/Microsoft.VisualStudio.QualityTools.LoadTestExcelCommon.tlb +0 -0
  358. data/spec/support/Tools/MSTest-2010/Microsoft.VisualStudio.QualityTools.LoadTestExec.dll +0 -0
  359. data/spec/support/Tools/MSTest-2010/Microsoft.VisualStudio.QualityTools.LoadTestFramework.dll +0 -0
  360. data/spec/support/Tools/MSTest-2010/Microsoft.VisualStudio.QualityTools.LoadTestPackage.dll +0 -0
  361. data/spec/support/Tools/MSTest-2010/Microsoft.VisualStudio.QualityTools.LoadTestUI.dll +0 -0
  362. data/spec/support/Tools/MSTest-2010/Microsoft.VisualStudio.QualityTools.NICServices.dll +0 -0
  363. data/spec/support/Tools/MSTest-2010/Microsoft.VisualStudio.QualityTools.NetworkEmulation.dll +0 -0
  364. data/spec/support/Tools/MSTest-2010/Microsoft.VisualStudio.QualityTools.OperationalStore.ClientHelper.dll +0 -0
  365. data/spec/support/Tools/MSTest-2010/Microsoft.VisualStudio.QualityTools.RecorderBar.dll +0 -0
  366. data/spec/support/Tools/MSTest-2010/Microsoft.VisualStudio.QualityTools.RecorderBarBHO100.dll +0 -0
  367. data/spec/support/Tools/MSTest-2010/Microsoft.VisualStudio.QualityTools.Resource.dll +0 -0
  368. data/spec/support/Tools/MSTest-2010/Microsoft.VisualStudio.QualityTools.Sqm.dll +0 -0
  369. data/spec/support/Tools/MSTest-2010/Microsoft.VisualStudio.QualityTools.TMI.dll +0 -0
  370. data/spec/support/Tools/MSTest-2010/Microsoft.VisualStudio.QualityTools.TestCaseManagement.dll +0 -0
  371. data/spec/support/Tools/MSTest-2010/Microsoft.VisualStudio.QualityTools.Tips.GenericTest.Adapter.dll +0 -0
  372. data/spec/support/Tools/MSTest-2010/Microsoft.VisualStudio.QualityTools.Tips.GenericTest.ObjectModel.dll +0 -0
  373. data/spec/support/Tools/MSTest-2010/Microsoft.VisualStudio.QualityTools.Tips.GenericTest.Tip.dll +0 -0
  374. data/spec/support/Tools/MSTest-2010/Microsoft.VisualStudio.QualityTools.Tips.ManualTest.Adapter.dll +0 -0
  375. data/spec/support/Tools/MSTest-2010/Microsoft.VisualStudio.QualityTools.Tips.ManualTest.ObjectModel.dll +0 -0
  376. data/spec/support/Tools/MSTest-2010/Microsoft.VisualStudio.QualityTools.Tips.ManualTest.Tip.dll +0 -0
  377. data/spec/support/Tools/MSTest-2010/Microsoft.VisualStudio.QualityTools.Tips.OrderedTest.Adapter.dll +0 -0
  378. data/spec/support/Tools/MSTest-2010/Microsoft.VisualStudio.QualityTools.Tips.OrderedTest.ObjectModel.dll +0 -0
  379. data/spec/support/Tools/MSTest-2010/Microsoft.VisualStudio.QualityTools.Tips.OrderedTest.Tip.dll +0 -0
  380. data/spec/support/Tools/MSTest-2010/Microsoft.VisualStudio.QualityTools.Tips.TuipPackage.dll +0 -0
  381. data/spec/support/Tools/MSTest-2010/Microsoft.VisualStudio.QualityTools.Tips.UnitTest.Adapter.dll +0 -0
  382. data/spec/support/Tools/MSTest-2010/Microsoft.VisualStudio.QualityTools.Tips.UnitTest.AssemblyResolver.dll +0 -0
  383. data/spec/support/Tools/MSTest-2010/Microsoft.VisualStudio.QualityTools.Tips.UnitTest.ObjectModel.dll +0 -0
  384. data/spec/support/Tools/MSTest-2010/Microsoft.VisualStudio.QualityTools.Tips.UnitTest.Tip.dll +0 -0
  385. data/spec/support/Tools/MSTest-2010/Microsoft.VisualStudio.QualityTools.Tips.WebLoadTest.Tip.dll +0 -0
  386. data/spec/support/Tools/MSTest-2010/Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll +0 -0
  387. data/spec/support/Tools/MSTest-2010/Microsoft.VisualStudio.QualityTools.Vsip.dll +0 -0
  388. data/spec/support/Tools/MSTest-2010/Microsoft.VisualStudio.QualityTools.WarehouseCommon.dll +0 -0
  389. data/spec/support/Tools/MSTest-2010/Microsoft.VisualStudio.QualityTools.WebTestFramework.dll +0 -0
  390. data/spec/support/Tools/MSTest-2010/Microsoft.VisualStudio.QualityTools.WebTestPlayback.dll +0 -0
  391. data/spec/support/Tools/MSTest-2010/Microsoft.VisualStudio.QualityTools.Wizard.TestProjectWizards.dll +0 -0
  392. data/spec/support/Tools/MSTest-2010/mstest.reg +0 -0
  393. data/spec/support/Tools/Machine.Specifications-0.5.3/lib/Machine.Specifications.TDNetRunner.dll +0 -0
  394. data/spec/support/Tools/Machine.Specifications-0.5.3/lib/Machine.Specifications.dll +0 -0
  395. data/spec/support/Tools/Machine.Specifications-0.5.3/lib/Machine.Specifications.dll.tdnet +0 -5
  396. data/spec/support/Tools/Machine.Specifications-0.5.3/tools/CommandLine.dll +0 -0
  397. data/spec/support/Tools/Machine.Specifications-0.5.3/tools/CommandLine.xml +0 -504
  398. data/spec/support/Tools/Machine.Specifications-0.5.3/tools/InstallResharperRunner.4.1.bat +0 -5
  399. data/spec/support/Tools/Machine.Specifications-0.5.3/tools/InstallResharperRunner.4.5.bat +0 -5
  400. data/spec/support/Tools/Machine.Specifications-0.5.3/tools/InstallResharperRunner.5.0 - VS2008.bat +0 -5
  401. data/spec/support/Tools/Machine.Specifications-0.5.3/tools/InstallResharperRunner.5.0 - VS2010.bat +0 -5
  402. data/spec/support/Tools/Machine.Specifications-0.5.3/tools/InstallResharperRunner.5.1 - VS2008.bat +0 -5
  403. data/spec/support/Tools/Machine.Specifications-0.5.3/tools/InstallResharperRunner.5.1 - VS2010.bat +0 -5
  404. data/spec/support/Tools/Machine.Specifications-0.5.3/tools/InstallResharperRunner.6.0 - VS2008.bat +0 -5
  405. data/spec/support/Tools/Machine.Specifications-0.5.3/tools/InstallResharperRunner.6.0 - VS2010.bat +0 -5
  406. data/spec/support/Tools/Machine.Specifications-0.5.3/tools/InstallResharperRunner.6.1 - VS2008.bat +0 -5
  407. data/spec/support/Tools/Machine.Specifications-0.5.3/tools/InstallResharperRunner.6.1 - VS2010.bat +0 -5
  408. data/spec/support/Tools/Machine.Specifications-0.5.3/tools/InstallTDNetRunner.bat +0 -16
  409. data/spec/support/Tools/Machine.Specifications-0.5.3/tools/InstallTDNetRunnerSilent.bat +0 -16
  410. data/spec/support/Tools/Machine.Specifications-0.5.3/tools/License.txt +0 -54
  411. data/spec/support/Tools/Machine.Specifications-0.5.3/tools/Machine.Specifications.GallioAdapter.3.1.dll +0 -0
  412. data/spec/support/Tools/Machine.Specifications-0.5.3/tools/Machine.Specifications.GallioAdapter.plugin +0 -43
  413. data/spec/support/Tools/Machine.Specifications-0.5.3/tools/Machine.Specifications.ReSharperRunner.4.1.dll +0 -0
  414. data/spec/support/Tools/Machine.Specifications-0.5.3/tools/Machine.Specifications.ReSharperRunner.4.5.dll +0 -0
  415. data/spec/support/Tools/Machine.Specifications-0.5.3/tools/Machine.Specifications.ReSharperRunner.5.0.dll +0 -0
  416. data/spec/support/Tools/Machine.Specifications-0.5.3/tools/Machine.Specifications.ReSharperRunner.5.1.dll +0 -0
  417. data/spec/support/Tools/Machine.Specifications-0.5.3/tools/Machine.Specifications.ReSharperRunner.6.0.dll +0 -0
  418. data/spec/support/Tools/Machine.Specifications-0.5.3/tools/Machine.Specifications.ReSharperRunner.6.1.dll +0 -0
  419. data/spec/support/Tools/Machine.Specifications-0.5.3/tools/Machine.Specifications.Reporting.Templates.dll +0 -0
  420. data/spec/support/Tools/Machine.Specifications-0.5.3/tools/Machine.Specifications.Reporting.dll +0 -0
  421. data/spec/support/Tools/Machine.Specifications-0.5.3/tools/Machine.Specifications.SeleniumSupport.dll +0 -0
  422. data/spec/support/Tools/Machine.Specifications-0.5.3/tools/Machine.Specifications.TDNetRunner.dll +0 -0
  423. data/spec/support/Tools/Machine.Specifications-0.5.3/tools/Machine.Specifications.WatinSupport.dll +0 -0
  424. data/spec/support/Tools/Machine.Specifications-0.5.3/tools/Machine.Specifications.dll +0 -0
  425. data/spec/support/Tools/Machine.Specifications-0.5.3/tools/Machine.Specifications.dll.tdnet +0 -5
  426. data/spec/support/Tools/Machine.Specifications-0.5.3/tools/Spark.dll +0 -0
  427. data/spec/support/Tools/Machine.Specifications-0.5.3/tools/TestDriven.Framework.dll +0 -0
  428. data/spec/support/Tools/Machine.Specifications-0.5.3/tools/install.ps1 +0 -6
  429. data/spec/support/Tools/Machine.Specifications-0.5.3/tools/mspec-clr4.exe +0 -0
  430. data/spec/support/Tools/Machine.Specifications-0.5.3/tools/mspec-clr4.exe.config +0 -6
  431. data/spec/support/Tools/Machine.Specifications-0.5.3/tools/mspec-x86-clr4.exe +0 -0
  432. data/spec/support/Tools/Machine.Specifications-0.5.3/tools/mspec-x86-clr4.exe.config +0 -6
  433. data/spec/support/Tools/Machine.Specifications-0.5.3/tools/mspec-x86.exe +0 -0
  434. data/spec/support/Tools/Machine.Specifications-0.5.3/tools/mspec.exe +0 -0
  435. data/spec/support/Tools/NAnt-0.85/COPYING.txt +0 -340
  436. data/spec/support/Tools/NAnt-0.85/README.txt +0 -144
  437. data/spec/support/Tools/NChurn-v0.4/LICENSE.txt +0 -133
  438. data/spec/support/Tools/NChurn-v0.4/NChurn.exe +0 -0
  439. data/spec/support/Tools/NChurn-v0.4/README.md +0 -171
  440. data/spec/support/Tools/NChurn-v0.4/VERSION +0 -1
  441. data/spec/support/Tools/NChurn-v0.4/churn-0.4.0.0.txt +0 -178
  442. data/spec/support/Tools/NCover-v3.3/ActiproEULA.hml +0 -287
  443. data/spec/support/Tools/NCover-v3.3/ActiproSoftware.Shared.Wpf30.dll +0 -0
  444. data/spec/support/Tools/NCover-v3.3/ActiproSoftware.SyntaxEditor.Addons.DotNet.Wpf30.dll +0 -0
  445. data/spec/support/Tools/NCover-v3.3/ActiproSoftware.SyntaxEditor.Wpf30.dll +0 -0
  446. data/spec/support/Tools/NCover-v3.3/ActiproSoftware.Text.Net20.dll +0 -0
  447. data/spec/support/Tools/NCover-v3.3/AdminBootstrapper.exe +0 -0
  448. data/spec/support/Tools/NCover-v3.3/Build Task Plugins/MSBuildNCoverExample.proj +0 -237
  449. data/spec/support/Tools/NCover-v3.3/Build Task Plugins/MSBuildReportingExample.proj +0 -224
  450. data/spec/support/Tools/NCover-v3.3/Build Task Plugins/NAntNCoverExample.build +0 -241
  451. data/spec/support/Tools/NCover-v3.3/Build Task Plugins/NAntReportingExample.build +0 -218
  452. data/spec/support/Tools/NCover-v3.3/Build Task Plugins/NCover.MSBuildTasks.dll +0 -0
  453. data/spec/support/Tools/NCover-v3.3/Build Task Plugins/NCover.NAntTasks.dll +0 -0
  454. data/spec/support/Tools/NCover-v3.3/Build Task Plugins/NCoverExplorer.MSBuildTasks.dll +0 -0
  455. data/spec/support/Tools/NCover-v3.3/Build Task Plugins/NCoverExplorer.NAntTasks.dll +0 -0
  456. data/spec/support/Tools/NCover-v3.3/CC.Net/NCoverReporting30.xsl +0 -2313
  457. data/spec/support/Tools/NCover-v3.3/CC.Net/dashboard.config +0 -55
  458. data/spec/support/Tools/NCover-v3.3/CC.Net/excanvas.js +0 -35
  459. data/spec/support/Tools/NCover-v3.3/CC.Net/g.png +0 -0
  460. data/spec/support/Tools/NCover-v3.3/CC.Net/jquery-1.3.2.min.js +0 -19
  461. data/spec/support/Tools/NCover-v3.3/CC.Net/r.png +0 -0
  462. data/spec/support/Tools/NCover-v3.3/CC.Net/readme.txt +0 -51
  463. data/spec/support/Tools/NCover-v3.3/CC.Net/trends.js +0 -184
  464. data/spec/support/Tools/NCover-v3.3/CC.Net/y.png +0 -0
  465. data/spec/support/Tools/NCover-v3.3/MSVCM90.dll +0 -0
  466. data/spec/support/Tools/NCover-v3.3/MSVCP90.dll +0 -0
  467. data/spec/support/Tools/NCover-v3.3/MSVCR90.dll +0 -0
  468. data/spec/support/Tools/NCover-v3.3/Microsoft.VC90.CRT.manifest +0 -13
  469. data/spec/support/Tools/NCover-v3.3/Mindscape.LightSpeed.Linq.dll +0 -0
  470. data/spec/support/Tools/NCover-v3.3/Mindscape.LightSpeed.dll +0 -0
  471. data/spec/support/Tools/NCover-v3.3/NCover.Console.exe +0 -0
  472. data/spec/support/Tools/NCover-v3.3/NCover.Console.exe.config +0 -55
  473. data/spec/support/Tools/NCover-v3.3/NCover.Data.x86.dll +0 -0
  474. data/spec/support/Tools/NCover-v3.3/NCover.Explorer.Framework.dll +0 -0
  475. data/spec/support/Tools/NCover-v3.3/NCover.Explorer.exe +0 -0
  476. data/spec/support/Tools/NCover-v3.3/NCover.Explorer.exe.config +0 -16
  477. data/spec/support/Tools/NCover-v3.3/NCover.Framework.XmlSerializers.dll +0 -0
  478. data/spec/support/Tools/NCover-v3.3/NCover.Framework.dll +0 -0
  479. data/spec/support/Tools/NCover-v3.3/NCover.Interfaces.Core.dll +0 -0
  480. data/spec/support/Tools/NCover-v3.3/NCover.Interfaces.dll +0 -0
  481. data/spec/support/Tools/NCover-v3.3/NCover.Legacy.Configuration.dll +0 -0
  482. data/spec/support/Tools/NCover-v3.3/NCover.Lib.x86.dll +0 -0
  483. data/spec/support/Tools/NCover-v3.3/NCover.Registration.exe +0 -0
  484. data/spec/support/Tools/NCover-v3.3/NCover.Reporting.exe +0 -0
  485. data/spec/support/Tools/NCover-v3.3/NCover.Runner.dll +0 -0
  486. data/spec/support/Tools/NCover-v3.3/NCover.UpConvert.exe +0 -0
  487. data/spec/support/Tools/NCover-v3.3/NCover.Utilities.dll +0 -0
  488. data/spec/support/Tools/NCover-v3.3/NCoverEULA.pdf +0 -0
  489. data/spec/support/Tools/NCover-v3.3/NCoverExplorer.Console.exe +0 -0
  490. data/spec/support/Tools/NCover-v3.3/ReportingExample.config +0 -213
  491. data/spec/support/Tools/NCover-v3.3/System.Data.SQLite.dll +0 -0
  492. data/spec/support/Tools/NDepend-v2.12/EULA_NDepend.txt +0 -94
  493. data/spec/support/Tools/NDepend-v2.12/Lib/DevExpress.Data.v8.2.dll +0 -0
  494. data/spec/support/Tools/NDepend-v2.12/Lib/DevExpress.OfficeSkins.v8.2.dll +0 -0
  495. data/spec/support/Tools/NDepend-v2.12/Lib/DevExpress.Utils.v8.2.dll +0 -0
  496. data/spec/support/Tools/NDepend-v2.12/Lib/DevExpress.XtraBars.v8.2.dll +0 -0
  497. data/spec/support/Tools/NDepend-v2.12/Lib/DevExpress.XtraEditors.v8.2.dll +0 -0
  498. data/spec/support/Tools/NDepend-v2.12/Lib/DevExpress.XtraNavBar.v8.2.dll +0 -0
  499. data/spec/support/Tools/NDepend-v2.12/Lib/EnvDTE.dll +0 -0
  500. data/spec/support/Tools/NDepend-v2.12/Lib/Microsoft.Msagl.Drawing.dll +0 -0
  501. data/spec/support/Tools/NDepend-v2.12/Lib/Microsoft.Msagl.GraphViewerGdi.dll +0 -0
  502. data/spec/support/Tools/NDepend-v2.12/Lib/Microsoft.Msagl.GraphViewerGdi.dll.config +0 -3
  503. data/spec/support/Tools/NDepend-v2.12/Lib/Microsoft.Msagl.dll +0 -0
  504. data/spec/support/Tools/NDepend-v2.12/Lib/Microsoft.VisualStudio.OLE.Interop.dll +0 -0
  505. data/spec/support/Tools/NDepend-v2.12/Lib/Microsoft.VisualStudio.Shell.Interop.dll +0 -0
  506. data/spec/support/Tools/NDepend-v2.12/Lib/Microsoft.VisualStudio.Shell.dll +0 -0
  507. data/spec/support/Tools/NDepend-v2.12/Lib/Mono.Cecil.Pdb.dll +0 -0
  508. data/spec/support/Tools/NDepend-v2.12/Lib/Mono.Cecil.dll +0 -0
  509. data/spec/support/Tools/NDepend-v2.12/Lib/NDepend.AddIn.dll +0 -0
  510. data/spec/support/Tools/NDepend-v2.12/Lib/NDepend.Analysis.dll +0 -0
  511. data/spec/support/Tools/NDepend-v2.12/Lib/NDepend.CQL.dll +0 -0
  512. data/spec/support/Tools/NDepend-v2.12/Lib/NDepend.Framework.dll +0 -0
  513. data/spec/support/Tools/NDepend-v2.12/Lib/NDepend.Platform.DotNet.dll +0 -0
  514. data/spec/support/Tools/NDepend-v2.12/Lib/NDepend.Skins.dll +0 -0
  515. data/spec/support/Tools/NDepend-v2.12/Lib/NDepend.UI.dll +0 -0
  516. data/spec/support/Tools/NDepend-v2.12/Lib/msvcp71.dll +0 -0
  517. data/spec/support/Tools/NDepend-v2.12/Lib/msvcr71.dll +0 -0
  518. data/spec/support/Tools/NDepend-v2.12/NDepend.Console.exe +0 -0
  519. data/spec/support/Tools/NDepend-v2.12/NDepend.Console.exe.config +0 -8
  520. data/spec/support/Tools/NDepend-v2.12/QuickStartTutorial_NDepend.txt +0 -152
  521. data/spec/support/Tools/NDepend-v2.12/VisualNDepend.exe +0 -0
  522. data/spec/support/Tools/NUnit-v2.5/NUnitFitTests.html +0 -277
  523. data/spec/support/Tools/NUnit-v2.5/NUnitTests.config +0 -84
  524. data/spec/support/Tools/NUnit-v2.5/NUnitTests.nunit +0 -14
  525. data/spec/support/Tools/NUnit-v2.5/TestResult.xml +0 -32
  526. data/spec/support/Tools/NUnit-v2.5/agent.conf +0 -4
  527. data/spec/support/Tools/NUnit-v2.5/agent.log.conf +0 -18
  528. data/spec/support/Tools/NUnit-v2.5/clr.bat +0 -96
  529. data/spec/support/Tools/NUnit-v2.5/framework/nunit.framework.dll +0 -0
  530. data/spec/support/Tools/NUnit-v2.5/framework/nunit.framework.xml +0 -10088
  531. data/spec/support/Tools/NUnit-v2.5/framework/nunit.mocks.dll +0 -0
  532. data/spec/support/Tools/NUnit-v2.5/framework/pnunit.framework.dll +0 -0
  533. data/spec/support/Tools/NUnit-v2.5/launcher.log.conf +0 -18
  534. data/spec/support/Tools/NUnit-v2.5/lib/Failure.png +0 -0
  535. data/spec/support/Tools/NUnit-v2.5/lib/Ignored.png +0 -0
  536. data/spec/support/Tools/NUnit-v2.5/lib/Inconclusive.png +0 -0
  537. data/spec/support/Tools/NUnit-v2.5/lib/Skipped.png +0 -0
  538. data/spec/support/Tools/NUnit-v2.5/lib/Success.png +0 -0
  539. data/spec/support/Tools/NUnit-v2.5/lib/fit.dll +0 -0
  540. data/spec/support/Tools/NUnit-v2.5/lib/log4net.dll +0 -0
  541. data/spec/support/Tools/NUnit-v2.5/lib/nunit-console-runner.dll +0 -0
  542. data/spec/support/Tools/NUnit-v2.5/lib/nunit-gui-runner.dll +0 -0
  543. data/spec/support/Tools/NUnit-v2.5/lib/nunit.core.dll +0 -0
  544. data/spec/support/Tools/NUnit-v2.5/lib/nunit.core.interfaces.dll +0 -0
  545. data/spec/support/Tools/NUnit-v2.5/lib/nunit.fixtures.dll +0 -0
  546. data/spec/support/Tools/NUnit-v2.5/lib/nunit.uiexception.dll +0 -0
  547. data/spec/support/Tools/NUnit-v2.5/lib/nunit.uikit.dll +0 -0
  548. data/spec/support/Tools/NUnit-v2.5/lib/nunit.util.dll +0 -0
  549. data/spec/support/Tools/NUnit-v2.5/nunit-agent.exe +0 -0
  550. data/spec/support/Tools/NUnit-v2.5/nunit-agent.exe.config +0 -87
  551. data/spec/support/Tools/NUnit-v2.5/nunit-console-x86.exe +0 -0
  552. data/spec/support/Tools/NUnit-v2.5/nunit-console-x86.exe.config +0 -87
  553. data/spec/support/Tools/NUnit-v2.5/nunit-console.exe +0 -0
  554. data/spec/support/Tools/NUnit-v2.5/nunit-console.exe.config +0 -87
  555. data/spec/support/Tools/NUnit-v2.5/nunit-x86.exe +0 -0
  556. data/spec/support/Tools/NUnit-v2.5/nunit-x86.exe.config +0 -95
  557. data/spec/support/Tools/NUnit-v2.5/nunit.exe +0 -0
  558. data/spec/support/Tools/NUnit-v2.5/nunit.exe.config +0 -95
  559. data/spec/support/Tools/NUnit-v2.5/nunit.framework.dll +0 -0
  560. data/spec/support/Tools/NUnit-v2.5/pnunit-agent.exe +0 -0
  561. data/spec/support/Tools/NUnit-v2.5/pnunit-agent.exe.config +0 -87
  562. data/spec/support/Tools/NUnit-v2.5/pnunit-launcher.exe +0 -0
  563. data/spec/support/Tools/NUnit-v2.5/pnunit-launcher.exe.config +0 -87
  564. data/spec/support/Tools/NUnit-v2.5/pnunit.framework.dll +0 -0
  565. data/spec/support/Tools/NUnit-v2.5/pnunit.tests.dll +0 -0
  566. data/spec/support/Tools/NUnit-v2.5/runFile.exe +0 -0
  567. data/spec/support/Tools/NUnit-v2.5/runFile.exe.config +0 -43
  568. data/spec/support/Tools/NUnit-v2.5/runpnunit.bat +0 -2
  569. data/spec/support/Tools/NUnit-v2.5/test.conf +0 -24
  570. data/spec/support/Tools/PartCover-v2.3/Interop.PartCover.dll +0 -0
  571. data/spec/support/Tools/PartCover-v2.3/PartCover Browser Manual.rtf +0 -28853
  572. data/spec/support/Tools/PartCover-v2.3/PartCover Console Manual.rtf +0 -203
  573. data/spec/support/Tools/PartCover-v2.3/PartCover.Browser.Api.dll +0 -0
  574. data/spec/support/Tools/PartCover-v2.3/PartCover.Browser.exe +0 -0
  575. data/spec/support/Tools/PartCover-v2.3/PartCover.Browser.exe.config +0 -51
  576. data/spec/support/Tools/PartCover-v2.3/PartCover.CorDriver.dll +0 -0
  577. data/spec/support/Tools/PartCover-v2.3/PartCover.Framework.dll +0 -0
  578. data/spec/support/Tools/PartCover-v2.3/PartCover.exe +0 -0
  579. data/spec/support/Tools/PartCover-v2.3/PartCover.exe.config +0 -4
  580. data/spec/support/Tools/PartCover-v2.3/PartViewer.dll +0 -0
  581. data/spec/support/Tools/PartCover-v2.3/app.ico +0 -0
  582. data/spec/support/Tools/PartCover-v2.3/log4net.dll +0 -0
  583. data/spec/support/Tools/PartCover-v2.3/xslt/Report By Assembly.xslt +0 -54
  584. data/spec/support/Tools/PartCover-v2.3/xslt/Report By Class.xslt +0 -52
  585. data/spec/support/Tools/SpecFlow/Antlr3.Runtime.dll +0 -0
  586. data/spec/support/Tools/SpecFlow/Interop.SHDocVw.dll +0 -0
  587. data/spec/support/Tools/SpecFlow/TechTalk.SpecFlow.Generator.dll +0 -0
  588. data/spec/support/Tools/SpecFlow/TechTalk.SpecFlow.Parser.dll +0 -0
  589. data/spec/support/Tools/SpecFlow/TechTalk.SpecFlow.Reporting.dll +0 -0
  590. data/spec/support/Tools/SpecFlow/TechTalk.SpecFlow.VsIntegration.dll +0 -0
  591. data/spec/support/Tools/SpecFlow/TechTalk.SpecFlow.dll +0 -0
  592. data/spec/support/Tools/SpecFlow/TechTalk.SpecFlow.targets +0 -58
  593. data/spec/support/Tools/SpecFlow/TechTalk.SpecFlow.tasks +0 -17
  594. data/spec/support/Tools/SpecFlow/changelog.txt +0 -50
  595. data/spec/support/Tools/SpecFlow/specflow.exe +0 -0
  596. data/spec/support/Tools/XUnit-v1.9/EULA.txt +0 -29
  597. data/spec/support/Tools/XUnit-v1.9/HTML.xslt +0 -126
  598. data/spec/support/Tools/XUnit-v1.9/NUnitXml.xslt +0 -121
  599. data/spec/support/Tools/XUnit-v1.9/xunit.console.clr4.exe +0 -0
  600. data/spec/support/Tools/XUnit-v1.9/xunit.console.clr4.exe.config +0 -21
  601. data/spec/support/Tools/XUnit-v1.9/xunit.console.clr4.x86.exe +0 -0
  602. data/spec/support/Tools/XUnit-v1.9/xunit.console.clr4.x86.exe.config +0 -21
  603. data/spec/support/Tools/XUnit-v1.9/xunit.console.exe +0 -0
  604. data/spec/support/Tools/XUnit-v1.9/xunit.console.exe.config +0 -21
  605. data/spec/support/Tools/XUnit-v1.9/xunit.console.x86.exe +0 -0
  606. data/spec/support/Tools/XUnit-v1.9/xunit.console.x86.exe.config +0 -21
  607. data/spec/support/Tools/XUnit-v1.9/xunit.dll +0 -0
  608. data/spec/support/Tools/XUnit-v1.9/xunit.dll.tdnet +0 -5
  609. data/spec/support/Tools/XUnit-v1.9/xunit.extensions.dll +0 -0
  610. data/spec/support/Tools/XUnit-v1.9/xunit.extensions.xml +0 -805
  611. data/spec/support/Tools/XUnit-v1.9/xunit.gui.clr4.exe +0 -0
  612. data/spec/support/Tools/XUnit-v1.9/xunit.gui.clr4.x86.exe +0 -0
  613. data/spec/support/Tools/XUnit-v1.9/xunit.gui.exe +0 -0
  614. data/spec/support/Tools/XUnit-v1.9/xunit.gui.x86.exe +0 -0
  615. data/spec/support/Tools/XUnit-v1.9/xunit.installer.exe +0 -0
  616. data/spec/support/Tools/XUnit-v1.9/xunit.runner.msbuild.dll +0 -0
  617. data/spec/support/Tools/XUnit-v1.9/xunit.runner.tdnet.dll +0 -0
  618. data/spec/support/Tools/XUnit-v1.9/xunit.runner.utility.dll +0 -0
  619. data/spec/support/Tools/XUnit-v1.9/xunit.runner.utility.xml +0 -1212
  620. data/spec/support/Tools/XUnit-v1.9/xunit.xml +0 -2604
  621. data/spec/support/assemblyinfotester.rb +0 -52
  622. data/spec/support/csc/File1.cs +0 -9
  623. data/spec/support/csc/File2.cs +0 -9
  624. data/spec/support/csc/output/ignorethis.txt +0 -1
  625. data/spec/support/ironruby_validator.rb +0 -26
  626. data/spec/support/msbuildtestdata.rb +0 -32
  627. data/spec/support/nanttestdata.rb +0 -33
  628. data/spec/support/ncoverconsoletestdata.rb +0 -20
  629. data/spec/support/ncoverreporttestdata.rb +0 -26
  630. data/spec/support/nokogiri_validator.rb +0 -15
  631. data/spec/support/nuspec/nuspec.xsd +0 -84
  632. data/spec/support/outputtestdata.rb +0 -13
  633. data/spec/support/test.yml +0 -4
  634. data/spec/support/yamlconfig/msbuild.yml +0 -5
  635. data/spec/support/yamlconfig/yaml_autoconfig_test.yml +0 -1
  636. data/spec/support/zip/files/subfolder/sub file.txt +0 -1
  637. data/spec/support/zip/files/testfile.txt +0 -1
  638. data/spec/support/ziptestdata.rb +0 -13
  639. data/spec/unzip_spec.rb +0 -15
  640. data/spec/xbuild_spec.rb +0 -15
  641. data/spec/xunit_spec.rb +0 -200
  642. data/spec/yamlconfig_spec.rb +0 -49
  643. data/spec/zip_spec.rb +0 -160
@@ -1,5 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <TestRunConfiguration name="Local Test Run" id="e3671143-2726-48d4-a12e-73c211aea02d" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010">
3
- <Description>This is a default test run configuration for a local test run.</Description>
4
- <TestTypeSpecific />
5
- </TestRunConfiguration>
@@ -1,315 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8" standalone="yes"?>
2
- <NDepend AppName="TestProject" Platform="DotNet">
3
- <OutputDir KeepHistoric="True" KeepXmlFiles="True" ViewReport="True">.\NDependOut</OutputDir>
4
- <Assemblies>
5
- <Name>TestSolution</Name>
6
- <Name>TestSolution.Tests</Name>
7
- <Name>TestSolution.FailingTests</Name>
8
- <Name>TestSolution.MSpecTests</Name>
9
- <Name>TestSolution.XUnitTests</Name>
10
- </Assemblies>
11
- <FrameworkAssemblies>
12
- <Name>mscorlib</Name>
13
- <Name>nunit.framework</Name>
14
- <Name>Machine.Specifications</Name>
15
- <Name>Machine.Specifications.NUnit</Name>
16
- <Name>xunit</Name>
17
- </FrameworkAssemblies>
18
- <Dirs>
19
- <Dir>C:\Windows\Microsoft.NET\Framework\v2.0.50727</Dir>
20
- <Dir>C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0</Dir>
21
- <Dir>C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5</Dir>
22
- <Dir>.\TestSolution\bin\Debug</Dir>
23
- <Dir>.\TestSolution.Tests\bin\Debug</Dir>
24
- <Dir>.\TestSolution.FailingTests\bin\Debug</Dir>
25
- <Dir>.\TestSolution.MSpecTests\bin\Debug</Dir>
26
- <Dir>.\TestSolution.XUnitTests\bin\Debug</Dir>
27
- </Dirs>
28
- <Report XslPath="">
29
- <Section Enabled="True">Application Metrics</Section>
30
- <Section Enabled="True">Assemblies Metrics</Section>
31
- <Section Enabled="True">VisualNDepend View</Section>
32
- <Section Enabled="True">Assemblies Abstractness vs. Instability</Section>
33
- <Section Enabled="True">Assemblies Dependencies</Section>
34
- <Section Enabled="True">Assemblies Dependencies Diagram</Section>
35
- <Section Enabled="True">Assemblies build order</Section>
36
- <Section Enabled="True">NDepend information and warnings</Section>
37
- <Section Enabled="True">CQL Queries and Constraints</Section>
38
- <Section Enabled="True">Types Metrics</Section>
39
- <Section Enabled="False">Types Dependencies</Section>
40
- </Report>
41
- <BuildComparisonSetting ProjectMode="DontCompare" BuildMode="MostRecentBuildAvailable" ProjectFileToCompareWith="" BuildFileToCompareWith="" NDaysAgo="1" />
42
- <CoverageFiles UncoverableAttribute="" />
43
- <SourceFileRebasing FromPath="" ToPath="" /><CQLQueries>
44
- <CQLGroup Name="Code Quality" Active="True">
45
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Quick summary of methods to refactor&lt;/Name&gt;\r\n\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 METHODS /*OUT OF "YourGeneratedCode" */ WHERE \r\n\r\n // Metrics' definitions\r\n ( NbLinesOfCode &gt; 30 OR // http://www.ndepend.com/Metrics.aspx#NbLinesOfCode\r\n NbILInstructions &gt; 200 OR // http://www.ndepend.com/Metrics.aspx#NbILInstructions\r\n CyclomaticComplexity &gt; 20 OR // http://www.ndepend.com/Metrics.aspx#CC\r\n ILCyclomaticComplexity &gt; 50 OR // http://www.ndepend.com/Metrics.aspx#ILCC\r\n ILNestingDepth &gt; 4 OR // http://www.ndepend.com/Metrics.aspx#ILNestingDepth\r\n NbParameters &gt; 5 OR // http://www.ndepend.com/Metrics.aspx#NbParameters\r\n NbVariables &gt; 8 OR // http://www.ndepend.com/Metrics.aspx#NbVariables\r\n NbOverloads &gt; 6 ) // http://www.ndepend.com/Metrics.aspx#NbOverloads\r\n AND \r\n\r\n // Here are some ways to avoid taking account of generated methods.\r\n !( NameIs "InitializeComponent()" OR\r\n // NDepend.CQL.GeneratedAttribute is defined in the redistributable assembly $NDependInstallDir$\Lib\NDepend.CQL.dll\r\n // You can define your own attribute to mark "Generated".\r\n HasAttribute "OPTIONAL:NDepend.CQL.GeneratedAttribute") </CQLQuery>
46
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Methods too big (NbLinesOfCode)&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 METHODS WHERE NbLinesOfCode &gt; 30 ORDER BY NbLinesOfCode DESC\r\n// METHODS WHERE NbLinesOfCode &gt; 30 are extremely complex and \r\n// should be split in smaller methods \r\n// (except if they are automatically generated by a tool).\r\n// See the definition of the NbLinesOfCode metric here http://www.ndepend.com/Metrics.aspx#NbLinesOfCode</CQLQuery>
47
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Methods too big (NbILInstructions)&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 METHODS WHERE NbILInstructions &gt; 200 ORDER BY NbILInstructions DESC\r\n// METHODS WHERE NbILInstructions &gt; 200 are extremely complex and \r\n// should be split in smaller methods \r\n// (except if they are automatically generated by a tool).\r\n// See the definition of the NbILInstructions metric here http://www.ndepend.com/Metrics.aspx#NbILInstructions</CQLQuery>
48
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Methods too complex (CyclomaticComplexity)&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 METHODS WHERE CyclomaticComplexity &gt; 20 ORDER BY CyclomaticComplexity DESC\r\n// METHODS WHERE CyclomaticComplexity &gt; 15 are hard to understand and maintain.\r\n// METHODS WHERE CyclomaticComplexity &gt; 30 are extremely complex and should be split \r\n// in smaller methods (except if they are automatically generated by a tool).\r\n// See the definition of the CyclomaticComplexity metric here http://www.ndepend.com/Metrics.aspx#CC</CQLQuery>
49
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Methods too complex (ILCyclomaticComplexity)&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 METHODS WHERE ILCyclomaticComplexity &gt; 40 ORDER BY ILCyclomaticComplexity DESC\r\n// METHODS WHERE ILCyclomaticComplexity &gt; 20 are hard to understand and maintain.\r\n// METHODS WHERE ILCyclomaticComplexity &gt; 40 are extremely complex and should be split \r\n// in smaller methods (except if they are automatically generated by a tool).\r\n// See the definition of the ILCyclomaticComplexity metric here http://www.ndepend.com/Metrics.aspx#ILCC</CQLQuery>
50
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Methods too complex (ILNestingDepth)&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 METHODS WHERE ILNestingDepth &gt; 4 ORDER BY ILNestingDepth DESC\r\n// METHODS WHERE ILNestingDepth &gt; 4 are hard to understand and maintain. \r\n// METHODS WHERE ILNestingDepth &gt; 8 is higher than 8 are extremely complex and should be split in smaller methods \r\n// (except if they are automatically generated by a tool). \r\n// See the definition of the NbILInstructions metric here http://www.NDepend.com/Metrics.aspx#ILNestingDepth</CQLQuery>
51
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Methods poorly commented (PercentageComment)&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 METHODS WHERE PercentageComment &lt; 20 AND NbLinesOfCode &gt; 10 ORDER BY PercentageComment ASC\r\n// METHODS WHERE %Comment &lt; 20 and that have at least 10 lines of code should be more commented.\r\n// See the definition of the PercentageComment metric here http://www.ndepend.com/Metrics.aspx#PercentageComment</CQLQuery>
52
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Methods with too many parameters (NbParameters)&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 METHODS WHERE NbParameters &gt; 5 ORDER BY NbParameters DESC\r\n// METHODS WHERE NbParameters &gt; 5 might be painful to call and might degrade performance. \r\n// You should prefer using additional properties/fields to the declaring type to handle \r\n// numerous states. Another alternative is to provide a class or structure dedicated to \r\n// handle arguments passing (for example see the class System.Diagnostics.ProcessStartInfo \r\n// and the method System.Diagnostics.Process.Start(ProcessStartInfo))\r\n// See the definition of the NbParameters metric here http://www.ndepend.com/Metrics.aspx#NbParameters</CQLQuery>
53
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Methods with too many local variables (NbVariables)&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 METHODS WHERE NbVariables &gt; 15 ORDER BY NbVariables DESC\r\n// METHODS WHERE NbVariables &gt; 8 are hard to understand and maintain.\r\n// METHODS WHERE NbVariables &gt; 15 are extremely complex and should be split in \r\n// smaller methods (except if they are automatically generated by a tool).\r\n// See the definition of the Nbvariables metric here http://www.ndepend.com/Metrics.aspx#Nbvariables</CQLQuery>
54
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Methods with too many overloads (NbOverloads)&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 METHODS WHERE NbOverloads &gt; 6 ORDER BY NbOverloads DESC\r\n// METHODS WHERE NbParameters &gt; 6 might be a problem to maintain and provoke higher coupling than necessary. \r\n// This might also reveal a potential misused of the C# and VB.NET language that since C#3 and VB9 support \r\n// object initialization. This feature helps reducing the number of constructors of a class.\r\n// See the definition of the NbOverloads metric here http://www.ndepend.com/Metrics.aspx#NbOverloads</CQLQuery>
55
- <CQLGroup Name="Type Metrics" Active="True">
56
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Types with too many methods&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 TYPES WHERE NbMethods &gt; 20 ORDER BY NbMethods DESC\r\n// TYPES WHERE NbMethods &gt; 20 might be hard to understand and maintain \r\n// but there might be cases where it is relevant to have a high value for NbMethods. \r\n// For example, the System.Windows.Forms.DataGridView standard class has more than 1000 methods.\r\n// See the definition of the NbMethods metric here http://www.ndepend.com/Metrics.aspx#NbMethods</CQLQuery>
57
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Types with too many fields&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 TYPES WHERE NbFields &gt; 20 AND !IsEnumeration ORDER BY NbFields DESC\r\n// TYPES WHERE NbFields &gt; 20 AND !IsEnumeration might be hard to understand and maintain \r\n// but there might be cases where it is relevant to have a high value for NbFields. \r\n// For example, the System.Windows.Forms.Control standard class has more than 200 fields. \r\n// The value of the metric NbFields might be a better indicator of complex type.\r\n// See the definition of the NbFields metric here http://www.ndepend.com/Metrics.aspx#NbFields</CQLQuery>
58
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Types with poor cohesion (LCOM)&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 TYPES WHERE LCOM &gt; 0.8 AND NbFields &gt; 10 AND NbMethods &gt;10 ORDER BY LCOM DESC\r\n// TYPES WHERE LCOM &gt; 0.8 AND NbFields &gt; 10 AND NbMethods &gt;10 might be problematic. \r\n// However, it is very hard to avoid such non-cohesive types. The LCOMHS metric\r\n// is often considered as more efficient to detect non-cohesive types.\r\n// See the definition of the LCOM metric here http://www.ndepend.com/Metrics.aspx#LCOM</CQLQuery>
59
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Types with poor cohesion (LCOMHS)&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 TYPES WHERE LCOMHS &gt; 0.95 AND NbFields &gt; 10 AND NbMethods &gt;10 ORDER BY LCOMHS DESC\r\n// TYPES WHERE LCOMHS &gt; 1.0 AND NbFields &gt; 10 AND NbMethods &gt;10 should be avoided. \r\n// Note that this constraint is stronger than the constraint \r\n// TYPES WHERE LCOM &gt; 0.8 AND NbFields &gt; 10 AND NbMethods &gt;10. \r\n// See the definition of the LCOMHS metric here http://www.ndepend.com/Metrics.aspx#LCOMHS</CQLQuery>
60
- </CQLGroup>
61
- </CQLGroup>
62
- <CQLGroup Name="Design" Active="True">
63
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Assembly should not contain namespaces dependency cycles&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 ASSEMBLIES WHERE ContainsNamespaceDependencyCycle\r\n// Dependency cycles between namespaces must be avoided \r\n// in order to have a levelized and comprehensive design.\r\n// More info available on the screencast 'Reduce the complexity' http://s3.amazonaws.com/NDependOnlineDemos/NDependReducingComplexity_viewlet_swf.html\r\n// You can also read this article http://www.theserverside.net/tt/articles/showarticle.tss?id=ControllingDependencies</CQLQuery>
64
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Type should not have too many responsabilities (Efferent Coupling)&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 TYPES WHERE TypeCe &gt; 50 ORDER BY TypeCe DESC \r\n// The Efferent Coupling (TypeCe) for a particular type is the number of types \r\n// it directly depends on. Notice that types declared in tier assemblies are taken into account. \r\n\r\n// Types that depends on too many others type (more than 50) are complex and have\r\n// more than one responsability. They are good candidate for refactoring.\r\n\r\n// More information available in this article:\r\n// http://codebetter.com/blogs/patricksmacchia/archive/2008/02/15/code-metrics-on-coupling-dead-code-design-flaws-and-re-engineering.aspx\r\n\r\n</CQLQuery>
65
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;A stateless type might be turned into a static type&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 TYPES WHERE \r\n SizeOfInst ==0 AND \r\n NbInterfacesImplemented == 0 AND // To be accurate, this constraint doesn't take \r\n // account of types that implement some interfaces.\r\n !IsStatic AND \r\n !IsGeneric AND \r\n !IsInterface \r\n// It indicates stateless types that might eventually be turned into static classes.\r\n// See the definition of the SizeOfInst metric here http://www.ndepend.com/Metrics.aspx#SizeOfInst</CQLQuery>
66
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Class shouldn't be too deep in inheritance tree &lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 TYPES WHERE DepthOfInheritance &gt;= 6 ORDER BY DepthOfInheritance DESC \r\n// Branches too long in the derivation should be avoided.\r\n// See the definition of the DepthOfInheritance metric here http://www.ndepend.com/Metrics.aspx#DIT\r\n \r\n// You can discard specific classes with by-design high DepthOfInheritance with such condition for example:\r\n// AND !DeriveFrom "System.Windows.Forms.Form" </CQLQuery>
67
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Class with no descendant should be sealed if possible&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 TYPES WHERE \r\n IsClass AND \r\n NbChildren ==0 AND \r\n !IsSealed AND \r\n !IsStatic \r\n // AND !IsPublic : You might want to add this condition if you are developping a framework\r\n // with classes that are intended to be sub-classed by your clients.\r\n ORDER BY NbLinesOfCode</CQLQuery>
68
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Classes that are candidate to be turned into Structures&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 TYPES WHERE \r\n IsClass AND\r\n SizeOfInst &lt;= 16 AND // Structure instance must not be too big, else it degrades performance.\r\n NbChildren == 0 AND // Must not have children\r\n DepthOfInheritance == 1 // Must derive directly from System.Object\r\n // AND IsSealed : You might want to add this condition to restreint the set.\r\n // AND IsImmutable : Structures should be immutable type.\r\n // AND !IsPublic : You might want to add this condition if you are developping a framework\r\n // with classes that are intended to be sub-classed by your clients.\r\n</CQLQuery>
69
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Avoid namespaces with few types&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 NAMESPACES WHERE NbTypes &lt; 5 ORDER BY NbTypes ASC \r\n\r\n// Make sure that there is a logical organization to each of your namespaces, \r\n// and that there is a valid reason for putting types in a sparsely populated \r\n// namespace. Namespaces should contain types that are used together in most \r\n// scenarios. When their applications are mutually exclusive, types should be \r\n// located in separate namespaces</CQLQuery>
70
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Nested types should not be visible&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 TYPES WHERE IsNested AND !IsPrivate AND !IsInFrameworkAssembly \r\n\r\n// A nested type is a type declared within the scope of another type. \r\n// Nested types are useful for encapsulating private implementation details of the containing type. \r\n// Used for this purpose, nested types should not be externally visible. Do not use externally \r\n// visible nested types for logical grouping or to avoid name collisions; instead, use namespaces.</CQLQuery>
71
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Avoid empty interfaces&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 TYPES WHERE IsInterface AND NbMethods == 0\r\n\r\n// Interfaces define members that provide a behavior or usage contract. The functionality described by \r\n// the interface can be adopted by any type, regardless of where the type appears in the inheritance\r\n// hierarchy. A type implements an interface by providing implementations for the interface's members.\r\n// An empty interface does not define any members, and as such, does not define a contract that can be implemented.\r\n\r\n// If your design includes empty interfaces that types are expected to implement, you are probably using\r\n// an interface as a marker, or a way of identifying a group of types. If this identification will occur \r\n// at runtime, the correct way to accomplish this is to use a custom attribute. Use the presence or absence \r\n// of the attribute, or the attribute's properties, to identify the target types. If the identification must\r\n// occur at compile time, then using an empty interface is acceptable.</CQLQuery>
72
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Declare types in namespaces&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT NAMESPACES WHERE NameIs "" AND !IsInFrameworkAssembly \r\n\r\n// Types are declared within namespaces to prevent name collisions, and as a way of organizing related types \r\n// in an object hierarchy. Types outside any named namespace are in a global namespace that cannot be referenced in code.\r\n// If an anonymous namespace can be found, it means that it contains types outside of namespaces.</CQLQuery>
73
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Empty static constructor can be discarded&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT METHODS WHERE IsClassConstructor AND NbLinesOfCode == 0</CQLQuery>
74
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Assemblies with poor cohesion (RelationalCohesion)&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 ASSEMBLIES WHERE RelationalCohesion &lt; 1.5 OR RelationalCohesion &gt; 4.0\r\n\r\n// As classes inside an assembly should be strongly related, \r\n// the cohesion should be high. On the other hand, a value which is too high may \r\n// indicate over-coupling. A good range for RelationalCohesion is 1.5 to 4.0.\r\n// See the definition of the RelationalCohesion metric here http://www.ndepend.com/Metrics.aspx#RelationalCohesion</CQLQuery>
75
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Assemblies that don't satisfy the Abstractness/Instability principle&lt;/Name&gt;\r\n\r\nWARN IF Percentage &gt; 15 IN SELECT ASSEMBLIES WHERE NormDistFromMainSeq &gt; 0.7 ORDER BY NormDistFromMainSeq DESC\r\n\r\n// See the definition of the NormDistFromMainSeq metric here http://www.ndepend.com/Metrics.aspx#DitFromMainSeq</CQLQuery>
76
- <CQLGroup Name="Performance" Active="True">
77
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Instances size shouldn't be too big (SizeOfInst)&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 TYPES WHERE SizeOfInst &gt; 64 ORDER BY SizeOfInst DESC\r\n// TYPES WHERE SizeOfInst &gt; 64 might degrade performance (depending on the number of \r\n// instances created at runtime) and might be hard to maintain. \r\n// However it is not a rule since sometime there is no alternative \r\n// (the size of instances of the System.Net.NetworkInformation.SystemIcmpV6Statistics \r\n// standard class is 2064 bytes).\r\n// See the definition of the SizeOfInst metric here http://www.ndepend.com/Metrics.aspx#SizeOfInst</CQLQuery>
78
- <CQLQuery Active="True" DisplayList="False" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Boxing/unboxing should be avoided (Method)&lt;/Name&gt;\r\nWARN IF Percentage &gt; 5 IN SELECT METHODS WHERE IsUsingBoxing OR IsUsingUnboxing \r\n// Thanks to generics, boxing and unboxing should be rare.</CQLQuery>
79
- <CQLQuery Active="True" DisplayList="False" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Boxing/unboxing should be avoided (Type)&lt;/Name&gt;\r\nWARN IF Percentage &gt; 5 IN SELECT TYPES WHERE IsUsingBoxing OR IsUsingUnboxing \r\n// Thanks to generics, boxing and unboxing should be rare.</CQLQuery>
80
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Attribute classes should be sealed&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TYPES WHERE IsAttributeClass \r\nAND !IsSealed AND !IsAbstract AND IsPublic AND !IsInFrameworkAssembly \r\n\r\n// The .NET Framework class library provides methods for retrieving custom attributes. \r\n// By default, these methods search the attribute inheritance hierarchy; for example \r\n// System.Attribute.GetCustomAttribute searches for the specified attribute type, or \r\n// any attribute type that extends the specified attribute type. Sealing the attribute \r\n// eliminates the search through the inheritance hierarchy, and can improve performance.</CQLQuery>
81
- </CQLGroup>
82
- </CQLGroup>
83
- <CQLGroup Name="Unused Code / Dead Code" Active="True">
84
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Potentially unused methods&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 METHODS WHERE \r\n MethodCa == 0 AND // Ca=0 -&gt; No Afferent Coupling -&gt; The method is not used in the context of this application.\r\n !IsPublic AND // Public methods might be used by client applications of your assemblies.\r\n !IsEntryPoint AND // Main() method is not used by-design.\r\n !IsExplicitInterfaceImpl AND // The IL code never explicitely calls explicit interface methods implementation.\r\n !IsClassConstructor AND // The IL code never explicitely calls class constructors.\r\n !IsFinalizer // The IL code never explicitely calls finalizers.\r\n</CQLQuery>
85
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Potentially unused fields&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 FIELDS WHERE \r\n FieldCa == 0 AND // Ca=0 -&gt; No Afferent Coupling -&gt; The field is not used in the context of this application.\r\n !IsPublic AND // Although not recommended, public fields might be used by client applications of your assemblies.\r\n !IsLiteral AND // The IL code never explicitely uses literal fields.\r\n !IsEnumValue AND // The IL code never explicitely uses enumeration value.\r\n !NameIs "value__" // Field named 'value__' are relative to enumerations and the IL code never explicitely uses them.</CQLQuery>
86
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Potentially unused types&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 TYPES WHERE \r\n TypeCa == 0 AND // Ca=0 -&gt; No Afferent Coupling -&gt; The type is not used in the context of this application.\r\n !IsPublic AND // Public types might be used by client applications of your assemblies.\r\n !NameIs "Program" // Generally, types named Program contain a Main() entry-point method and this condition avoid to consider such type as unused code.\r\n</CQLQuery>
87
- </CQLGroup>
88
- <CQLGroup Name="Encapsulation" Active="True">
89
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Fields should be declared as private&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 FIELDS WHERE \r\n !IsPrivate AND \r\n // These conditions filter cases where fields doesn't represent state that should be encapsulated. \r\n !IsInFrameworkAssembly AND \r\n !IsGeneratedByCompiler AND \r\n !IsSpecialName AND \r\n !IsInitOnly AND \r\n !IsLiteral AND \r\n !IsEnumValue</CQLQuery>
90
- <CQLGroup Name="Methods Optimal Encapsulation" Active="True">
91
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Methods that could be declared as 'internal' in C#, 'Friend' in VB.NET&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 METHODS WHERE CouldBeInternal</CQLQuery>
92
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Methods that could be declared as 'protected internal' in C#, 'Protected Friend' in VB.NET&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 METHODS WHERE CouldBeInternalProtected</CQLQuery>
93
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Methods that could be declared as 'protected' in C#, 'Protected' in VB.NET&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 METHODS WHERE CouldBeProtected</CQLQuery>
94
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Methods that could be declared as 'private' in C#, 'Private' in VB.NET&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 METHODS WHERE CouldBePrivate</CQLQuery>
95
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Methods that should be declared as 'public' in C#, 'Public' in VB.NET&lt;/Name&gt;\r\nSELECT METHODS WHERE ShouldBePublic \r\n// The keyword 'ShouldBePublic' shows code elements declared as 'internal\Friend' that are used outside of their assembly\r\n// thanks to the Attribute System.Runtime.CompilerServices.InternalsVisibleTo</CQLQuery>
96
- </CQLGroup>
97
- <CQLGroup Name="Types Optimal Encapsulation" Active="True">
98
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Types that could be declared as internal&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 TYPES WHERE CouldBeInternal</CQLQuery>
99
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Types that could be declared as 'protected internal' in C#, 'Protected Friend' in VB.NET&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 TYPES WHERE CouldBeInternalProtected</CQLQuery>
100
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Types that could be declared as 'protected' in C#, 'Protected' in VB.NET&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 TYPES WHERE CouldBeProtected</CQLQuery>
101
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Types that could be declared as 'private' in C#, 'Private' in VB.NET&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 TYPES WHERE CouldBePrivate</CQLQuery>
102
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Types that should be declared as 'public' in C#, 'Public' in VB.NET&lt;/Name&gt;\r\nSELECT TYPES WHERE ShouldBePublic \r\n// The keyword 'ShouldBePublic' shows code elements declared as 'internal\Friend' that are used outside of their assembly\r\n// thanks to the Attribute System.Runtime.CompilerServices.InternalsVisibleTo</CQLQuery>
103
- </CQLGroup>
104
- <CQLGroup Name="Fields Optimal Encapsulation" Active="True">
105
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Fields that could be declared as internal&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 FIELDS WHERE CouldBeInternal</CQLQuery>
106
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Fields that could be declared as 'protected internal' in C#, 'Protected Friend' in VB.NET&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 FIELDS WHERE CouldBeInternalProtected</CQLQuery>
107
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Fields that could be declared as 'protected' in C#, 'Protected' in VB.NET&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 FIELDS WHERE CouldBeProtected</CQLQuery>
108
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Fields that could be declared as 'private' in C#, 'Private' in VB.NET&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 FIELDS WHERE CouldBePrivate</CQLQuery>
109
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Fields that should be declared as 'public' in C#, 'Public' in VB.NET&lt;/Name&gt;\r\nSELECT FIELDS WHERE ShouldBePublic \r\n// The keyword 'ShouldBePublic' shows code elements declared as 'internal\Friend' that are used outside of their assembly\r\n// thanks to the Attribute System.Runtime.CompilerServices.InternalsVisibleTo</CQLQuery>
110
- </CQLGroup>
111
- </CQLGroup>
112
- <CQLGroup Name="Diff / Changes / Evolution" Active="True">
113
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;API Breaking Changes: Methods&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 METHODS\r\nWHERE IsPublic AND (VisibilityWasChanged OR WasRemoved)\r\n\r\n// This constraint warns if a public method is not public anymore or if it has been removed.\r\n// This can break the code of your clients.\r\n// More information on breaking changes here: \r\n// http://codebetter.com/blogs/patricksmacchia/archive/2008/01/20/avoid-api-breaking-changes.aspx\r\n\r\n// To run this constraint properly 2 analysis must be compared.\r\n// This can be done in VisualNDepend throught the menu: Start Page -&gt; Compare 2 versions of a code base\r\n// This can be done at analysis time throught the menu: Project Properties -&gt; Analysis -&gt; Analysis Comparison\r\n\r\n</CQLQuery>
114
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;API Breaking Changes: Types&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 TYPES\r\nWHERE IsPublic AND (VisibilityWasChanged OR WasRemoved)\r\n\r\n// This constraint warns if a public type is not public anymore or if it has been removed.\r\n// This can break the code of your clients.\r\n// More information on breaking changes here: \r\n// http://codebetter.com/blogs/patricksmacchia/archive/2008/01/20/avoid-api-breaking-changes.aspx\r\n\r\n// To run this constraint properly 2 analysis must be compared.\r\n// This can be done in VisualNDepend throught the menu: Start Page -&gt; Compare 2 versions of a code base\r\n// This can be done at analysis time throught the menu: Project Properties -&gt; Analysis -&gt; Analysis Comparison\r\n\r\n\r\n</CQLQuery>
115
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;API Breaking Changes: Interfaces&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 TYPES\r\nWHERE IsInterface AND IsPublic AND (WasChanged AND !CommentsWereChanged)\r\n\r\n// This constraint warns if a public interface has been changed, but not because of comment change.\r\n// This can break the code of your clients that implements such interface.\r\n// More information on breaking changes here: \r\n// http://codebetter.com/blogs/patricksmacchia/archive/2008/01/20/avoid-api-breaking-changes.aspx\r\n\r\n// To run this constraint properly 2 analysis must be compared.\r\n// This can be done in VisualNDepend throught the menu: Start Page -&gt; Compare 2 versions of a code base\r\n// This can be done at analysis time throught the menu: Project Properties -&gt; Analysis -&gt; Analysis Comparison</CQLQuery>
116
- <CQLGroup Name="Changes Summary" Active="False">
117
- <CQLGroup Name="Methods" Active="False">
118
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Methods added&lt;/Name&gt;\r\nSELECT METHODS WHERE WasAdded\r\n\r\n// To run this query properly 2 analysis must be compared.\r\n// This can be done in throught the menu: Start Page -&gt; Compare 2 versions of a code base</CQLQuery>
119
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Methods removed&lt;/Name&gt;\r\nSELECT METHODS WHERE WasRemoved \r\n\r\n// To run this query properly 2 analysis must be compared.\r\n// This can be done in throught the menu: Start Page -&gt; Compare 2 versions of a code base</CQLQuery>
120
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Methods where code was changed&lt;/Name&gt;\r\nSELECT METHODS WHERE CodeWasChanged \r\n\r\n// To run this query properly 2 analysis must be compared.\r\n// This can be done in throught the menu: Start Page -&gt; Compare 2 versions of a code base</CQLQuery>
121
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Methods where comments were changed&lt;/Name&gt;\r\nSELECT METHODS WHERE CommentsWereChanged \r\n\r\n// To run this query properly 2 analysis must be compared.\r\n// This can be done in throught the menu: Start Page -&gt; Compare 2 versions of a code base</CQLQuery>
122
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Methods where visibility was changed&lt;/Name&gt;\r\nSELECT METHODS WHERE VisibilityWasChanged \r\n\r\n// To run this query properly 2 analysis must be compared.\r\n// This can be done in throught the menu: Start Page -&gt; Compare 2 versions of a code base</CQLQuery>
123
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Methods that became obsolete&lt;/Name&gt;\r\nSELECT METHODS WHERE BecameObsolete \r\n\r\n// To run this query properly 2 analysis must be compared.\r\n// This can be done in throught the menu: Start Page -&gt; Compare 2 versions of a code base</CQLQuery>
124
- </CQLGroup>
125
- <CQLGroup Name="Fields" Active="False">
126
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Fields added&lt;/Name&gt;\r\nSELECT FIELDS WHERE WasAdded\r\n\r\n// To run this query properly 2 analysis must be compared.\r\n// This can be done in throught the menu: Start Page -&gt; Compare 2 versions of a code base</CQLQuery>
127
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Fields removed&lt;/Name&gt;\r\nSELECT FIELDS WHERE WasRemoved \r\n\r\n// To run this query properly 2 analysis must be compared.\r\n// This can be done in throught the menu: Start Page -&gt; Compare 2 versions of a code base</CQLQuery>
128
- </CQLGroup>
129
- <CQLGroup Name="Types" Active="False">
130
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Types added&lt;/Name&gt;\r\nSELECT TYPES WHERE WasAdded\r\n\r\n// To run this query properly 2 analysis must be compared.\r\n// This can be done in throught the menu: Start Page -&gt; Compare 2 versions of a code base</CQLQuery>
131
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Types removed&lt;/Name&gt;\r\nSELECT TYPES WHERE WasRemoved \r\n\r\n// To run this query properly 2 analysis must be compared.\r\n// This can be done in throught the menu: Start Page -&gt; Compare 2 versions of a code base</CQLQuery>
132
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Types where code was changed&lt;/Name&gt;\r\nSELECT TYPES WHERE CodeWasChanged \r\n\r\n// To run this query properly 2 analysis must be compared.\r\n// This can be done in throught the menu: Start Page -&gt; Compare 2 versions of a code base</CQLQuery>
133
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Types where comments were changed&lt;/Name&gt;\r\nSELECT TYPES WHERE CommentsWereChanged \r\n\r\n// To run this query properly 2 analysis must be compared.\r\n// This can be done in throught the menu: Start Page -&gt; Compare 2 versions of a code base</CQLQuery>
134
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Types where visibility was changed&lt;/Name&gt;\r\nSELECT TYPES WHERE VisibilityWasChanged \r\n\r\n// To run this query properly 2 analysis must be compared.\r\n// This can be done in throught the menu: Start Page -&gt; Compare 2 versions of a code base</CQLQuery>
135
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Tyoes that became obsolete&lt;/Name&gt;\r\nSELECT TYPES WHERE BecameObsolete \r\n\r\n// To run this query properly 2 analysis must be compared.\r\n// This can be done in throught the menu: Start Page -&gt; Compare 2 versions of a code base</CQLQuery>
136
- </CQLGroup>
137
- <CQLGroup Name="Namespaces" Active="False">
138
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Namespaces added&lt;/Name&gt;\r\nSELECT NAMESPACES WHERE WasAdded\r\n\r\n// To run this query properly 2 analysis must be compared.\r\n// This can be done in throught the menu: Start Page -&gt; Compare 2 versions of a code base</CQLQuery>
139
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Namespaces removed&lt;/Name&gt;\r\nSELECT NAMESPACES WHERE WasRemoved \r\n\r\n// To run this query properly 2 analysis must be compared.\r\n// This can be done in throught the menu: Start Page -&gt; Compare 2 versions of a code base</CQLQuery>
140
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Namespaces where code was changed&lt;/Name&gt;\r\nSELECT NAMESPACES WHERE CodeWasChanged \r\n\r\n// To run this query properly 2 analysis must be compared.\r\n// This can be done in throught the menu: Start Page -&gt; Compare 2 versions of a code base</CQLQuery>
141
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Namespaces where comments were changed&lt;/Name&gt;\r\nSELECT NAMESPACES WHERE CommentsWereChanged \r\n\r\n// To run this query properly 2 analysis must be compared.\r\n// This can be done in throught the menu: Start Page -&gt; Compare 2 versions of a code base</CQLQuery>
142
- </CQLGroup>
143
- <CQLGroup Name="Assemblies" Active="False">
144
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Assemblies added&lt;/Name&gt;\r\nSELECT ASSEMBLIES WHERE WasAdded\r\n\r\n// To run this query properly 2 analysis must be compared.\r\n// This can be done in throught the menu: Start Page -&gt; Compare 2 versions of a code base</CQLQuery>
145
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Assemblies removed&lt;/Name&gt;\r\nSELECT ASSEMBLIES WHERE WasRemoved \r\n\r\n// To run this query properly 2 analysis must be compared.\r\n// This can be done in throught the menu: Start Page -&gt; Compare 2 versions of a code base</CQLQuery>
146
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Assemblies where code was changed&lt;/Name&gt;\r\nSELECT ASSEMBLIES WHERE CodeWasChanged \r\n\r\n// To run this query properly 2 analysis must be compared.\r\n// This can be done in throught the menu: Start Page -&gt; Compare 2 versions of a code base</CQLQuery>
147
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Assemblies where comments were changed&lt;/Name&gt;\r\nSELECT ASSEMBLIES WHERE CommentsWereChanged \r\n\r\n// To run this query properly 2 analysis must be compared.\r\n// This can be done in throught the menu: Start Page -&gt; Compare 2 versions of a code base</CQLQuery>
148
- </CQLGroup>
149
- <CQLGroup Name="Tier Code Usage" Active="False">
150
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Tier Methods that were not used and that are now used&lt;/Name&gt;\r\nSELECT METHODS WHERE IsUsedRecently \r\n\r\n// To run this query properly 2 analysis must be compared.\r\n// This can be done in throught the menu: Start Page -&gt; Compare 2 versions of a code base</CQLQuery>
151
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Tier Methods that were used and that are not used anymore&lt;/Name&gt;\r\nSELECT METHODS WHERE IsNotUsedAnymore \r\n\r\n// To run this query properly 2 analysis must be compared.\r\n// This can be done in throught the menu: Start Page -&gt; Compare 2 versions of a code base</CQLQuery>
152
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Tier Types that were not used and that are now used&lt;/Name&gt;\r\nSELECT TYPES WHERE IsUsedRecently \r\n\r\n// To run this query properly 2 analysis must be compared.\r\n// This can be done in throught the menu: Start Page -&gt; Compare 2 versions of a code base</CQLQuery>
153
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Tier Types that were used and that are not used anymore&lt;/Name&gt;\r\nSELECT TYPES WHERE IsNotUsedAnymore \r\n\r\n// To run this query properly 2 analysis must be compared.\r\n// This can be done in throught the menu: Start Page -&gt; Compare 2 versions of a code base</CQLQuery>
154
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Tier Types where usage changed&lt;/Name&gt;\r\nSELECT TYPES WHERE IsUsedDifferently \r\n\r\n// To run this query properly 2 analysis must be compared.\r\n// This can be done in throught the menu: Start Page -&gt; Compare 2 versions of a code base</CQLQuery>
155
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Tier Namespaces that were not used and that are now used&lt;/Name&gt;\r\nSELECT NAMESPACES WHERE IsUsedRecently \r\n\r\n// To run this query properly 2 analysis must be compared.\r\n// This can be done in throught the menu: Start Page -&gt; Compare 2 versions of a code base</CQLQuery>
156
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Tier Namespaces that were used and that are not used anymore&lt;/Name&gt;\r\nSELECT NAMESPACES WHERE IsNotUsedAnymore \r\n\r\n// To run this query properly 2 analysis must be compared.\r\n// This can be done in throught the menu: Start Page -&gt; Compare 2 versions of a code base</CQLQuery>
157
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Tier Namespaces where usage changed&lt;/Name&gt;\r\nSELECT NAMESPACES WHERE IsUsedDifferently \r\n\r\n// To run this query properly 2 analysis must be compared.\r\n// This can be done in throught the menu: Start Page -&gt; Compare 2 versions of a code base</CQLQuery>
158
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Tier Assemblies that were not used and that are now used&lt;/Name&gt;\r\nSELECT ASSEMBLIES WHERE IsUsedRecently \r\n\r\n// To run this query properly 2 analysis must be compared.\r\n// This can be done in throught the menu: Start Page -&gt; Compare 2 versions of a code base</CQLQuery>
159
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Tier Assemblies that were used and that are not used anymore&lt;/Name&gt;\r\nSELECT ASSEMBLIES WHERE IsNotUsedAnymore \r\n\r\n// To run this query properly 2 analysis must be compared.\r\n// This can be done in throught the menu: Start Page -&gt; Compare 2 versions of a code base</CQLQuery>
160
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Tier Assemblies where usage changed&lt;/Name&gt;\r\nSELECT ASSEMBLIES WHERE IsUsedDifferently \r\n\r\n// To run this query properly 2 analysis must be compared.\r\n// This can be done in throught the menu: Start Page -&gt; Compare 2 versions of a code base</CQLQuery>
161
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Tier Fields that were not used and that are now used&lt;/Name&gt;\r\nSELECT FIELDS WHERE IsUsedRecently \r\n\r\n// To run this query properly 2 analysis must be compared.\r\n// This can be done in throught the menu: Start Page -&gt; Compare 2 versions of a code base</CQLQuery>
162
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Tier Fields that were used and that are not used anymore&lt;/Name&gt;\r\nSELECT FIELDS WHERE IsNotUsedAnymore \r\n\r\n// To run this query properly 2 analysis must be compared.\r\n// This can be done in throught the menu: Start Page -&gt; Compare 2 versions of a code base</CQLQuery>
163
- </CQLGroup>
164
- </CQLGroup>
165
- <CQLGroup Name="Test Coverage of Changes Summary" Active="False">
166
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Method changed 100% covered by tests&lt;/Name&gt;\r\nSELECT METHODS WHERE PercentageCoverage == 100 AND CodeWasChanged ORDER BY NbLinesOfCode DESC \r\n\r\n// To run this constraint properly 2 analysis must be compared.\r\n// This can be done in throught the menu: Start Page -&gt; Compare 2 versions of a code base\r\n\r\n// To run this constraint properly coverage data must be gathered from NCover™ or Visual Studio™ Coverage.\r\n// This can be done in VisualNDepend throught the menu: Coverage -&gt; Import Coverage Files\r\n// This can be done at analysis time throught the menu: Project Properties -&gt; Analysis -&gt; Code Coverage\r\n// More information on how to import coverage data here:\r\n// http://www.ndepend.com/Coverage.aspx</CQLQuery>
167
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Method added 100% covered by tests&lt;/Name&gt;\r\nSELECT METHODS WHERE WasAdded AND PercentageCoverage == 100 ORDER BY NbLinesOfCode DESC \r\n\r\n// To run this constraint properly 2 analysis must be compared.\r\n// This can be done in throught the menu: Start Page -&gt; Compare 2 versions of a code base\r\n\r\n// To run this constraint properly coverage data must be gathered from NCover™ or Visual Studio™ Coverage.\r\n// This can be done in VisualNDepend throught the menu: Coverage -&gt; Import Coverage Files\r\n// This can be done at analysis time throught the menu: Project Properties -&gt; Analysis -&gt; Code Coverage\r\n// More information on how to import coverage data here:\r\n// http://www.ndepend.com/Coverage.aspx</CQLQuery>
168
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Method changed partially covered by tests&lt;/Name&gt;\r\nSELECT METHODS WHERE \r\n PercentageCoverage &lt; 100 AND PercentageCoverage &gt; 0 AND\r\n CodeWasChanged \r\n ORDER BY PercentageCoverage DESC , NbLinesOfCodeCovered , NbLinesOfCodeNotCovered \r\n\r\n// To run this constraint properly 2 analysis must be compared.\r\n// This can be done in throught the menu: Start Page -&gt; Compare 2 versions of a code base\r\n\r\n// To run this constraint properly coverage data must be gathered from NCover™ or Visual Studio™ Coverage.\r\n// This can be done in VisualNDepend throught the menu: Coverage -&gt; Import Coverage Files\r\n// This can be done at analysis time throught the menu: Project Properties -&gt; Analysis -&gt; Code Coverage\r\n// More information on how to import coverage data here:\r\n// http://www.ndepend.com/Coverage.aspx</CQLQuery>
169
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Method added partially covered by tests&lt;/Name&gt;\r\nSELECT METHODS WHERE \r\n PercentageCoverage &lt; 100 AND PercentageCoverage &gt; 0 AND\r\n WasAdded \r\n ORDER BY PercentageCoverage DESC , NbLinesOfCodeCovered , NbLinesOfCodeNotCovered \r\n\r\n// To run this constraint properly 2 analysis must be compared.\r\n// This can be done in throught the menu: Start Page -&gt; Compare 2 versions of a code base\r\n\r\n// To run this constraint properly coverage data must be gathered from NCover™ or Visual Studio™ Coverage.\r\n// This can be done in VisualNDepend throught the menu: Coverage -&gt; Import Coverage Files\r\n// This can be done at analysis time throught the menu: Project Properties -&gt; Analysis -&gt; Code Coverage\r\n// More information on how to import coverage data here:\r\n// http://www.ndepend.com/Coverage.aspx</CQLQuery>
170
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Method changed not covered at all&lt;/Name&gt;\r\nSELECT METHODS WHERE PercentageCoverage == 0 AND CodeWasChanged ORDER BY NbLinesOfCode DESC \r\n\r\n// To run this constraint properly 2 analysis must be compared.\r\n// This can be done in throught the menu: Start Page -&gt; Compare 2 versions of a code base\r\n\r\n// To run this constraint properly coverage data must be gathered from NCover™ or Visual Studio™ Coverage.\r\n// This can be done in VisualNDepend throught the menu: Coverage -&gt; Import Coverage Files\r\n// This can be done at analysis time throught the menu: Project Properties -&gt; Analysis -&gt; Code Coverage\r\n// More information on how to import coverage data here:\r\n// http://www.ndepend.com/Coverage.aspx</CQLQuery>
171
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Method added not covered at all&lt;/Name&gt;\r\nSELECT METHODS WHERE PercentageCoverage == 0 AND WasAdded ORDER BY NbLinesOfCode DESC \r\n\r\n// To run this constraint properly 2 analysis must be compared.\r\n// This can be done in throught the menu: Start Page -&gt; Compare 2 versions of a code base\r\n\r\n// To run this constraint properly coverage data must be gathered from NCover™ or Visual Studio™ Coverage.\r\n// This can be done in VisualNDepend throught the menu: Coverage -&gt; Import Coverage Files\r\n// This can be done at analysis time throught the menu: Project Properties -&gt; Analysis -&gt; Code Coverage\r\n// More information on how to import coverage data here:\r\n// http://www.ndepend.com/Coverage.aspx</CQLQuery>
172
- </CQLGroup>
173
- </CQLGroup>
174
- <CQLGroup Name="Test Coverage" Active="True">
175
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Coverage regression on methods 100% covered by tests&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT METHODS WHERE \r\nHasAttribute "OPTIONAL:NDepend.CQL.FullCoveredAttribute" AND PercentageCoverage &lt; 100\r\n\r\n// NDepend.CQL.FullCoveredAttribute is defined in the redistributable assembly $NDependInstallDir$\Lib\NDepend.CQL.dll\r\n// You can define your own attribute to tag '100% covered' methods.\r\n\r\n// To run this constraint properly coverage data must be gathered from NCover™ or Visual Studio™ Coverage.\r\n// This can be done in VisualNDepend throught the menu: Coverage -&gt; Import Coverage Files\r\n// This can be done at analysis time throught the menu: Project Properties -&gt; Analysis -&gt; Code Coverage\r\n// More information on how to import coverage data here:\r\n// http://www.ndepend.com/Coverage.aspx</CQLQuery>
176
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Coverage regression on methods 100% Branch-covered by tests&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT METHODS WHERE \r\nHasAttribute "OPTIONAL:NDepend.CQL.FullBranchCoveredAttribute" AND PercentageBranchCoverage &lt; 100\r\n\r\n// NDepend.CQL.FullCoveredAttribute is defined in the redistributable assembly $NDependInstallDir$\Lib\NDepend.CQL.dll\r\n// You can define your own attribute to tag '100% branch covered' methods.\r\n\r\n// To run this constraint properly branch coverage data must be gathered from NCover™.\r\n// This can be done in VisualNDepend throught the menu: Coverage -&gt; Import Coverage Files\r\n// This can be done at analysis time throught the menu: Project Properties -&gt; Analysis -&gt; Code Coverage\r\n// More information on how to import coverage data here:\r\n// http://www.ndepend.com/Coverage.aspx\r\n\r\n// The metric BranchCoverage is not available if you are using Visual Studio™ Coverage.</CQLQuery>
177
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Coverage regression on type 100% covered by tests&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TYPES WHERE \r\nHasAttribute "OPTIONAL:NDepend.CQL.FullCoveredAttribute" AND PercentageCoverage &lt; 100\r\n\r\n// NDepend.CQL.FullCoveredAttribute is defined in the redistributable assembly $NDependInstallDir$\Lib\NDepend.CQL.dll\r\n// You can define your own attribute to tag '100% covered' types.\r\n\r\n// To run this constraint properly coverage data must be gathered from NCover™ or Visual Studio™ Coverage.\r\n// This can be done in VisualNDepend throught the menu: Coverage -&gt; Import Coverage Files\r\n// This can be done at analysis time throught the menu: Project Properties -&gt; Analysis -&gt; Code Coverage\r\n// More information on how to import coverage data here:\r\n// http://www.ndepend.com/Coverage.aspx</CQLQuery>
178
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Coverage regression on assembly 100% covered by tests&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT ASSEMBLIES WHERE \r\nHasAttribute "OPTIONAL:NDepend.CQL.FullCoveredAttribute" AND PercentageCoverage &lt; 100\r\n\r\n// NDepend.CQL.FullCoveredAttribute is defined in the redistributable assembly $NDependInstallDir$\Lib\NDepend.CQL.dll\r\n// You can define your own attribute to tag '100% covered' assemblies.\r\n\r\n// To run this constraint properly coverage data must be gathered from NCover™ or Visual Studio™ Coverage.\r\n// This can be done in VisualNDepend throught the menu: Coverage -&gt; Import Coverage Files\r\n// This can be done at analysis time throught the menu: Project Properties -&gt; Analysis -&gt; Code Coverage\r\n// More information on how to import coverage data here:\r\n// http://www.ndepend.com/Coverage.aspx</CQLQuery>
179
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Coverage regression on methods at least 95% covered by tests&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT METHODS WHERE \r\nHasAttribute "OPTIONAL:NDepend.CQL.MoreThan95PercentCoveredAttribute" AND PercentageCoverage &lt; 95\r\n\r\n// NDepend.CQL.MoreThan95PercentCoveredAttribute is defined in the redistributable assembly $NDependInstallDir$\Lib\NDepend.CQL.dll\r\n// You can define your own attribute to tag 'at least 95% Covered' methods.\r\n\r\n// To run this constraint properly coverage data must be gathered from NCover™ or Visual Studio™ Coverage.\r\n// This can be done in VisualNDepend throught the menu: Coverage -&gt; Import Coverage Files\r\n// This can be done at analysis time throught the menu: Project Properties -&gt; Analysis -&gt; Code Coverage\r\n// More information on how to import coverage data here:\r\n// http://www.ndepend.com/Coverage.aspx</CQLQuery>
180
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Coverage regression on types at least 95% covered by tests&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TYPES WHERE \r\nHasAttribute "OPTIONAL:NDepend.CQL.MoreThan95PercentCoveredAttribute" AND PercentageCoverage &lt; 95\r\n\r\n// NDepend.CQL.MoreThan95PercentCoveredAttribute is defined in the redistributable assembly $NDependInstallDir$\Lib\NDepend.CQL.dll\r\n// You can define your own attribute to tag 'at least 95% Covered' types.\r\n\r\n// To run this constraint properly coverage data must be gathered from NCover™ or Visual Studio™ Coverage.\r\n// This can be done in VisualNDepend throught the menu: Coverage -&gt; Import Coverage Files\r\n// This can be done at analysis time throught the menu: Project Properties -&gt; Analysis -&gt; Code Coverage\r\n// More information on how to import coverage data here:\r\n// http://www.ndepend.com/Coverage.aspx</CQLQuery>
181
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Coverage regression on assemblies at least 95% covered by tests&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT ASSEMBLIES WHERE \r\nHasAttribute "OPTIONAL:NDepend.CQL.MoreThan95PercentCoveredAttribute" AND PercentageCoverage &lt; 95\r\n\r\n// NDepend.CQL.MoreThan95PercentCoveredAttribute is defined in the redistributable assembly $NDependInstallDir$\Lib\NDepend.CQL.dll\r\n// You can define your own attribute to tag 'at least 95% Covered' assemblies.\r\n\r\n// To run this constraint properly coverage data must be gathered from NCover™ or Visual Studio™ Coverage.\r\n// This can be done in VisualNDepend throught the menu: Coverage -&gt; Import Coverage Files\r\n// This can be done at analysis time throught the menu: Project Properties -&gt; Analysis -&gt; Code Coverage\r\n// More information on how to import coverage data here:\r\n// http://www.ndepend.com/Coverage.aspx</CQLQuery>
182
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Complex methods should be 100% covered by tests&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 METHODS /*OUT OF "YourGeneratedCode" */ WHERE \r\n // These metrics' definitions are available here: http://www.ndepend.com/Metrics.aspx#MetricsOnMethods\r\n ( NbILInstructions &gt; 200 OR \r\n ILCyclomaticComplexity &gt; 50 OR \r\n ILNestingDepth &gt; 4 OR\r\n NbParameters &gt; 5 OR \r\n NbVariables &gt; 8 OR\r\n NbOverloads &gt; 6 ) AND \r\n !PercentageCoverage &lt; 100\r\n\r\n// To run this constraint properly coverage data must be gathered from NCover™ or Visual Studio™ Coverage.\r\n// This can be done in VisualNDepend throught the menu: Coverage -&gt; Import Coverage Files\r\n// This can be done at analysis time throught the menu: Project Properties -&gt; Analysis -&gt; Code Coverage\r\n// More information on how to import coverage data here:\r\n// http://www.ndepend.com/Coverage.aspx</CQLQuery>
183
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Complex methods should be 100% covered by tests&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 METHODS /*OUT OF "YourGeneratedCode" */ WHERE \r\n // These metrics' definitions are available here: http://www.ndepend.com/Metrics.aspx#MetricsOnMethods\r\n ( NbILInstructions &gt; 200 OR \r\n ILCyclomaticComplexity &gt; 50 OR \r\n ILNestingDepth &gt; 4 OR\r\n NbParameters &gt; 5 OR \r\n NbVariables &gt; 8 OR\r\n NbOverloads &gt; 6 ) AND \r\n !PercentageCoverage &lt; 100\r\n\r\n// To run this constraint properly coverage data must be gathered from NCover™ or Visual Studio™ Coverage.\r\n// This can be done in VisualNDepend throught the menu: Coverage -&gt; Import Coverage Files\r\n// This can be done at analysis time throught the menu: Project Properties -&gt; Analysis -&gt; Code Coverage\r\n// More information on how to import coverage data here:\r\n// http://www.ndepend.com/Coverage.aspx</CQLQuery>
184
- <CQLGroup Name="Test Coverage Summary" Active="False">
185
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Methods 100% covered&lt;/Name&gt;\r\nSELECT METHODS WHERE PercentageCoverage == 100\r\n// To run this constraint properly coverage data must be gathered from NCover™ or Visual Studio™ Coverage.\r\n// This can be done in VisualNDepend throught the menu: Coverage -&gt; Import Coverage Files\r\n// This can be done at analysis time throught the menu: Project Properties -&gt; Analysis -&gt; Code Coverage\r\n// More information on how to import coverage data here:\r\n// http://www.ndepend.com/Coverage.aspx</CQLQuery>
186
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Types 100% covered&lt;/Name&gt;\r\nSELECT TYPES WHERE PercentageCoverage == 100\r\n// To run this constraint properly coverage data must be gathered from NCover™ or Visual Studio™ Coverage.\r\n// This can be done in VisualNDepend throught the menu: Coverage -&gt; Import Coverage Files\r\n// This can be done at analysis time throught the menu: Project Properties -&gt; Analysis -&gt; Code Coverage\r\n// More information on how to import coverage data here:\r\n// http://www.ndepend.com/Coverage.aspx</CQLQuery>
187
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Namespaces 100% covered&lt;/Name&gt;\r\nSELECT NAMESPACES WHERE PercentageCoverage == 100\r\n// To run this constraint properly coverage data must be gathered from NCover™ or Visual Studio™ Coverage.\r\n// This can be done in VisualNDepend throught the menu: Coverage -&gt; Import Coverage Files\r\n// This can be done at analysis time throught the menu: Project Properties -&gt; Analysis -&gt; Code Coverage\r\n// More information on how to import coverage data here:\r\n// http://www.ndepend.com/Coverage.aspx</CQLQuery>
188
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Assemblies 100% covered&lt;/Name&gt;\r\nSELECT ASSEMBLIES WHERE PercentageCoverage == 100\r\n// To run this constraint properly coverage data must be gathered from NCover™ or Visual Studio™ Coverage.\r\n// This can be done in VisualNDepend throught the menu: Coverage -&gt; Import Coverage Files\r\n// This can be done at analysis time throught the menu: Project Properties -&gt; Analysis -&gt; Code Coverage\r\n// More information on how to import coverage data here:\r\n// http://www.ndepend.com/Coverage.aspx</CQLQuery>
189
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Methods not covered&lt;/Name&gt;\r\nSELECT METHODS WHERE PercentageCoverage == 0\r\nORDER BY NbLinesOfCode DESC\r\n\r\n// To run this constraint properly coverage data must be gathered from NCover™ or Visual Studio™ Coverage.\r\n// This can be done in VisualNDepend throught the menu: Coverage -&gt; Import Coverage Files\r\n// This can be done at analysis time throught the menu: Project Properties -&gt; Analysis -&gt; Code Coverage\r\n// More information on how to import coverage data here:\r\n// http://www.ndepend.com/Coverage.aspx</CQLQuery>
190
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Types not covered&lt;/Name&gt;\r\nSELECT TYPES WHERE PercentageCoverage == 0\r\nORDER BY NbLinesOfCode DESC\r\n\r\n// To run this constraint properly coverage data must be gathered from NCover™ or Visual Studio™ Coverage.\r\n// This can be done in VisualNDepend throught the menu: Coverage -&gt; Import Coverage Files\r\n// This can be done at analysis time throught the menu: Project Properties -&gt; Analysis -&gt; Code Coverage\r\n// More information on how to import coverage data here:\r\n// http://www.ndepend.com/Coverage.aspx</CQLQuery>
191
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Namespaces not covered&lt;/Name&gt;\r\nSELECT NAMESPACES WHERE PercentageCoverage == 0\r\nORDER BY NbLinesOfCode DESC\r\n\r\n// To run this constraint properly coverage data must be gathered from NCover™ or Visual Studio™ Coverage.\r\n// This can be done in VisualNDepend throught the menu: Coverage -&gt; Import Coverage Files\r\n// This can be done at analysis time throught the menu: Project Properties -&gt; Analysis -&gt; Code Coverage\r\n// More information on how to import coverage data here:\r\n// http://www.ndepend.com/Coverage.aspx</CQLQuery>
192
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Assemblies not covered&lt;/Name&gt;\r\nSELECT ASSEMBLIES WHERE PercentageCoverage == 0\r\nORDER BY NbLinesOfCode DESC\r\n\r\n// To run this constraint properly coverage data must be gathered from NCover™ or Visual Studio™ Coverage.\r\n// This can be done in VisualNDepend throught the menu: Coverage -&gt; Import Coverage Files\r\n// This can be done at analysis time throught the menu: Project Properties -&gt; Analysis -&gt; Code Coverage\r\n// More information on how to import coverage data here:\r\n// http://www.ndepend.com/Coverage.aspx</CQLQuery>
193
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Methods 95% to 99% covered&lt;/Name&gt;\r\nSELECT METHODS WHERE PercentageCoverage &gt;= 95 AND PercentageCoverage &lt;= 99 \r\nORDER BY NbLinesOfCode DESC , NbLinesOfCodeNotCovered \r\n\r\n// To run this constraint properly coverage data must be gathered from NCover™ or Visual Studio™ Coverage.\r\n// This can be done in VisualNDepend throught the menu: Coverage -&gt; Import Coverage Files\r\n// This can be done at analysis time throught the menu: Project Properties -&gt; Analysis -&gt; Code Coverage\r\n// More information on how to import coverage data here:\r\n// http://www.ndepend.com/Coverage.aspx</CQLQuery>
194
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Types 95% to 99% covered&lt;/Name&gt;\r\nSELECT TYPES WHERE PercentageCoverage &gt;= 95 AND PercentageCoverage &lt;= 99 \r\nORDER BY NbLinesOfCode DESC , NbLinesOfCodeNotCovered \r\n\r\n// To run this constraint properly coverage data must be gathered from NCover™ or Visual Studio™ Coverage.\r\n// This can be done in VisualNDepend throught the menu: Coverage -&gt; Import Coverage Files\r\n// This can be done at analysis time throught the menu: Project Properties -&gt; Analysis -&gt; Code Coverage\r\n// More information on how to import coverage data here:\r\n// http://www.ndepend.com/Coverage.aspx</CQLQuery>
195
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Namespaces 95% to 99% covered&lt;/Name&gt;\r\nSELECT NAMESPACES WHERE PercentageCoverage &gt;= 95 AND PercentageCoverage &lt;= 99 \r\nORDER BY NbLinesOfCode DESC , NbLinesOfCodeNotCovered \r\n\r\n// To run this constraint properly coverage data must be gathered from NCover™ or Visual Studio™ Coverage.\r\n// This can be done in VisualNDepend throught the menu: Coverage -&gt; Import Coverage Files\r\n// This can be done at analysis time throught the menu: Project Properties -&gt; Analysis -&gt; Code Coverage\r\n// More information on how to import coverage data here:\r\n// http://www.ndepend.com/Coverage.aspx</CQLQuery>
196
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Assemblies 95% to 99% covered&lt;/Name&gt;\r\nSELECT ASSEMBLIES WHERE PercentageCoverage &gt;= 95 AND PercentageCoverage &lt;= 99 \r\nORDER BY NbLinesOfCode DESC , NbLinesOfCodeNotCovered \r\n\r\n// To run this constraint properly coverage data must be gathered from NCover™ or Visual Studio™ Coverage.\r\n// This can be done in VisualNDepend throught the menu: Coverage -&gt; Import Coverage Files\r\n// This can be done at analysis time throught the menu: Project Properties -&gt; Analysis -&gt; Code Coverage\r\n// More information on how to import coverage data here:\r\n// http://www.ndepend.com/Coverage.aspx</CQLQuery>
197
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Methods 70% to 94% covered&lt;/Name&gt;\r\nSELECT METHODS WHERE PercentageCoverage &gt;= 70 AND PercentageCoverage &lt;= 94\r\nORDER BY NbLinesOfCode DESC , NbLinesOfCodeNotCovered \r\n\r\n// To run this constraint properly coverage data must be gathered from NCover™ or Visual Studio™ Coverage.\r\n// This can be done in VisualNDepend throught the menu: Coverage -&gt; Import Coverage Files\r\n// This can be done at analysis time throught the menu: Project Properties -&gt; Analysis -&gt; Code Coverage\r\n// More information on how to import coverage data here:\r\n// http://www.ndepend.com/Coverage.aspx</CQLQuery>
198
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Types 70% to 94% covered&lt;/Name&gt;\r\nSELECT TYPES WHERE PercentageCoverage &gt;= 70 AND PercentageCoverage &lt;= 94\r\nORDER BY NbLinesOfCode DESC , NbLinesOfCodeNotCovered \r\n\r\n// To run this constraint properly coverage data must be gathered from NCover™ or Visual Studio™ Coverage.\r\n// This can be done in VisualNDepend throught the menu: Coverage -&gt; Import Coverage Files\r\n// This can be done at analysis time throught the menu: Project Properties -&gt; Analysis -&gt; Code Coverage\r\n// More information on how to import coverage data here:\r\n// http://www.ndepend.com/Coverage.aspx</CQLQuery>
199
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Namespaces 70% to 94% covered&lt;/Name&gt;\r\nSELECT NAMESPACES WHERE PercentageCoverage &gt;= 70 AND PercentageCoverage &lt;= 94\r\nORDER BY NbLinesOfCode DESC , NbLinesOfCodeNotCovered \r\n\r\n// To run this constraint properly coverage data must be gathered from NCover™ or Visual Studio™ Coverage.\r\n// This can be done in VisualNDepend throught the menu: Coverage -&gt; Import Coverage Files\r\n// This can be done at analysis time throught the menu: Project Properties -&gt; Analysis -&gt; Code Coverage\r\n// More information on how to import coverage data here:\r\n// http://www.ndepend.com/Coverage.aspx</CQLQuery>
200
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Assemblies 70% to 94% covered&lt;/Name&gt;\r\nSELECT ASSEMBLIES WHERE PercentageCoverage &gt;= 70 AND PercentageCoverage &lt;= 94\r\nORDER BY NbLinesOfCode DESC , NbLinesOfCodeNotCovered \r\n\r\n// To run this constraint properly coverage data must be gathered from NCover™ or Visual Studio™ Coverage.\r\n// This can be done in VisualNDepend throught the menu: Coverage -&gt; Import Coverage Files\r\n// This can be done at analysis time throught the menu: Project Properties -&gt; Analysis -&gt; Code Coverage\r\n// More information on how to import coverage data here:\r\n// http://www.ndepend.com/Coverage.aspx</CQLQuery>
201
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Methods 1% to 69% covered&lt;/Name&gt;\r\nSELECT METHODS WHERE PercentageCoverage &gt;= 1 AND PercentageCoverage &lt;= 69\r\nORDER BY NbLinesOfCode DESC , NbLinesOfCodeNotCovered \r\n\r\n// To run this constraint properly coverage data must be gathered from NCover™ or Visual Studio™ Coverage.\r\n// This can be done in VisualNDepend throught the menu: Coverage -&gt; Import Coverage Files\r\n// This can be done at analysis time throught the menu: Project Properties -&gt; Analysis -&gt; Code Coverage\r\n// More information on how to import coverage data here:\r\n// http://www.ndepend.com/Coverage.aspx</CQLQuery>
202
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Types 1% to 69% covered&lt;/Name&gt;\r\nSELECT TYPES WHERE PercentageCoverage &gt;= 1 AND PercentageCoverage &lt;= 69\r\nORDER BY NbLinesOfCode DESC , NbLinesOfCodeNotCovered \r\n\r\n// To run this constraint properly coverage data must be gathered from NCover™ or Visual Studio™ Coverage.\r\n// This can be done in VisualNDepend throught the menu: Coverage -&gt; Import Coverage Files\r\n// This can be done at analysis time throught the menu: Project Properties -&gt; Analysis -&gt; Code Coverage\r\n// More information on how to import coverage data here:\r\n// http://www.ndepend.com/Coverage.aspx</CQLQuery>
203
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Namespaces 1% to 69% covered&lt;/Name&gt;\r\nSELECT NAMESPACES WHERE PercentageCoverage &gt;= 1 AND PercentageCoverage &lt;= 69\r\nORDER BY NbLinesOfCode DESC , NbLinesOfCodeNotCovered \r\n\r\n// To run this constraint properly coverage data must be gathered from NCover™ or Visual Studio™ Coverage.\r\n// This can be done in VisualNDepend throught the menu: Coverage -&gt; Import Coverage Files\r\n// This can be done at analysis time throught the menu: Project Properties -&gt; Analysis -&gt; Code Coverage\r\n// More information on how to import coverage data here:\r\n// http://www.ndepend.com/Coverage.aspx</CQLQuery>
204
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Assemblies 1% to 69% covered&lt;/Name&gt;\r\nSELECT ASSEMBLIES WHERE PercentageCoverage &gt;= 1 AND PercentageCoverage &lt;= 69\r\nORDER BY NbLinesOfCode DESC , NbLinesOfCodeNotCovered \r\n\r\n// To run this constraint properly coverage data must be gathered from NCover™ or Visual Studio™ Coverage.\r\n// This can be done in VisualNDepend throught the menu: Coverage -&gt; Import Coverage Files\r\n// This can be done at analysis time throught the menu: Project Properties -&gt; Analysis -&gt; Code Coverage\r\n// More information on how to import coverage data here:\r\n// http://www.ndepend.com/Coverage.aspx</CQLQuery>
205
- </CQLGroup>
206
- </CQLGroup>
207
- <CQLGroup Name="Purity / Immutability / Side-Effects" Active="True">
208
- <CQLQuery Active="True" DisplayList="False" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Fields should be marked as ReadOnly when possible&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT FIELDS WHERE IsImmutable AND !IsInitOnly\r\n\r\n// A field that matches the condition IsImmutable is a field that is assigned only by constructors of its class.\r\n// For an instance field, this means its value will remain constant throught the lifetime of the object.\r\n// For a static field, this means its value will remain constant throught the lifetime of the program.\r\n// In both cases, such field can safely be marked with the C# readonly keyword (ReadOnly in VB.NET).\r\n\r\n// The condition IsInitOnly matches fields that are marked with the C# readonly keyword (ReadOnly in VB.NET).\r\n\r\n\r\n\r\n</CQLQuery>
209
- <CQLQuery Active="True" DisplayList="False" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Structures should be immutable&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TYPES WHERE IsStructure AND !IsImmutable AND !IsInFrameworkAssembly\r\n\r\n// It is deemed as a good practice to make your structure immutable.\r\n// An object is immutable if its state doesn’t change once the object has been created. \r\n// Consequently, a structure is immutable if its instances are immutable.\r\n// Immutable types naturally simplify code by limiting side-effects.\r\n// See some explanations on immutability and how NDepend supports it here:\r\n// http://codebetter.com/blogs/patricksmacchia/archive/2008/01/13/immutable-types-understand-them-and-use-them.aspx\r\n</CQLQuery>
210
- <CQLQuery Active="True" DisplayList="False" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Regression on immutable types&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TYPES WHERE HasAttribute "OPTIONAL:NDepend.CQL.ImmutableAttribute" AND !IsImmutable\r\n\r\n// An object is immutable if its state doesn’t change once the object has been created. \r\n// Consequently, a class or a structure is immutable if its instances are immutable.\r\n// Immutable types naturally simplify code by limiting side-effects.\r\n// See some explanations on immutability and how NDepend supports it here:\r\n// http://codebetter.com/blogs/patricksmacchia/archive/2008/01/13/immutable-types-understand-them-and-use-them.aspx\r\n\r\n// NDepend.CQL.ImmutableAttribute is defined in the redistributable assembly $NDependInstallDir$\Lib\NDepend.CQL.dll\r\n// You can define your own attribute to tag 'immutable' types.\r\n\r\n</CQLQuery>
211
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Regression on pure methods&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT METHODS WHERE \r\n HasAttribute "OPTIONAL:NDepend.CQL.PureAttribute" AND \r\n ( ChangesObjectState OR ChangesTypeState ) AND\r\n NbLinesOfCode &gt; 0\r\n\r\n// A method is pure if its execution doesn’t change the value of any instance or static field. \r\n// Pure methods naturally simplify code by limiting side-effects.\r\n// See some explanations on immutability / purity and how NDepend supports it here:\r\n// http://codebetter.com/blogs/patricksmacchia/archive/2008/01/13/immutable-types-understand-them-and-use-them.aspx\r\n\r\n// NDepend.CQL.PureAttribute is defined in the redistributable assembly $NDependInstallDir$\Lib\NDepend.CQL.dll\r\n// You can define your own attribute to tag 'pure' methods.\r\n\r\n</CQLQuery>
212
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Missing usage of ImmutableAttribute&lt;/Name&gt;\r\nSELECT TYPES WHERE !HasAttribute "OPTIONAL:NDepend.CQL.ImmutableAttribute" AND IsImmutable\r\n\r\n// Types matched by this query are immutable but are not tagged with the ImmutableAttribute.\r\n// The benefit of tagging them with the ImmutableAttribute is that the constraint 'Regression on immutable types' \r\n// will warn when the immutability of a type gets broken.\r\n\r\n// NDepend.CQL.ImmutableAttribute is defined in the redistributable assembly $NDependInstallDir$\Lib\NDepend.CQL.dll\r\n// You can define your own attribute to tag 'immutable' types.\r\n</CQLQuery>
213
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Missing usage of PureAttribute&lt;/Name&gt;\r\nSELECT METHODS WHERE \r\n !HasAttribute "OPTIONAL:NDepend.CQL.PureAttribute" AND \r\n !ChangesObjectState AND !ChangesTypeState AND\r\n NbLinesOfCode &gt; 0\r\n\r\n// Methods matched by this query are pure but are not tagged with the PureAttribute.\r\n// The benefit of tagging them with the PureAttribute is that the constraint 'Regression on pure methods'\r\n// will warn when the purity of a method gets broken.\r\n\r\n// NDepend.CQL.PureAttribute is defined in the redistributable assembly $NDependInstallDir$\Lib\NDepend.CQL.dll\r\n// You can define your own attribute to tag 'pure' methods.</CQLQuery>
214
- </CQLGroup>
215
- <CQLGroup Name="Naming Conventions" Active="True">
216
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Instance fields should be prefixed with a 'm_'&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 FIELDS WHERE \r\n !NameLike "^m_" AND \r\n !IsStatic AND \r\n !IsLiteral AND \r\n !IsGeneratedByCompiler AND \r\n !IsSpecialName AND \r\n !IsEventDelegateObject \r\n\r\n// This naming convention provokes debate.\r\n// Don't hesitate to customize the regex of NameLike to your preference.</CQLQuery>
217
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Static fields should be prefixed with a 's_'&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 FIELDS WHERE \r\n !NameLike "^s_" AND \r\n IsStatic AND \r\n !IsLiteral AND \r\n !IsGeneratedByCompiler AND \r\n !IsSpecialName AND \r\n !IsEventDelegateObject \r\n\r\n// This naming convention provokes debate.\r\n// Don't hesitate to customize the regex of NameLike to your preference.\r\n</CQLQuery>
218
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Interface name should begin with a 'I'&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 TYPES WHERE IsInterface AND !NameLike "^I" AND !IsNested AND !IsInFrameworkAssembly\r\n</CQLQuery>
219
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Abstract base class should be suffixed with 'Base'&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 TYPES WHERE \r\n IsAbstract AND \r\n IsClass AND\r\n DepthOfInheritance == 1 AND // equivalent to: DepthOfDeriveFrom "System.Object" == 1\r\n !NameLike "Base$"\r\n</CQLQuery>
220
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Exception class name should be suffixed with 'Exception'&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 TYPES WHERE IsExceptionClass AND !NameLike "Exception$" AND !IsInFrameworkAssembly\r\n// The name of an exception class should end with 'Exception'.</CQLQuery>
221
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Attribute class name should be suffixed with 'Attribute'&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 TYPES WHERE IsAttributeClass AND !NameLike "Attribute$" AND !IsInFrameworkAssembly\r\n</CQLQuery>
222
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Types name should begin with an Upper character&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 TYPES WHERE \r\n !NameLike "^[A-Z]" AND // The name of a type should begin with an Upper letter.\r\n !IsGeneratedByCompiler AND // Except if it is generated by compiler or ...\r\n !IsInFrameworkAssembly // ... if it is declared in a framework assembly.</CQLQuery>
223
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Methods name should begin with an Upper character&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 METHODS WHERE \r\n !NameLike "^[A-Z]" AND \r\n !(IsClassConstructor OR IsConstructor OR \r\n IsPropertyGetter OR IsPropertySetter OR\r\n IsIndexerGetter OR IsIndexerSetter OR\r\n IsEventAdder OR IsEventRemover OR\r\n IsOperator) AND !IsGeneratedByCompiler AND !IsInFrameworkAssembly\r\n// The name of a regular method should begin with an Upper letter.</CQLQuery>
224
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Do not name enum values 'Reserved'&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 FIELDS WHERE IsEnumValue AND NameLike "Reserved"\r\n\r\n// This rule assumes that an enumeration member with a name that contains "reserved" \r\n// is not currently used but is a placeholder to be renamed or removed in a future version.\r\n// Renaming or removing a member is a breaking change. You should not expect users to ignore\r\n// a member just because its name contains "reserved" nor can you rely on users to read or \r\n// abide by documentation. Furthermore, because reserved members appear in object browsers \r\n// and smart integrated development environments, they can cause confusion as to which members \r\n// are actually being used.\r\n\r\n// Instead of using a reserved member, add a new member to the enumeration in the future version.\r\n// In most cases, the addition of the new member is not a breaking change, as long as the \r\n// addition does not cause the values of the original members to change.</CQLQuery>
225
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Type names should not match namespaces&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 TYPES WHERE \r\n NameIs "Collections" OR\r\n NameIs "Forms" OR\r\n NameIs "System" OR\r\n NameIs "UI"\r\n\r\n// Type names should not match the names of namespaces defined in the .NET Framework \r\n// class library. Violating this rule can reduce the usability of the library.</CQLQuery>
226
- <CQLGroup Name="Name too long" Active="True">
227
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Avoid methods with name too long&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 METHODS \r\n WHERE NameLike "^[^\&lt;\(]{35,}.*$" AND \r\n !IsExplicitInterfaceImpl AND !IsInFrameworkAssembly \r\n// The regex matches methods with name longer than 35 characters.\r\n// Method Name doesn't contain the type and namespace prefix, FullName does.\r\n// The regex computes the method name length from the beginning until the first open parenthesis or first lower than (for generic methods).\r\n// Explicit Interface Implementation methods are discarded because their names are prefixed with the interface name.</CQLQuery>
228
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Avoid types with name too long&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 TYPES WHERE \r\n NameLike "^[^\&lt;]{35,}.*$" AND \r\n !IsNested AND !IsInFrameworkAssembly \r\n// The regex matches types with name longer than 35 characters.\r\n// Type Name doesn't contain the namespace prefix, FullName does.\r\n// The regex computes the type name length from the beginning until the end or the first lower than (for generic types).\r\n// Nested types are discarded because their names are prefixed with outer type's name.</CQLQuery>
229
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Avoid fields with name too long&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 FIELDS WHERE \r\n NameLike "^[^\&lt;]{35,}.*$" AND \r\n !IsInFrameworkAssembly \r\n// The regex matches fields with name longer than 35 characters.\r\n// Field Name doesn't contain the type and namespace prefix, FullName does.</CQLQuery>
230
- </CQLGroup>
231
- </CQLGroup>
232
- <CQLGroup Name=".NET Framework Usage" Active="True">
233
- <CQLGroup Name="System" Active="True">
234
- <CQLQuery Active="True" DisplayList="False" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Mark ISerializable types with serializable&lt;/Name&gt;\r\nSELECT TYPES WHERE \r\n IsPublic AND !IsDelegate AND\r\n Implement "OPTIONAL:System.Runtime.Serialization.ISerializable" AND \r\n !HasAttribute "OPTIONAL:System.SerializableAttribute"\r\n\r\n// To be recognized by the CLR as serializable, types must be marked with the SerializableAttribute \r\n// attribute even if the type uses a custom serialization routine through implementation of the ISerializable interface.</CQLQuery>
235
- <CQLQuery Active="True" DisplayList="False" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Mark assemblies with assembly version&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT ASSEMBLIES WHERE \r\n !HasAttribute "OPTIONAL:System.Reflection.AssemblyVersionAttribute" AND\r\n !IsFrameworkAssembly \r\n\r\n// The identity of an assembly is composed of the following information:\r\n// - Assembly name\r\n// - Version number\r\n// - Culture\r\n// - Public key (for strong-named assemblies).\r\n// The .NET Framework uses the version number to uniquely identify an assembly, \r\n// and to bind to types in strong-named assemblies. The version number is used \r\n// together with version and publisher policy. By default, applications run only \r\n// with the assembly version with which they were built.</CQLQuery>
236
- <CQLQuery Active="True" DisplayList="False" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Mark assemblies with CLSCompliant&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT ASSEMBLIES WHERE \r\n !HasAttribute "OPTIONAL:System.CLSCompliantAttribute" AND\r\n !IsFrameworkAssembly \r\n\r\n// The Common Language Specification (CLS) defines naming restrictions, data types, \r\n// and rules to which assemblies must conform if they are to be used across programming languages.\r\n// Good design dictates that all assemblies explicitly indicate CLS compliance with \r\n// CLSCompliantAttribute. If the attribute is not present on an assembly, the assembly is not compliant.</CQLQuery>
237
- <CQLQuery Active="True" DisplayList="False" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Mark assemblies with ComVisible&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT ASSEMBLIES WHERE \r\n !HasAttribute "OPTIONAL:System.Runtime.InteropServices.ComVisibleAttribute" AND\r\n !IsFrameworkAssembly \r\n\r\n// The ComVisibleAttribute attribute determines how COM clients access managed code. \r\n// Good design dictates that assemblies explicitly indicate COM visibility. \r\n// COM visibility can be set for an entire assembly and then overridden for individual \r\n// types and type members. If the attribute is not present, the contents of the assembly\r\n// are visible to COM clients.</CQLQuery>
238
- <CQLQuery Active="True" DisplayList="False" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Mark attributes with AttributeUsageAttribute&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TYPES WHERE \r\nDeriveFrom "OPTIONAL:System.Attribute" AND\r\n!HasAttribute "OPTIONAL:System.AttributeUsageAttribute" AND\r\n!IsInFrameworkAssembly \r\n\r\n// When defining a custom attribute, mark it using AttributeUsageAttribute to \r\n// indicate where in the source code the custom attribute can be applied.\r\n// An attribute's meaning and intended usage will determine its valid locations \r\n// in code. For example, if you are defining an attribute that identifies the \r\n// person responsible for maintaining and enhancing each type in a library, \r\n// and responsibility is always assigned at the type level, compilers should \r\n// allow the attribute on classes, enumerations, and interfaces, but should \r\n// not allow it on methods, events, or properties. Organizational policies and\r\n// procedures would dictate whether the attribute should be allowed on assemblies.</CQLQuery>
239
- <CQLQuery Active="True" DisplayList="False" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Remove calls to GC.Collect()&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT METHODS WHERE\r\n IsDirectlyUsing "OPTIONAL:System.GC.Collect()" OR\r\n IsDirectlyUsing "OPTIONAL:System.GC.Collect(Int32)" OR\r\n IsDirectlyUsing "OPTIONAL:System.GC.Collect(Int32,GCCollectionMode)"\r\n\r\n// It is preferrable to avoid calling GC.Collect() explicitely\r\n// in order to avoid some performance pitfall.\r\n// More in information on this here:\r\n// http://blogs.msdn.com/ricom/archive/2004/11/29/271829.aspx</CQLQuery>
240
- <CQLQuery Active="True" DisplayList="False" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Don't call GC.Collect() without calling GC.WaitForPendingFinalizers()&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT METHODS WHERE\r\n (IsDirectlyUsing "OPTIONAL:System.GC.Collect()" OR\r\n IsDirectlyUsing "OPTIONAL:System.GC.Collect(Int32)" OR\r\n IsDirectlyUsing "OPTIONAL:System.GC.Collect(Int32,GCCollectionMode)") \r\n AND\r\n !IsDirectlyUsing "OPTIONAL:System.GC.WaitForPendingFinalizers()" \r\n\r\n// It is preferrable to avoid calling GC.Collect() explicitely\r\n// in order to avoid some performance pitfall.\r\n// But if you wish to call GC.Collect(), you must do it this way:\r\n// GC.Collect();\r\n// GC.WaitForPendingFinalizers();\r\n// GC.Collect();\r\n// To make sure that finalizer got executed, and object with finalizer got cleaned properly.</CQLQuery>
241
- <CQLQuery Active="True" DisplayList="False" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Enum Storage should be Int32&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT FIELDS WHERE \r\n NameIs "value__" AND \r\n !IsOfType "OPTIONAL:System.Int32" AND\r\n !IsInFrameworkAssembly\r\n\r\n// An enumeration is a value type that defines a set of related named constants. By default, \r\n// the System.Int32 data type is used to store the constant value. Even though you can change \r\n// this underlying type, it is not necessary or recommended for most scenarios. Note that there \r\n// is no significant performance gain in using a data type smaller than Int32. If you cannot \r\n// use the default data type, you should use one of the CLS-compliant integral types, Byte, \r\n// Int16, Int32, or Int64, to ensure that all of the enumeration's values are representable in \r\n// CLS-compliant programming languages.</CQLQuery>
242
- <CQLQuery Active="True" DisplayList="False" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Do not raise too general exception types&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT METHODS WHERE \r\n // The following exception types are too general to provide sufficient information to the user:\r\n ( ( DepthOfCreateA "OPTIONAL:System.Exception" == 1 OR \r\n DepthOfCreateA "OPTIONAL:System.ApplicationException" == 1 OR \r\n DepthOfCreateA "OPTIONAL:System.SystemException" == 1 )\r\n // Test for non-constructor, else this constraint would warn \r\n // on ctor of classes that derive from these exception types.\r\n AND !IsConstructor )\r\n</CQLQuery>
243
- <CQLQuery Active="True" DisplayList="False" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Do not raise reserved exception types&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT METHODS WHERE \r\n // The following exception types are reserved and should be thrown only by the Common Language Runtime:\r\n ( DepthOfCreateA "OPTIONAL:System.ExecutionEngineException" == 1 OR \r\n DepthOfCreateA "OPTIONAL:System.IndexOutOfRangeException" == 1 OR \r\n DepthOfCreateA "OPTIONAL:System.NullReferenceException" == 1 OR\r\n DepthOfCreateA "OPTIONAL:System.OutOfMemoryException" == 1 OR\r\n DepthOfCreateA "OPTIONAL:System.StackOverflowException" == 1 OR \r\n DepthOfCreateA "OPTIONAL:System.InvalidProgramException" == 1 OR \r\n DepthOfCreateA "OPTIONAL:System.AccessViolationException" == 1 OR\r\n DepthOfCreateA "OPTIONAL:System.CannotUnloadAppDomainException" == 1 OR\r\n DepthOfCreateA "OPTIONAL:System.BadImageFormatException" == 1 OR \r\n DepthOfCreateA "OPTIONAL:System.DataMisalignedException" == 1 )\r\n</CQLQuery>
244
- <CQLQuery Active="True" DisplayList="False" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Use integral or string argument for indexers&lt;/Name&gt;\r\nSELECT METHODS WHERE \r\nIsIndexerGetter AND \r\n !( NameIs "get_Item(String)" OR \r\n NameLike "get_Item\(Int" OR \r\n NameLike "get_Item\(Byte" OR\r\n NameLike "get_Item\(SByte" )\r\n\r\n// Indexers, that is, indexed properties, should use integer or string types for the index. \r\n// These types are typically used for indexing data structures and increase the usability of \r\n// the library. Use of the Object type should be restricted to those cases where the specific \r\n// integer or string type cannot be specified at design time. If the design requires other \r\n// types for the index, reconsider whether the type represents a logical data store. If it \r\n// does not represent a logical data store, use a method.</CQLQuery>
245
- <CQLQuery Active="True" DisplayList="False" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Uri fields should be of type System.Uri&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT FIELDS WHERE \r\n (NameLike "Uri$" OR NameLike "Url$") AND !IsOfType "OPTIONAL:System.Uri"\r\n\r\n// A field which name end with 'Uri' is deemed as representing a uri.\r\n// Such field should be of type System.Uri.</CQLQuery>
246
- <CQLQuery Active="True" DisplayList="False" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Types should not extend System.ApplicationException&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TYPES WHERE\r\n DepthOfDeriveFrom "OPTIONAL:System.ApplicationException" == 1 AND\r\n !IsInFrameworkAssembly\r\n\r\n// For .NET Framework version 1, it was recommended to derive new exceptions from ApplicationException. \r\n// The recommendation has changed and new exceptions should derive from System.Exception or one of its \r\n// subclasses in the System namespace.</CQLQuery>
247
- </CQLGroup>
248
- <CQLGroup Name="System.Collection" Active="True">
249
- <CQLQuery Active="True" DisplayList="False" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Don't use .NET 1.x HashTable and ArrayList&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 METHODS WHERE\r\n\r\n // Prefer using the class System.Collections.Generic.Dictionary&lt;K,V&gt; over System.Collections.HashTable.\r\n CreateA "OPTIONAL:System.Collections.HashTable" OR\r\n\r\n // Prefer using the class System.Collections.Generic.List&lt;T&gt; over System.Collections.ArrayList.\r\n CreateA "OPTIONAL:System.Collections.ArrayList"\r\n\r\n// You can be forced to use HashTable or ArrayList \r\n// because if you are using tier code that requires working with these classes\r\n// or because you are coding with .NET 1.x.</CQLQuery>
250
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Caution with List.Contains()&lt;/Name&gt;\r\nSELECT METHODS WHERE \r\nIsDirectlyUsing "OPTIONAL:System.Collections.Generic.List&lt;T&gt;.Contains(T)" OR\r\nIsDirectlyUsing "OPTIONAL:System.Collections.Generic.IList&lt;T&gt;.Contains(T)" OR\r\nIsDirectlyUsing "OPTIONAL:System.Collections.ArrayList.Contains(Object)"\r\n\r\n// The cost of checking if a list contains an object is proportional to the size of the list (O(N) operation).\r\n// For large lists and/or frequent calls to Contains(), prefer using the System.Collections.Generic.HashSet&lt;T&gt; class \r\n// where calls to Contains() takes a constant time (O(0) operation).</CQLQuery>
251
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Prefer return collection abstraction instead of implementation&lt;/Name&gt;\r\nSELECT METHODS WHERE \r\n ReturnTypeIs "OPTIONAL:System.Collections.Generic.List&lt;T&gt;" OR \r\n ReturnTypeIs "OPTIONAL:System.Collections.Generic.HashSet&lt;T&gt;" OR\r\n ReturnTypeIs "OPTIONAL:System.Collections.Generic.Dictionary&lt;TKey,TValue&gt;"\r\n\r\n// Most of the time, clients of a method doesn't need to know the exact implementation of the collection returned.\r\n// It is preferrable to return a collection interface such as IList&lt;T&gt;, ICollection&lt;T&gt; or IEnumerable&lt;T&gt;.</CQLQuery>
252
- </CQLGroup>
253
- <CQLGroup Name="System.Runtime.InteropServices" Active="True">
254
- <CQLQuery Active="True" DisplayList="False" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;P/Invokes should be static and not be visible&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT METHODS WHERE\r\n !IsInFrameworkAssembly AND\r\n (HasAttribute "OPTIONAL:System.Runtime.InteropServices.DllImportAttribute") AND\r\n ( IsPublic OR \r\n !IsStatic)\r\n\r\n// Methods marked with the DllImportAttribute attribute (or methods defined using the \r\n// Declare keyword in Visual Basic) use Platform Invocation Services to access unmanaged \r\n// code. Such methods should not be exposed. Keeping these methods private or internal \r\n// ensures that your library cannot be used to breach security by allowing callers access \r\n// to unmanaged APIs they could not call otherwise.</CQLQuery>
255
- <CQLQuery Active="True" DisplayList="False" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Move P/Invokes to NativeMethods class&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT METHODS WHERE\r\n !IsInFrameworkAssembly AND\r\n HasAttribute "OPTIONAL:System.Runtime.InteropServices.DllImportAttribute" AND\r\n !FullNameLike "NativeMethods."\r\n\r\n// Platform Invocation methods, such as those marked with the System.Runtime.InteropServices.DllImportAttribute \r\n// attribute, or methods defined by using the Declare keyword in Visual Basic, access unmanaged code. \r\n// These methods should be in one of the following classes:\r\n//\r\n// - NativeMethods - This class does not suppress stack walks for unmanaged code permission. \r\n// (System.Security.SuppressUnmanagedCodeSecurityAttribute must not be applied to this class.) \r\n// This class is for methods that can be used anywhere because a stack walk will be performed.\r\n//\r\n// - SafeNativeMethods - This class suppresses stack walks for unmanaged code permission. \r\n// (System.Security.SuppressUnmanagedCodeSecurityAttribute is applied to this class.) \r\n// This class is for methods that are safe for anyone to call. Callers of these methods are not \r\n// required to do a full security review to ensure that the usage is secure because the methods\r\n// are harmless for any caller.\r\n//\r\n// - UnsafeNativeMethods - This class suppresses stack walks for unmanaged code permission. \r\n// (System.Security.SuppressUnmanagedCodeSecurityAttribute is applied to this class.) \r\n// This class is for methods that are potentially dangerous. Any caller of these methods must do\r\n// a full security review to ensure that the usage is secure because no stack walk will be performed.\r\n</CQLQuery>
256
- <CQLQuery Active="True" DisplayList="False" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;NativeMethods class should be static and internal&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TYPES WHERE\r\n !IsInFrameworkAssembly AND\r\n ( NameIs "NativeMethods" OR\r\n NameIs "SafeNativeMethods" OR\r\n NameIs "UnsafeNativeMethods") AND\r\n IsPublic OR\r\n !IsStatic \r\n\r\n// Native Methods' classes are declared as internal (Friend, in Visual Basic) and static.\r\n</CQLQuery>
257
- </CQLGroup>
258
- <CQLGroup Name="System.Threading" Active="True">
259
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Method non-synchronized that read mutable states&lt;/Name&gt;\r\nSELECT METHODS WHERE \r\n (ReadsMutableObjectState OR ReadsMutableTypeState) AND \r\n !IsDirectlyUsing "OPTIONAL:System.Threading.Monitor" AND \r\n !IsDirectlyUsing "OPTIONAL:System.Threading.ReaderWriterLock"\r\n\r\n// Mutable object states are instance fields that can be modifed throught the lifetime of the object.\r\n// Mutable type states are static fields that can be modifed throught the lifetime of the program.\r\n// This query lists methods that read mutable state without synchronizing access.\r\n// In the case of multi-threaded program, doing so can lead to state corruption.</CQLQuery>
260
- <CQLQuery Active="True" DisplayList="False" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Don't create threads explicitely&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT METHODS WHERE \r\n CreateA "OPTIONAL:System.Threading.Thread"\r\n\r\n// Prefer using the thread pool instead of creating manually your own thread.\r\n// Threads are costly objects. \r\n// They take approximately 200,000 cycles to create and about 100,000 cycles to destroy. \r\n// By default they reserve 1 megabyte of virtual memory for its stack and use 2,000-8,000 cycles for each context switch.\r\n// As a consequence, it is preferrable to let the thread pool recycle threads.\r\n\r\n// Creating custom thread can also be the sign of flawed design, where tasks and threads have affinity.\r\n// It is preferrable to code tasks that can be ran on any thread.</CQLQuery>
261
- <CQLQuery Active="True" DisplayList="False" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Don't use Thread.Sleep()&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT METHODS WHERE IsDirectlyUsing "OPTIONAL:System.Threading.Thread.Sleep(Int32)"\r\n\r\n// Usage of Thread.Sleep() is a sign of flawed design.\r\n// More information on this here:\r\n// http://msmvps.com/blogs/peterritchie/archive/2007/04/26/thread-sleep-is-a-sign-of-a-poorly-designed-program.aspx\r\n</CQLQuery>
262
- <CQLQuery Active="True" DisplayList="False" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Don't use Thread.Abort()&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT METHODS WHERE \r\n IsDirectlyUsing "OPTIONAL:System.Threading.Thread.Abort()" OR\r\n IsDirectlyUsing "OPTIONAL:System.Threading.Thread.Abort(Object)" \r\n\r\n// Usage of Thread.Abort() is dangerous.\r\n// More information on this here:\r\n// http://www.interact-sw.co.uk/iangblog/2004/11/12/cancellation</CQLQuery>
263
- <CQLQuery Active="True" DisplayList="False" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Monitor Enter/Exit must be both called within the same method&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT METHODS WHERE\r\n IsDirectlyUsing "OPTIONAL:System.Threading.Monitor.Enter(Object)" AND\r\n !IsDirectlyUsing "OPTIONAL:System.Threading.Monitor.Exit(Object)" </CQLQuery>
264
- <CQLQuery Active="True" DisplayList="False" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Monitor TryEnter/Exit must be both called within the same method&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT METHODS WHERE\r\n ( IsDirectlyUsing "OPTIONAL:System.Threading.Monitor.Enter(Object)" OR\r\n IsDirectlyUsing "OPTIONAL:System.Threading.Monitor.TryEnter(Object,Int32)" OR\r\n IsDirectlyUsing "OPTIONAL:System.Threading.Monitor.TryEnter(Object,TimeSpan)") AND\r\n !IsDirectlyUsing "OPTIONAL:System.Threading.Monitor.Exit(Object)" </CQLQuery>
265
- <CQLQuery Active="True" DisplayList="False" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;ReaderWriterLock AcquireReaderLock/ReleaseLock must be both called within the same method&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT METHODS WHERE\r\n ( IsDirectlyUsing "OPTIONAL:System.Threading.ReaderWriterLock.AcquireReaderLock(Int32)" OR\r\n IsDirectlyUsing "OPTIONAL:System.Threading.ReaderWriterLock.AcquireReaderLock(TimeSpan)" OR\r\n IsDirectlyUsing "OPTIONAL:System.Threading.Monitor.TryEnter(Object,TimeSpan)") \r\nAND\r\n !( IsDirectlyUsing "OPTIONAL:System.Threading.ReaderWriterLock.ReleaseReaderLock()" OR \r\n IsDirectlyUsing "OPTIONAL:System.Threading.ReaderWriterLock.ReleaseLock()") </CQLQuery>
266
- <CQLQuery Active="True" DisplayList="False" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;ReaderWriterLock AcquireWriterLock/ReleaseLock must be both called within the same method&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT METHODS WHERE\r\n ( IsDirectlyUsing "OPTIONAL:System.Threading.ReaderWriterLock.AcquireWriterLock(Int32)" OR\r\n IsDirectlyUsing "OPTIONAL:System.Threading.ReaderWriterLock.AcquireWriterLock(TimeSpan)" OR\r\n IsDirectlyUsing "OPTIONAL:System.Threading.Monitor.TryEnter(Object,TimeSpan)") \r\nAND\r\n !( IsDirectlyUsing "OPTIONAL:System.Threading.ReaderWriterLock.ReleaseWriterLock()" OR \r\n IsDirectlyUsing "OPTIONAL:System.Threading.ReaderWriterLock.ReleaseLock()") </CQLQuery>
267
- </CQLGroup>
268
- <CQLGroup Name="System.Xml" Active="True">
269
- <CQLQuery Active="True" DisplayList="False" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Method should not return concrete XmlNode&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT METHODS WHERE \r\n( ReturnTypeIs "OPTIONAL:System.Xml.XmlDocument" OR \r\n ReturnTypeIs "OPTIONAL:System.Xml.XmlAttribute" OR \r\n ReturnTypeIs "OPTIONAL:System.Xml.XmlDocumentFragment" OR \r\n ReturnTypeIs "OPTIONAL:System.Xml.XmlEntity" OR \r\n ReturnTypeIs "OPTIONAL:System.Xml.XmlLinkedNode" OR \r\n ReturnTypeIs "OPTIONAL:System.Xml.XmlNotation" OR\r\n ReturnTypeIs "OPTIONAL:System.Xml.XmlNode" )\r\n\r\n// The class System.Xml.XmlNode implements the interface System.Xml.Xpath.IXPathNavigable.\r\n// It is preferrable to return this interface instead of a concrete class.\r\n</CQLQuery>
270
- <CQLQuery Active="True" DisplayList="False" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Types should not extend System.Xml.XmlDocument&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TYPES WHERE DepthOfDeriveFrom "OPTIONAL:System.Xml.XmlDocument" == 1\r\n\r\n// Do not create a subclass of XmlDocument if you want to create an XML view of an underlying object model or data source.</CQLQuery>
271
- </CQLGroup>
272
- </CQLGroup>
273
- <CQLGroup Name="Statistics" Active="False">
274
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Most used types (TypeRank)&lt;/Name&gt;\r\nSELECT TOP 50 TYPES ORDER BY TypeRank DESC\r\n// TypeRank values are computed by applying the Google PageRank \r\n// algorithm on the graph of types' dependencies \r\n// Types with high Rank are the most used ones.\r\n// See the definition of the TypeRank metric here http://www.ndepend.com/Metrics.aspx#TypeRank</CQLQuery>
275
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Most used methods (MethodRank)&lt;/Name&gt;\r\nSELECT TOP 50 METHODS ORDER BY MethodRank DESC\r\n// MethodRank values are computed by applying the Google PageRank \r\n// algorithm on the graph of methods' dependencies\r\n// Methods with high Rank are the most used ones.\r\n// See the definition of the MethodRank metric here http://www.ndepend.com/Metrics.aspx#MethodRank</CQLQuery>
276
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Most used namespaces (NamespaceCa)&lt;/Name&gt;\r\nSELECT TOP 50 NAMESPACES ORDER BY NamespaceCa DESC\r\n// The Afferent Coupling for a particular namespace is the number of namespaces that depends directly on it.\r\n// Namespaces with high Ca are the most used ones.\r\n// See the definition of the NamespaceCa metric here http://www.ndepend.com/Metrics.aspx#NamespaceCa</CQLQuery>
277
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Most used types (TypeCa)&lt;/Name&gt;\r\nSELECT TOP 50 TYPES ORDER BY TypeCa DESC\r\n// The Afferent Coupling for a particular type is the number of types that depends directly on it.\r\n// Types with high Ca are the most used ones.\r\n// See the definition of the TypeCa metric here http://www.ndepend.com/Metrics.aspx#TypeCa</CQLQuery>
278
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Most used methods (MethodCa)&lt;/Name&gt;\r\nSELECT TOP 50 METHODS ORDER BY MethodCa DESC\r\n// The Afferent Coupling for a particular method is the number of methods that depends directly on it.\r\n// Methods with high Ca are the most used ones\r\n// See the definition of the MethodCa metric here http://www.ndepend.com/Metrics.aspx#MethodCa</CQLQuery>
279
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Namespaces that use many other namespaces (NamespaceCe)&lt;/Name&gt;\r\nSELECT TOP 50 NAMESPACES ORDER BY NamespaceCe DESC\r\n// The Efferent Coupling for a particular namespace is the number of namespaces it directly depends on.\r\n// Namespaces declared in Framework assemblies are taken account.\r\n// See the definition of the NamespaceCe metric here http://www.ndepend.com/Metrics.aspx#NamespaceCe</CQLQuery>
280
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Types that use many other types (TypeCe)&lt;/Name&gt;\r\nSELECT TOP 50 TYPES ORDER BY TypeCe DESC\r\n// The Efferent Coupling for a particular type is the number of types it directly depends on.\r\n// Types declared in Framework assemblies are taken account.\r\n// See the definition of the TypeCe metric here http://www.ndepend.com/Metrics.aspx#TypeCe</CQLQuery>
281
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;Methods that use many other methods (MethodCe)&lt;/Name&gt;\r\nSELECT TOP 50 METHODS ORDER BY MethodCe DESC\r\n// The Efferent Coupling for a particular method is the number of methods it directly depends on.\r\n// Methods declared in Framework assemblies are taken account.\r\n// See the definition of the MethodCe metric here http://www.ndepend.com/Metrics.aspx#MethodCe</CQLQuery>
282
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;High-level to low-level assemblies (AssemblyLevel)&lt;/Name&gt;\r\nSELECT ASSEMBLIES ORDER BY AssemblyLevel DESC\r\n// Classify assemblies by their Level values.\r\n// See the definition of the AssemblyLevel metric here http://www.ndepend.com/Metrics.aspx#Level</CQLQuery>
283
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;High-level to low-level namespaces (NamespaceLevel)&lt;/Name&gt;\r\nSELECT NAMESPACES ORDER BY NamespaceLevel DESC\r\n// Classify namespaces by their Level values.\r\n// See the definition of the NamespaceLevel metric here http://www.ndepend.com/Metrics.aspx#Level</CQLQuery>
284
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;High-level to low-level types (TypeLevel)&lt;/Name&gt;\r\nSELECT TYPES ORDER BY TypeLevel DESC\r\n// Classify types by their Level values.\r\n// See the definition of the TypeLevel metric here http://www.ndepend.com/Metrics.aspx#Level</CQLQuery>
285
- <CQLQuery Active="False" DisplayList="False" DisplayStat="False" DisplaySelectionView="False">// &lt;Name&gt;High-level to low-level methods (MethodLevel)&lt;/Name&gt;\r\nSELECT METHODS ORDER BY MethodLevel DESC\r\n// Classify methods by their Level values.\r\n// See the definition of the MethodLevel metric here http://www.ndepend.com/Metrics.aspx#Level</CQLQuery>
286
- </CQLGroup>
287
- <CQLGroup Name="Samples of Custom Constraints" Active="False">
288
- <CQLQuery Active="False" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Check that the assembly Asm1 is not using the assembly Asm2&lt;/Name&gt;\r\n\r\nWARN IF Count &gt; 0 IN SELECT ASSEMBLIES WHERE \r\n IsDirectlyUsing "OPTIONAL:ASSEMBLY:Asm2" AND\r\n NameIs "Asm1"\r\n // The OPTIONAL: prefix is just use to avoid an error because there is currently no assembly named Asm2.\r\n</CQLQuery>
289
- <CQLQuery Active="False" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Check that the namespace N1.N2 is not using the namespace N3.N4.N5&lt;/Name&gt;\r\n\r\nWARN IF Count &gt; 0 IN SELECT NAMESPACES WHERE \r\n IsDirectlyUsing "OPTIONAL:ASSEMBLY:N3.N4.N5" AND\r\n NameIs "N1.N2"\r\n // The OPTIONAL: prefix is just use to avoid an error because there is currently no namespace named N3.N4.N5.\r\n</CQLQuery>
290
- <CQLQuery Active="False" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Check that the assembly Asm1 is only using the assemblies Asm2, Asm3 or mscorlib&lt;/Name&gt;\r\n\r\nWARN IF Count &gt; 0 IN SELECT ASSEMBLIES WHERE \r\n ( !IsDirectlyUsing "OPTIONAL:ASSEMBLY:Asm2" OR\r\n !IsDirectlyUsing "OPTIONAL:ASSEMBLY:Asm3" OR\r\n !IsDirectlyUsing "ASSEMBLY:mscorlib" OR\r\n AsmCe != 3) // Must not be used more than 3 assemblies \r\n // AsmCe = Efferent Coupling for assembly\r\nAND \r\n NameIs "Asm1"\r\n // The OPTIONAL: prefix is just use to avoid an error because there is currently no assembly named Asm2 or Asm3.\r\n</CQLQuery>
291
- <CQLQuery Active="False" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Check that the namespace N1.N2 is only using the namespaces N3.N4, N5 or System&lt;/Name&gt;\r\n\r\nWARN IF Count &gt; 0 IN SELECT ASSEMBLIES WHERE \r\n ( !IsDirectlyUsing "OPTIONAL:NAMESPACE:N3.N4" OR\r\n !IsDirectlyUsing "OPTIONAL:NAMESPACE:N5" OR\r\n !IsDirectlyUsing "NAMESPACE:System" OR\r\n AsmCe != 3) // Must not be used more than 3 assemblies \r\n // AsmCe = Efferent Coupling for assembly\r\nAND \r\n NameIs "Asm1"\r\n // The OPTIONAL: prefix is just use to avoid an error because there is currently no namespace named N3.N4 or N5.\r\n</CQLQuery>
292
- <CQLQuery Active="False" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Check that AsmDrawing is the only assembly that is using System.Drawing&lt;/Name&gt;\r\nWARN IF Count&gt; 0 IN SELECT ASSEMBLIES WHERE \r\n IsDirectlyUsing "OPTIONAL:ASSEMBLY:System.Drawing" AND\r\n !NameIs "AsmDrawing"\r\n\r\n// The OPTIONAL: prefix is just use to avoid an error because System.Drawing might not be currently referenced.\r\n</CQLQuery>
293
- <CQLQuery Active="False" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Check that only 3 assemblies are using System.Drawing&lt;/Name&gt;\r\nWARN IF Count &gt; 3 IN SELECT ASSEMBLIES WHERE \r\n IsDirectlyUsing "OPTIONAL:ASSEMBLY:System.Drawing"\r\n\r\n// The OPTIONAL: prefix is just use to avoid an error because System.Drawing might not be currently referenced.\r\n</CQLQuery>
294
- <CQLQuery Active="False" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Check that all methods that call Foo.Fct1() also call Foo.Fct2(Int32)&lt;/Name&gt;\r\n\r\nWARN IF Count &gt; 0 IN SELECT METHODS WHERE \r\n IsDirectlyUsing "OPTIONAL:Foo.Fct1()" AND\r\n !IsDirectlyUsing "OPTIONAL:Foo.Fct2(Int32)"\r\n // The OPTIONAL: prefix is just use to avoid an error because there is currently no methods named Foo.Fct1() or Foo.Fct2(Int32)</CQLQuery>
295
- <CQLQuery Active="False" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Check that all types that derive from Foo, also implement IFoo&lt;/Name&gt;\r\n\r\nWARN IF Count &gt; 0 IN SELECT TYPES WHERE \r\n DeriveFrom "OPTIONAL:TYPE:Foo" AND\r\n !Implement "OPTIONAL:TYPE:IFoo"\r\n // The OPTIONAL: prefix is just use to avoid an error because there is currently no class named Foo and no interface named IFoo</CQLQuery>
296
- <CQLQuery Active="False" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Check that all types that has the attribute FooAttribute are declared in the namespace N1.N2&lt;/Name&gt;\r\n\r\nWARN IF Count &gt; 0 IN SELECT TYPES \r\n OUT OF NAMESPACES "OPTIONAL:N1.N2" \r\n WHERE \r\n HasAttribute "OPTIONAL:FooAttribute"\r\n\r\n // The OPTIONAL: prefix is just use to avoid an error because there is currently no attribute class named FooAttribute and no namespace named N1.N2</CQLQuery>
297
- <CQLQuery Active="False" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Check that all synchronization objects are only used from the namespaces under MyNamespace.Sync&lt;/Name&gt;\r\n\r\nWARN IF Count &gt; 0 IN SELECT NAMESPACES \r\n WHERE \r\n IsDirectlyUsing "OPTIONAL:System.Threading.Monitor" OR\r\n IsDirectlyUsing "OPTIONAL:System.Threading.ReaderWriterLock" OR\r\n IsDirectlyUsing "OPTIONAL:System.Threading.Mutex" OR\r\n IsDirectlyUsing "OPTIONAL:System.Threading.EventWaitHandle" OR\r\n IsDirectlyUsing "OPTIONAL:System.Threading.Semaphore" OR\r\n IsDirectlyUsing "OPTIONAL:System.Threading.Interlocked" \r\n AND !NameLike "^MyNamespace.Sync"\r\n\r\n // The OPTIONAL: prefix is just use to avoid an error because there some code elemnts might not currently exists.</CQLQuery>
298
- <CQLQuery Active="False" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Check that the graph of namespaces dependencies of the assembly Asm is acyclic&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT ASSEMBLIES WHERE \r\n NameIs "OPTIONAL:Asm" AND\r\n ContainsNamespaceDependencyCycle\r\n // The OPTIONAL: prefix is just use to avoid an error because there is currently no assembly named Asm</CQLQuery>
299
- <CQLGroup Name="Check that the Quality is respected from Now!" Active="True">
300
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;From now, all methods added or refactored should respect basic quality principles&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 METHODS WHERE \r\n\r\n // Metrics' definitions\r\n ( NbLinesOfCode &gt; 30 OR // http://www.ndepend.com/Metrics.aspx#NbLinesOfCode\r\n NbILInstructions &gt; 200 OR // http://www.ndepend.com/Metrics.aspx#NbILInstructions\r\n CyclomaticComplexity &gt; 20 OR // http://www.ndepend.com/Metrics.aspx#CC\r\n ILCyclomaticComplexity &gt; 50 OR // http://www.ndepend.com/Metrics.aspx#ILCC\r\n ILNestingDepth &gt; 4 OR // http://www.ndepend.com/Metrics.aspx#ILNestingDepth\r\n NbParameters &gt; 5 OR // http://www.ndepend.com/Metrics.aspx#NbParameters\r\n NbVariables &gt; 8 OR // http://www.ndepend.com/Metrics.aspx#NbVariables\r\n NbOverloads &gt; 6 ) // http://www.ndepend.com/Metrics.aspx#NbOverloads\r\n\r\n AND (WasAdded OR CodeWasChanged)\r\n\r\n// This constraint warns if a method with low-quality has been added or refactored.\r\n// With NDepend and such constraint, you can Ensure Quality From Now! as explained here:\r\n// http://codebetter.com/blogs/patricksmacchia/archive/2008/01/01/ensure-the-quality-of-the-code-that-will-be-developed-this-year.aspx\r\n\r\n// To run this constraint properly 2 analysis must be compared.\r\n// This can be done in VisualNDepend throught the menu: Start Page -&gt; Compare 2 versions of a code base\r\n// This can be done at analysis time throught the menu: Project Properties -&gt; Analysis -&gt; Analysis Comparison</CQLQuery>
301
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;From now, all types added or refactored should respect basic quality principles&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 TYPES WHERE \r\n // These metrics' definitions are available here: http://www.ndepend.com/Metrics.aspx#MetricsOnMethods\r\n ( NbMethods &gt; 20 OR\r\n (NbFields &gt; 20 AND !IsEnumeration) OR\r\n (LCOMHS &gt; 0.95 AND NbFields &gt; 10 AND NbMethods &gt; 10) OR\r\n TypeCe &gt; 50 ) \r\n AND (WasAdded OR CodeWasChanged)\r\n\r\n// This constraint warns if a type with low-quality has been added or refactored.\r\n// With NDepend and such constraint, you can Ensure Quality From Now! as explained here:\r\n// http://codebetter.com/blogs/patricksmacchia/archive/2008/01/01/ensure-the-quality-of-the-code-that-will-be-developed-this-year.aspx\r\n\r\n// To run this constraint properly 2 analysis must be compared.\r\n// This can be done in VisualNDepend throught the menu: Start Page -&gt; Compare 2 versions of a code base\r\n// This can be done at analysis time throught the menu: Project Properties -&gt; Analysis -&gt; Analysis Comparison</CQLQuery>
302
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;From now, all methods added or refactored should be 100% covered by tests&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TOP 10 TYPES WHERE \r\n // These metrics' definitions are available here: http://www.ndepend.com/Metrics.aspx#MetricsOnMethods\r\n PercentageCoverage &lt; 100\r\n AND (WasAdded OR CodeWasChanged)\r\n\r\n// This constraint warns if a method has been added or refactored and hasn't been 100% covered by tests.\r\n// With NDepend and such constraint, you can Ensure Quality From Now! as explained here:\r\n// http://codebetter.com/blogs/patricksmacchia/archive/2008/01/01/ensure-the-quality-of-the-code-that-will-be-developed-this-year.aspx\r\n\r\n// To run this constraint properly 2 analysis must be compared.\r\n// This can be done in VisualNDepend throught the menu: Start Page -&gt; Compare 2 versions of a code base\r\n// This can be done at analysis time throught the menu: Project Properties -&gt; Analysis -&gt; Analysis Comparison\r\n\r\n// To run this constraint properly coverage data must be gathered from NCover™ or Visual Studio™ Coverage.\r\n// This can be done in VisualNDepend throught the menu: Coverage -&gt; Import Coverage Files\r\n// This can be done at analysis time throught the menu: Project Properties -&gt; Analysis -&gt; Code Coverage\r\n// More information on how to import coverage data here:\r\n// http://www.ndepend.com/Coverage.aspx</CQLQuery>
303
- </CQLGroup>
304
- <CQLGroup Name="Check Coverage on particular Code Elements" Active="True">
305
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Check that the assembly Asm is 100% covered by tests&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT ASSEMBLIES WHERE \r\nNameIs "Asm" AND PercentageCoverage &lt; 100\r\n\r\n\r\n// To run this constraint properly coverage data must be gathered from NCover™ or Visual Studio™ Coverage.\r\n// This can be done in VisualNDepend throught the menu: Coverage -&gt; Import Coverage Files\r\n// This can be done at analysis time throught the menu: Project Properties -&gt; Analysis -&gt; Code Coverage\r\n// More information on how to import coverage data here:\r\n// http://www.ndepend.com/Coverage.aspx\r\n\r\n</CQLQuery>
306
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Check that the namespace N1.N2 is 100% covered by tests&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT NAMESPACES WHERE \r\nNameIs "N1.N2" AND PercentageCoverage &lt; 100\r\n\r\n\r\n// To run this constraint properly coverage data must be gathered from NCover™ or Visual Studio™ Coverage.\r\n// This can be done in VisualNDepend throught the menu: Coverage -&gt; Import Coverage Files\r\n// This can be done at analysis time throught the menu: Project Properties -&gt; Analysis -&gt; Code Coverage\r\n// More information on how to import coverage data here:\r\n// http://www.ndepend.com/Coverage.aspx\r\n\r\n</CQLQuery>
307
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Check that the class Namespace.Foo is 100% covered by tests&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TYPES WHERE \r\nFullNameIs "Namespace.Foo" AND PercentageCoverage &lt; 100\r\n\r\n\r\n// To run this constraint properly coverage data must be gathered from NCover™ or Visual Studio™ Coverage.\r\n// This can be done in VisualNDepend throught the menu: Coverage -&gt; Import Coverage Files\r\n// This can be done at analysis time throught the menu: Project Properties -&gt; Analysis -&gt; Code Coverage\r\n// More information on how to import coverage data here:\r\n// http://www.ndepend.com/Coverage.aspx\r\n\r\n</CQLQuery>
308
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Check that the class Namespace.Foo.Method(Int32) is 100% covered by tests&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT TYPES WHERE \r\nFullNameIs "Namespace.Foo.Method(Int32)" AND PercentageCoverage &lt; 100\r\n\r\n\r\n// To run this constraint properly coverage data must be gathered from NCover™ or Visual Studio™ Coverage.\r\n// This can be done in VisualNDepend throught the menu: Coverage -&gt; Import Coverage Files\r\n// This can be done at analysis time throught the menu: Project Properties -&gt; Analysis -&gt; Code Coverage\r\n// More information on how to import coverage data here:\r\n// http://www.ndepend.com/Coverage.aspx\r\n\r\n</CQLQuery>
309
- </CQLGroup>
310
- <CQLGroup Name="Custom Naming Conventions" Active="True">
311
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Check that all types that derive from Foo, has a name that ends up with Foo&lt;/Name&gt;\r\n\r\nWARN IF Count &gt; 0 IN SELECT TYPES WHERE \r\n DeriveFrom "OPTIONAL:TYPE:Foo" AND\r\n !NameLike "Foo$"\r\n // The OPTIONAL: prefix is just use to avoid an error because there is currently no class named Foo</CQLQuery>
312
- <CQLQuery Active="True" DisplayList="True" DisplayStat="True" DisplaySelectionView="False">// &lt;Name&gt;Check that all namespaces begins with CompanyName.ProductName&lt;/Name&gt;\r\nWARN IF Count &gt; 0 IN SELECT NAMESPACES WHERE \r\n !NameLike "^CompanyName.ProductName"\r\n AND !IsInFrameworkAssembly </CQLQuery>
313
- </CQLGroup>
314
- </CQLGroup>
315
- </CQLQueries></NDepend>
@@ -1,27 +0,0 @@
1
- <Configuration>
2
- <SettingsComponent>
3
- <string />
4
- <integer />
5
- <boolean>
6
- <setting name="SolutionAnalysisEnabled">False</setting>
7
- </boolean>
8
- </SettingsComponent>
9
- <RecentFiles>
10
- <RecentFiles>
11
- <File id="57F50D38-0EA8-401F-AD2A-CA50738F4F14/f:OneFeature.feature.cs" caret="0" fromTop="0" />
12
- <File id="57F50D38-0EA8-401F-AD2A-CA50738F4F14/f:OneFeature.feature" caret="0" fromTop="0" />
13
- </RecentFiles>
14
- <RecentEdits />
15
- </RecentFiles>
16
- <NAntValidationSettings>
17
- <NAntPath value="" />
18
- </NAntValidationSettings>
19
- <UnitTestRunner>
20
- <Providers />
21
- </UnitTestRunner>
22
- <UnitTestRunnerNUnit>
23
- <NUnitInstallDir IsNull="False">
24
- </NUnitInstallDir>
25
- <UseAddins>Never</UseAddins>
26
- </UnitTestRunnerNUnit>
27
- </Configuration>
@@ -1,19 +0,0 @@
1
- using System;
2
- using System.Collections.Generic;
3
- using System.Linq;
4
- using System.Text;
5
- using NUnit.Framework;
6
-
7
- namespace TestSolution.FailingTests
8
- {
9
- [TestFixture]
10
- public class FailingTestFixture
11
- {
12
-
13
- [Test]
14
- public void FailingTest()
15
- {
16
- Assert.Fail("I'm A Failing Test!");
17
- }
18
- }
19
- }
@@ -1,36 +0,0 @@
1
- using System.Reflection;
2
- using System.Runtime.CompilerServices;
3
- using System.Runtime.InteropServices;
4
-
5
- // General Information about an assembly is controlled through the following
6
- // set of attributes. Change these attribute values to modify the information
7
- // associated with an assembly.
8
- [assembly: AssemblyTitle("TestSolution.FailingTests")]
9
- [assembly: AssemblyDescription("")]
10
- [assembly: AssemblyConfiguration("")]
11
- [assembly: AssemblyCompany("")]
12
- [assembly: AssemblyProduct("TestSolution.FailingTests")]
13
- [assembly: AssemblyCopyright("Copyright © 2009")]
14
- [assembly: AssemblyTrademark("")]
15
- [assembly: AssemblyCulture("")]
16
-
17
- // Setting ComVisible to false makes the types in this assembly not visible
18
- // to COM components. If you need to access a type in this assembly from
19
- // COM, set the ComVisible attribute to true on that type.
20
- [assembly: ComVisible(false)]
21
-
22
- // The following GUID is for the ID of the typelib if this project is exposed to COM
23
- [assembly: Guid("ba25e11c-9bbb-4787-8fd2-5a648d84a54b")]
24
-
25
- // Version information for an assembly consists of the following four values:
26
- //
27
- // Major Version
28
- // Minor Version
29
- // Build Number
30
- // Revision
31
- //
32
- // You can specify all the values or you can default the Build and Revision Numbers
33
- // by using the '*' as shown below:
34
- // [assembly: AssemblyVersion("1.0.*")]
35
- [assembly: AssemblyVersion("1.0.0.0")]
36
- [assembly: AssemblyFileVersion("1.0.0.0")]
@@ -1,101 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3
- <PropertyGroup>
4
- <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
5
- <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
6
- <ProductVersion>9.0.30729</ProductVersion>
7
- <SchemaVersion>2.0</SchemaVersion>
8
- <ProjectGuid>{8D680D34-363A-4AB4-BC8B-ECA28AFE1D46}</ProjectGuid>
9
- <OutputType>Library</OutputType>
10
- <AppDesignerFolder>Properties</AppDesignerFolder>
11
- <RootNamespace>TestSolution.FailingTests</RootNamespace>
12
- <AssemblyName>TestSolution.FailingTests</AssemblyName>
13
- <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
14
- <FileAlignment>512</FileAlignment>
15
- <FileUpgradeFlags>
16
- </FileUpgradeFlags>
17
- <OldToolsVersion>3.5</OldToolsVersion>
18
- <UpgradeBackupLocation />
19
- <PublishUrl>publish\</PublishUrl>
20
- <Install>true</Install>
21
- <InstallFrom>Disk</InstallFrom>
22
- <UpdateEnabled>false</UpdateEnabled>
23
- <UpdateMode>Foreground</UpdateMode>
24
- <UpdateInterval>7</UpdateInterval>
25
- <UpdateIntervalUnits>Days</UpdateIntervalUnits>
26
- <UpdatePeriodically>false</UpdatePeriodically>
27
- <UpdateRequired>false</UpdateRequired>
28
- <MapFileExtensions>true</MapFileExtensions>
29
- <ApplicationRevision>0</ApplicationRevision>
30
- <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
31
- <IsWebBootstrapper>false</IsWebBootstrapper>
32
- <UseApplicationTrust>false</UseApplicationTrust>
33
- <BootstrapperEnabled>true</BootstrapperEnabled>
34
- </PropertyGroup>
35
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
36
- <DebugSymbols>true</DebugSymbols>
37
- <DebugType>full</DebugType>
38
- <Optimize>false</Optimize>
39
- <OutputPath>bin\Debug\</OutputPath>
40
- <DefineConstants>DEBUG;TRACE</DefineConstants>
41
- <ErrorReport>prompt</ErrorReport>
42
- <WarningLevel>4</WarningLevel>
43
- <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
44
- </PropertyGroup>
45
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
46
- <DebugType>pdbonly</DebugType>
47
- <Optimize>true</Optimize>
48
- <OutputPath>bin\Release\</OutputPath>
49
- <DefineConstants>TRACE</DefineConstants>
50
- <ErrorReport>prompt</ErrorReport>
51
- <WarningLevel>4</WarningLevel>
52
- <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
53
- </PropertyGroup>
54
- <ItemGroup>
55
- <Reference Include="nunit.framework, Version=2.5.2.9222, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
56
- <SpecificVersion>False</SpecificVersion>
57
- <HintPath>..\..\Tools\NUnit-v2.5\nunit.framework.dll</HintPath>
58
- </Reference>
59
- <Reference Include="System" />
60
- <Reference Include="System.Core">
61
- <RequiredTargetFramework>3.5</RequiredTargetFramework>
62
- </Reference>
63
- <Reference Include="System.Xml.Linq">
64
- <RequiredTargetFramework>3.5</RequiredTargetFramework>
65
- </Reference>
66
- <Reference Include="System.Data.DataSetExtensions">
67
- <RequiredTargetFramework>3.5</RequiredTargetFramework>
68
- </Reference>
69
- <Reference Include="System.Data" />
70
- <Reference Include="System.Xml" />
71
- </ItemGroup>
72
- <ItemGroup>
73
- <Compile Include="FailingTestFixture.cs" />
74
- <Compile Include="Properties\AssemblyInfo.cs" />
75
- </ItemGroup>
76
- <ItemGroup>
77
- <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
78
- <Visible>False</Visible>
79
- <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
80
- <Install>false</Install>
81
- </BootstrapperPackage>
82
- <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
83
- <Visible>False</Visible>
84
- <ProductName>.NET Framework 3.5 SP1</ProductName>
85
- <Install>true</Install>
86
- </BootstrapperPackage>
87
- <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
88
- <Visible>False</Visible>
89
- <ProductName>Windows Installer 3.1</ProductName>
90
- <Install>true</Install>
91
- </BootstrapperPackage>
92
- </ItemGroup>
93
- <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
94
- <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
95
- Other similar extension points exist, see Microsoft.Common.targets.
96
- <Target Name="BeforeBuild">
97
- </Target>
98
- <Target Name="AfterBuild">
99
- </Target>
100
- -->
101
- </Project>