2016-12-21 4 views
0

私はこのドメインをあまり知らない。しかし、ASTを取得するのにquoteを使用できるかどうかは、ASTを使用してコードの類似性を測定できますか?私たちがFine-Grained Reuseをやりたければ、コードの類似性を示すアナライザーを用意することができれば幸いです。エリクサーのコードの類似性を測定する方法はありますか?

+2

コードの類似性を検出する方法はたくさんあります(https://softwareengineering.stackexchange.com/questions/5748/are-there-tools-to-determine-code-similarity/85190を参照)。エリクサーに限られる –

+0

ありがとう、私はこれをチェックします。 – ShallmentMo

答えて

1

ASTタプルを比較して類似しているかどうかを判断するのは比較的簡単です。私はそれがどのようにコードの再利用に役立つか分からない。

私はElixirのデータ構造が類似のさまざまな定義のために似ているかどうかを判断するためのライブラリを作成しました。類似したの

https://github.com/philosophers-stone/phenetic

私の定義は、収集条件の限られたセットの中の用語の基本的なタイプに集中する傾向があります。すなわち、Atomsのリストを値として有するA Mapである。しかし、私は単純なコード例でそれを使用しました。

test "congruent quote do output" do 
    data = quote do: Enum.map(1..3, fn(x) -> x*x end) 
    data_transform = quote do: Enum.map(1..3, fn(y) -> y*y end) 
    congruent = PhStPhenetic.congruent(data) 
    assert true == congruent.(data_transform) 
end 

これは主に、再構成をコードする特定のアプリケーションではなく、複雑なネストされた構造で動作することを保証することでした。

+0

コードを再利用することがどのように役立つかわかりません。私はちょうど2つの機能が似ている場合は、1つに結合することができると思いますか? – ShallmentMo

+0

私はグーグルファイングレインリユースをグーグルで探そうとしており、主にOO言語に焦点を当て、複数のオブジェクトに同じメソッドを実装している場合はリファクタを提案しているようです。私はエリクサーにどのように直接的に当てはまるかはわかりません。 –

+0

私はこれについてあまりよく分かりません。たぶん私は間違っています。 – ShallmentMo

関連する問題