web-dev-qa-db-ja.com

オープンソースソフトウェアのバグの修正を開始するにはどうすればよいですか?

私はCプログラミングの知識が豊富で、Cで開発されたオープンソースプロジェクトに貢献したい学生です。SourceForgeを検索し、7-Zipを選択しました。

私はまずバグを修正することから始めようと考え(ウェブサイトで多くの人から提案されました)、いくつかのバグを経験しましたが、バグへの対応方法と修正方法を理解できませんでした。何もわかりませんでした。

これへの取り組み方を説明していただけますか?ダウンロードしたソースコードのファイルをいくつか調べましたが、何も理解できませんでした。

8
suryak

ここに1つの提案があります:
機能リクエスト:一時フォルダからの「コピー」の代わりに「移動」を使用-ID:161514

7-Zipがファイルを解凍するときに、「コピー」ではなく「移動」を使用するように7-Zipの動作を変更できますか?問題は単一のHDDシステムと大きなファイルにあり、これは物事を大幅にスピードアップします。 WinRARは今それを行います。

また、このバグを例として取り上げた理由を説明します。

このプロジェクトを選択する前に...

  • このプロジェクトのソースコードに満足していますか?
    • 両方のCコード(主にコア圧縮アルゴリズム)を理解できますか?
    • また、C++コード(ほとんどの「アプリケーション」、GUI、コマンドライン、およびオペレーティングシステムとのすべてのやり取り)
    • また、コーディングスタイル(Win32プログラミングに典型的な、MFC/ATLを使用しない)?
  • このオペレーティングシステムに時間と労力を投資しますか?

最初のステップ:バグを再現できますか?

  • 作業するバグを選択するには、同様のコンピューター環境で問題を再現できる必要があります。
    • このバグでは、(1)tempフォルダーの空き容量が少ない(1〜2 GB)、(2)抽出先がtempと同じドライブにあるコンピューターでテストする必要があります。フォルダ。
  • それを再現するための環境を「セットアップ」するのにどれだけの時間が必要でしたか?
    • 再現と修正が容易なバグを選択してください。
  • バグは本当にバグですか?
    • 常に自分で再現してみてください。他人の言葉だけに頼らないでください。
    • ソフトウェアエンジニア/プログラマーとして、理解の観点からバグの動作を説明できるかどうかを確認してください。時々、ユーザーはソフトウェア/ハードウェアシステムがどのように機能するかについて非現実的な期待を持ち、不可能な機能要求を行うことがあります。
  • 理解を確認するにはどうすればよいですか?ファイルがcopyingであるかmovingであるかをどのようにして確認できますか?
    • Process Monitor のような診断ツールが必要です。また、テストマシンのセットアップを微調整して、さまざまなシナリオをテストすることもできます。

2番目のステップ:この動作の原因となるコードを見つけることができますか?

  • Larry Coleman の回答によると、プロジェクトの大まかな全体的な理解が必要です。
  • ブレークポイントを設定してプログラムのフローを理解できるように、Visual Studio(統合開発環境とデバッガー)を使用しているのが最適です。

3番目のステップ:変更を加え、それがプログラムの動作にどのように影響するかを確認します。

4番目のステップ:変更を同僚/同僚の開発者に提示し、フィードバックを受け取ります。

9
rwong

バグの修正は、最も簡単なことではないかもしれません。もちろん、新しい機能を追加するよりも簡単です。しかし、ドキュメントの更新や新しいリリースのテストはさらに簡単です。これらの両方により、コードに慣れることができるため、バグを修正するのに十分な知識を得ることができます。また、コードについて学ぶことで、他の人を助ける目的の感覚を得ることができます。

3
Jeanne Boyarsky

私の意見では、オープンソースの人々に貢献したいという野心を持つ多くの人々が見落としている非常に重要なことは、オープンソースプロジェクトの他の開発者とのcommunicationです。

オープンソースプロジェクトに貢献したい場合、最初にすべきことは、プロジェクトで起こっていることをフォローすることです。メーリングリスト、フォーラム、Googleグループ、または開発者が通信するその他の方法がある場合は、そこに参加してください。最も貢献が必要な貢献を見つけます。ソフトウェアの仕組みなどについて質問します。

ソースコードをダウンロードするだけの場合は、自分でそれをすべて理解しようとすると、さらに多くの時間がかかります。何かを修正したり、新しい機能を追加した後に突然それを提示したりすると、受け入れられる可能性は低くなります。

そのため、他の開発者と話し合って、最も優先度の高いバグや不足している機能などを見つけてください。

3
Jesper

ダウンロードしたソースコードのファイルをいくつか調べましたが、何も理解できませんでした。

これは修正すべき最初のバグです。バグの修正を始める前に、コードベースを理解する必要があります。そうでなければ、あなたの修正が何か他のものを壊すかどうかあなたはどうやって知るのですか?

参加しているプロジェクトのコードに慣れる方法はいくつかあります。私のお気に入りの方法は、すべてのコードを一度読んだ後、戻ってセクションをより詳細に調べることです。

2
Larry Coleman