私の仕事は、Python コードのコード フラグメントのインストルメンテーションに関連しています。したがって、私の仕事では、別のpythonファイルを入力として受け取り、スクリプトで必要な場所に必要なコードを挿入するように、pythonでスクリプトを作成します。
次のコードは、インストルメントするファイルのサンプル コードです。
A.py #normal un-instrumented code
statements
....
....
def move(self,a):
statements
......
print "My function is defined"
......
statements
......
私のスクリプトが実際に行うことは、A.pyの各行をチェックすることであり、「def」がある場合、コードフラグメントがdef関数のコードの上にインストルメントされます
次の例は、最終的な出力がどのようになるべきかを示しています。
A.py #instrumented code
statements
....
....
@decorator #<------ inserted code
def move(self,a):
statements
......
print "My function is defined"
......
statements
......
しかし、私は異なる出力をもたらしました。次のコードは、私が得ている最終出力です:
A.py #instrumented コード
statements
....
....
@decorator #<------ inserted code
def move(self,a):
statements
......
@decorator #<------ inserted code [this should not occur]
print "My function is defined"
......
statements
......
インストルメント化されたコードでは、「定義済み」という単語の「def」が認識されるため、その上のコードがインストルメント化されることがわかります。
実際には、インストルメント化されたコードにはこれらの問題がたくさんあり、指定された python ファイルを適切にインストルメント化できませんでした。実際の「def」を文字列と区別する他の方法はありますか?
ありがとうございました