0

metric.xml で定義されたクエリに基づいて、クラスが宣言するメソッドの数を把握しようとします。

MATCH
    (t:Type:File)-[:DECLARES]->(m:Method)
WHERE 
    t.fqn=~'.*MyException'
RETURN
    t.fqn as Type, COUNT(m) as MethodCount

41です。

クエリを次のように変更します

MATCH
    (t:Class:File)-[:DECLARES]->(m:Method)
WHERE
    t.fqn=~'.*MyException'
RETURN
    t.fqn as Type, COUNT(m) as MethodCount

同じクラスで25点です。同じ結果ではないでしょうか。クラスを開いて手で数えると、23 しか見つかりません。では、クラスまたは型がメソッドを「宣言」するとはどういう意味でしょうか? :Type または :Class に応じて、いくつかの継承されたメソッドもカウントされるようです。そして、継承されたメソッドなしでクラス自体によって宣言されたメソッドの「実際の」数を取得するにはどうすればよいですか?

4

3 に答える 3

1

根本的な原因は、同じ例外タイプが 1 つのアーティファクトに含まれており、他のノードで必要とされているため、複数のノードとして使用できる可能性が非常に高いことです。「実際の」ノードを見つけるには、次のクエリを使用します。

MATCH
  (:Artifact)-[:CONTAINS]->(t:Type)-[:DECLARES]->(m:Method)
WHERE
  t.fqn=~'.*MyException'
RETURN
  t.fqn as Type, COUNT(m) as MethodCount
于 2016-06-14T12:38:25.637 に答える
0

最初のクエリは、同じ fqn を持つ複数のタイプ ノードを検索し、結果を集計します。return 句に id(t) を追加するだけで、それが表示されます。

于 2016-06-14T11:29:15.060 に答える