現在完了形の用法には、完了・結果・経験・継続の4つがあります。
現在完了は、現在までに動作などが完了しているという意味を文章に含めたい時に使うものと考えるとよいのではないかと思います。
なので、過去を表す副詞などと一緒に用いることは必然的にできません。
具体的いうと、
「 I have finished my homework yesterday. 」
こんな英文は絶対にありえません。
無理やり訳すとすれば、
「私は昨日宿題を終えました。」
問題なさそうですが、昨日という過去に終えたということになってしまい、現在までに完了したという意味である現在完了形と矛盾してしまうのです。
なので、現在完了形を過去を表す副詞、副詞句などと併用することは不可能なので気を付けてください。
よく間違えやすいものとして、just now (たった今、ついさっき)、when (いつ)などがあります。
上の二つは、過去を表す副詞句、副詞ですから、現在完了形にしてはいけません。過去形などを使います。
その他に現在完了形で注意すべきことといえば、
①have been to~ (~へ行ったことがある。/~へ行ってきたところだ)
②have gone to~ (~へ行ってしまった。)
①は、今は戻ってきているというような意味合いが含まれています。
②は、行ったきり戻ってきていないと考えるとよいです。
これに関して、例えばこんな問題が出たりすることがあります。
My brother went to the book store just now. She does not come back yet.
この英文と同じような意味になるに、( )の中を埋めなさい。
My brother has ( ) to the book store.
解説をすると、
まず、問題文の訳が
「兄はついさっき本屋に行きました。まだ戻ってきていません。」
となるので、
行ったきり戻ってきていないという意味になるように、先ほど②で説明した「have gone to」を用います。
よって、正解は( gone )となります。