は、私は特定の名前を持つ指定されたディレクトリに再帰的にファイルのJavaテストファイルを見つけるために、Groovyでスクリプトを書いて、コードの関係部分は次のとおりです。Groovyが私のファイルを見つけることができないのはなぜですか?
def projectRootDirectory = args.length ? new File(args[0]) : new File(System.getProperty("user.dir"))
def srcFilesCount = 0, testFilesCount = 0, srcLinesCount=0, testLinesCount=0
def srcFileSubstringPattern = '.java'
def testFileSubstringPattern = 'Test.java'
projectRootDirectory.eachDirRecurse() { dir ->
dir.eachFile {
if (it.name.endsWith(testFileSubstringPattern) || it.name ==~ /Test.*java/ ||
it.name.endsWith('Tests.java') || it.name.endsWith('TestCase.java')) {
//println "Test file found: " + it.name
testFilesCount++
it.eachLine { testLinesCount++ }
} else if (it.name.contains(srcFileSubstringPattern)) {
srcFilesCount++
it.eachLine { srcLinesCount++ }
}
}
}
それ見つけ用いてクローニングしたレポですでに既存のファイルSVNは例えばsomeTestCase.java
と一致しますが、Windows 7のCygwinまたはWindows 7のエクスプローラright click -> New -> Text Document
オプションを使用してtouch dummyTestCase.java
コマンドを使用して新しいものを作成し、TestDummy.java
のような名前に変更しても、新しい名前を見つけられません。このスクリプトはまた、それぞれのファイルのコピーを同じ方法で扱う。すなわち、既に存在する古いファイルのコピーを見つけるが、私が作成した新しいファイルはコピーしない。私は新しく作成されたファイルに対しては最大限のファイル権限を開いていましたが、変更はありませんでした。 Cygwin経由のBASH find
コマンドは、常に問題なくすべてのファイルを検索します。スクリプトが正しいディレクトリで探している診断印刷ステートメントを使用して確認しました。私は、スクリプトでいくつかのファイルを作成し、正しい場所に作成されたことを確認することでこれを確認しました。
あなたの発見ファイルのコードを表示できますか? – aristotll
ディレクトリからファイルをロードするコードを記述できますか?大文字小文字に問題がなければ、通常は上記の問題はありません。 –
@aristotllもっとコードを表示するために質問を編集します。 –