A Static Code Smell Detector for SQL Queries Embedded in Java Code #--Java 2025年03月02日 公開されているA Static Code Smell Detector for SQL Queries Embedded in Java Codeのキモ部分を読んで、勉強してみたいと思います。間違いなどあたら、ごめんなさい概要データベースは情報システムの中で、中心的な役割を果たしている。データそのものに加え、データ操作、すなわりアプリケーションと、データベースの連携もまた重要である。データベースとアプリケーションの連携のレイヤは、信頼性が高く、効率が良いものである必要がある。SQLは、データベースの操作の主要言語であり、アプリケーションの中に、Query Stringを埋め込むことが、よく行われる。しかし、Javaを含む多くの言語では、組み込みqueryは、複数の操作に変換されることが多く、データベースへ最終的に送られるSQLが開発者によく分からないことがある。そのため、この部分が、falut-proneであったり、データベースの非効率な利用すなわち、code smellになることがある。この論文では、Javaに埋め込まれているcode smellを識別するツールを示す。このツールは、SQL文の静的解析とデータベースのスキーマ、データを組み合わせて分析する。Javaのコードから、SQLコードを抽出するアルゴリズムを使い、SQLのパーサーを利用し、code smellを検出する発見器を実装する。1.概要複雑で規模の大きな情報システムの中で、データベースは中心的な役割を示す。データベースには、クリティカルな役割が多く、可用性や応答時間に大きな影響を示す。アプリケーションとデータベースは、相互に依存するが、独立して進歩してきたため、データベースを操作するコードの複雑性は、増加した。一方、この機能の信頼性、堅牢性、効率は大変重要である。SQLは、データベースとのやり取りを行う最も広く使われている方法である。調査では、SQLは、2番目に人気がある。1番目は、JavaScriptで、3番目は、Javaである。ポピュラーなデータベースアクセス技術もSQLに依存している。例えば、Java用のORマッパー Hibernateは、JDBCを使い、内部では、SQLを利用している。GitHubのプロジェクトの調査では、Javaプロジェクトでは、JDBC ,Hibernate, JPAがデータベースとのコミュニケーションに広く使われ、中でもJDBCが高い割合で使われていた。データベースへのアクセス技術は、多くの点で開発者を助ける。Javaのクラスとデータベースのエンティティ間のリンク(ORM)、クエリーの再利用(prepared statement)などである。しかし、開発者はデータベースへ実際に送られるSQLが分からなくなる。最悪の場合、正しくない、あるいは、非効率的なデータベースの利用につながる(code smell)。コードに組み込まれたqueryを分析することは、困難ではあるが、便益も多い。このために、静的な解析が行われる。これは(1)アプリケーションのコードから、Queryを抽出する(2)smellを識別することが行われる。 PR