2017-02-23 10 views
0

コンテキスト:私は現在、Githubの何千ものプロジェクトのビルドに関する情報を得るためにTravis APIを掘り起こす必要のあるリサーチツールに取り組んでいます。プロジェクトがビルドツールとしてMavenまたはGradleを使用しているかどうかを認識する最善の方法を見つけたいと思います。regexpを使用してTravisログからMavenとGraleを区別する方法

私はトラヴィスからログを取得するには、ビルドし、それらを解析し、今の私には、Mavenのための次のパターンを使用しています:

^(-------------------------------------------------------|\[INFO\] Reactor Summary:)$ 

とGradleのために、この1:

^(:[\w-]+)?:test[\w-]*$ 

問題を私が発見されましたそれらの正規表現に適合しない毎日の新しいプロジェクト:次に、偽陽性のない最大限のプロジェクトを見つけるためにそれらを改善する考えはありますか?

編集:私は主にテストを開始するプロジェクトに興味があります。そのため、それらの正規表現から始めました。

+0

だが、 'INFO'' test'と '炉Summary'が固定されていますか? – m87

+0

最初に、私は主にテストを開始するプロジェクトに興味があることを正確に述べなければなりません。そして、率直に言って私はほとんどの経験で正規表現に進んでいました。私が遭遇するほとんどのMavenログは静かなモードでmavenを起動した場合を除いて[INFO] Reactor Summary行を持っています。また、gradleの場合、プロジェクトのほとんどにいくつかのテストタスクがあり、プレフィックスは "test"です。 –

+0

ログを解析する理由...なぜプロジェクトを分割しないのですか? – khmarbaise

答えて

0

これは

をGradleのためにMavenの切り替えプロジェクトはおそらく、あなたが

    を言う正規表現を持っている可能性が...あなたに役に立つかもしれません
  • "gradle"または "gradlew"の前にログに "mvn"が表示されている場合は、それがmavenですプロジェクト
  • "のGradle" または "gradlew" は "MVN" の前に表示された場合、それはGradleのプロジェクト
+0

ありがとうございます。問題は、私が調べるプロジェクトの中に、名前に "gradle"や "mvn"をつけることができることです:これらのコマンドでregexpを使うのはずっと難しいです... –

+0

私はあなたが何をしているのか推測します。 'build.gradle'ファイルがあり、' pom.xml'がない場合は、それがグラデルビルドであると想定するのは安全だと思います(その逆もあります)。 –

+0

しかし、私はGH APIを使用する必要があることを検出するか、プロジェクトをクローンする必要があります。私は何千ものプロジェクトでそれをしたくありません... 私はそれが推測だと思う、私はそれを最適化したい:) –

関連する問題