Sider Scan によって検出されたバグの例

著名オープンソースのコードから抜粋

おそらくコピペされたと思われる、2つの異なるファイル間の重複コード。オリジナルと思われる右では"cdev_count” に対する処理、左では同一のロジックで"z_count" に対する処理を行っているが、cdev_count を修正するのを忘れている。正常系では問題がないが、エラーメッセージが全く別のクラスのものになってしまっている。


左右の重複コードブロックを見比べた際に、明らかにインスタンス名がずれている(s8 とs10)。$carry8 の値が意図しないものになってしまっている可能性が高い。また、自動生成されたようなコードの連続(3003行)のため、人間のレビューでは間違いに気づきにくい。


"uninstall" と"install" の類似コード。しかし左側のコード の60行目の console.log は、エラー出力のため、console.error でなければならない。コミュニティに指摘したところ、バグと認定され修正された。このように、純粋な重複コードではなくても、同じような手続きが必要なコードブロックで一貫性の無いコードが存在する場合、指摘を得ることができる。


  • OSS: Apache Kafka
  • 概要: 分散データストリーミング・プラットフォーム
  • 言語: Java, Scala
  • リポジトリ: https://github.com/apache/kafka

WindowsStoreBuilder クラスをコピーしてTimeOrderWindowsStoreBuilder クラスを作成したものと考えられる。左側のコード の30行目で、コピー元のクラス名のまま変更を忘れてしまっている。このままでは、 TimeOrderWindowsStoreBuilder クラスのログを追うことができない。この指摘を報告したところ、Kafka コミュニティに確かにバグであると確認され、現在は修正されている。


  • OSS: Khronos グループ SPIR-V Tools
  • 概要: 並列計算およびグラフィックスの中間言語SPIR-Vを処理するためのツール群
  • 言語: C++, Go
  • リポジトリ: https://github.com/KhronosGroup/SPIRV-Tools

同一ファイル内での修正漏れバグ。行(Row) に対する処理と全く同じ処理を列(Column) に対して行うため、コードをコピーしたものと考えられるが、599行目のrows_id が残ってしまっていてバグとなっている。列のIDをメッセージで出力するところ、行のIDを返してしまっている。このバグを報告したところ、Khronos Group のメンテナー に"Looks like a copy-paste problem." と認められ、現在は修正されている。


同一ファイル内での指摘。ファイル内部の引数で他の箇所は全て”query” が使われているが、62行目と63行目の2箇所だけ引数が “t” のまま放置されていて一貫性がとれていない。バグではないが、可読性や保守性を考えるとquery に修正しておいた方が良い。実際、その点をコミュニティに報告したところ認められ、現在は修正がマスターブランチに反映されている。

無料でダウンロード!

サポート言語:Java/JavaScript/TypeScript/PHP/C/C++/C#/Swift/Ruby/CUDA

Mac版 
Windows版

エンドユーザライセンス契約書

このアプリケーションは、ユーザのPC内で実行されソースコードを含め、お客様固有の情報を外部に送信することはありません。最新バージョンの有無の確認と、アプリケーションの利用時間の確認のためだけに、Sider 社が管理するサーバーと通信します。