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


8

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

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

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


2
7-zipのメンテナーに手紙を書いて、彼に聞いてください...
フェデリコクレズカロカ

+1:あなたは自分自身に素晴らしい挑戦を設定しました。学校の外では、多くのプログラミングは、機能を追加したりバグを修正したりするために他の人が書いたコードでの作業を伴います。また、他のプログラマがどのように処理したかを確認することで、多くのことを学ぶことができます。
ボブマーフィー、

@suryak:7-Zipソースコードでは、コア圧縮アルゴリズムのみがCで記述されています。それ以外はすべてC ++で記述されています。
rwong 2011

回答:


9

ここに1つの提案があります:
機能の要求:一時フォルダーからの「コピー」の代わりに「移動」を使用してください-ID:1615140

7-zipでファイルを解凍するときに、「コピー」ではなく「移動」を使用するように7-zipの動作を変更できますか。問題は、シングルHDDシステムと大きなファイルです。これにより、処理速度が大幅に向上します。WinRARは今それを行います。

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

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

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

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

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

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

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

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

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


3

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


3

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

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

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

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


2

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

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.