我试图得到一些关于我们代码的统计数据。这对一个模块来说很好:
function countTestCases($path=$pwd) {
Get-ChildItem $path -Recurse -Include *.java | Where-Object {-not $_.PSIsContainer } | Select-String "extends ComponentTestCase", "extends DatabaseDependentTestcase" | Group-Object Pattern | Select-Object Count
}
但我想在所有模块中运行此命令,以获得如下CSV输出:
module,#ComponentTestCase,#DatabaseDependantTestCase
module1,20,30
module2,12,1
不幸的是如果我加上
| Select-Obejct Count
它不工作(虽然名称)。不知道如何绕过这个没有写太多的代码...
2条答案
按热度按时间9cbw7uwe1#
我找不到更简单的方法,但这似乎是可行的
输出如下
我使用string和int作为我的模式,但是您必须将其替换为您的模式
rekjcdws2#
它工作(至少对我来说)。这可能是因为此数据是右对齐的,而您没有注意到它在控制台的最右侧?此外,您可以使用
Foreach
cmdlet“仅”选择属性值,而不是使用select,例如:Select-Object
创建了一个全新的对象,只包含您从传入对象中选择的属性,所以很多时候它是多余的。另外,我建议在Get-ChildItem
上使用Filter
参数,而不是Include
,因为Fiter
要快得多。