C++
はじめに C++の静的解析ツール「cppcheck」でソースコードを静的解析した場合に、以下の警告がでることがあります。 error: Undefined behavior: Variable 'buf' is used as parameter and destination in sprintf(). cppcheckのバージョン v1.89 サンプルプ…
はじめに C言語のプログラムで、獲得したヒープメモリ領域をオーバして書き込んだりすると、検出するのが難しいバグにつながります。 Windows 10 SDKに内包されるgflags.exeを使うと、こうしたヒープメモリ関連のバグを検出することができます。デバッグの理…
はじめに C++ソースプログラムの静的解析ツールCppcheckを使っていて、特定のソースプログラムでsyntaxErrorを吐いて静的解析が止まる事象に陥りました。Shift-JIS のソースで cppcheck が文字例をうまく解釈できないときに実際はエラーでもないのにそう解析…
はじめに マイクロソフト社のMFC DLLの日本語翻訳説明が機械翻訳すぎて言ってることが全然分からないので、google翻訳にしてみました。 docs.microsoft.com 導入文 This article discusses the state data of MFC modules and how this state is updated whe…
はじめに Visual StudioのMFCの設定には以下の2つがあります。 スタティックライブラリでMFCを使用する 共有DLLでMFCを使う この違いについて知らなかったので調べてみました。 ざっくり言うと スタティックライブラリでMFCを使用する 静的リンク 外部のMFC …
はじめに Visual Studioの/GS (バッファーのセキュリティ チェック)とは何なのかまとめてみました。 /GS (バッファーのセキュリティ チェック) プログラミングにおける誤りによって、関数のリターン アドレス、例外ハンドラーのアドレス、または特定の型のパ…
はじめに アプリケーションを動かして、イベントビューアに例外コード: 0xc0000409が出ていたら、アプリケーションのどこかで、スタックバッファオーバランが起きてます。 例外コードの調べ方 例外コードは以下のページで調べることができます。 docs.micros…
はじめに Visual Studioでアセンブリコードを出力する方法です。 Windows10 Visual Studio 2015 Update3 Visual Studioでアセンブリコードを出力する方法 ソリューションのプロパティから「C/C++」→「出力ファイル」→「アセンブリの出力」で「アセンブリコー…
はじめに VC++のコード分析機能でソースコードを静的解析した場合に、以下の警告がでることがあります。 warning C28251: 'WinMain' に対する整合性のない注釈: このインスタンスには 注釈なし が含まれます。 バージョン Visual Studio 2015 Update3 対処方…
はじめに Cppcheckの解析結果をSonarQubeのダッシュボード上に表示させる方法です。事前に対象のソリューションに対して、Cppcheckを行い、結果をXMLファイルへ出力してください。 Cppcheckの解析結果をダッシュボード上に表示させる プロジェクト設定から左…
はじめに この記事は、Cppcheckで静的解析結果をXML形式で出力する方法を書いています。 xmlオプション xmlオプションを指定して、リダイレクト先にファイル名を指定します。 set path=%PATH%"C:\Program Files (x86)\Cppcheck"; cppcheck --xml C:\sonar-sc…
はじめに SonarQubeでC++コードを静的解析してみました。 SonarQube 7.5 SonarQube Scanner 3.3 sonar-cxx Plugin 1.2.1 JRE Version 8 Update 201 ソフトウェアメトリクス統計分析入門―現場エンジニアによる直観的解説と実践ドリルposted with amazlet at 1…
はじめに VC++でファイルハンドルからファイル名などのファイル情報を取り出したい。たとえば、CloseHandleのラッパー関数があって、すべての呼び出し元はこのラッパー関数を使っていたとします。ラッパー関数内でファイルハンドルからファイル情報を取得で…
photo credit: Radar Dish QR Code via photopin (license) はじめに Visual Studio 2015(VC++)でQRコードを生成する方法を記載しています。 環境 Windows 7 Pro 32bit Visual Studio 2015 QRコード生成ライブラリ http://www.psytec.co.jp/freesoft/03/ 準…
はじめに C++の静的解析ツール「cppcheck」でソースコードを静的解析した場合に、以下の警告がでることがあります。 warning: Either the condition 'x' is redundant or there is possible null pointer dereference. cppcheckのバージョン v1.73 サンプル…
はじめに C++の静的解析ツール「cppcheck」でソースコードを静的解析した場合に、以下の警告がでることがあります。 error: Deallocating a deallocated pointer: xxx cppcheckのバージョン v1.72 サンプルプログラム 以下のソースプログラムを解析にかける…
このエントリは古くなっています。 新しい記事はこちら。 replication.hatenablog.com はじめに SonarQubeでC++コードを静的解析してみました。 SonarQubeについては以下の記事をご欄ください。 SonarQubeでプログラムの品質管理をはじめる(概要) - Qiita …
はじめに Visual Studioのコード分析機能を使って、ソースコードの静的解析を行うことができます。 GUIから実行すると複数のソースコードを一度に分析にかけずらいので、コマンドラインから実行できないかと考えました。 環境 Windows 8.1 Ent(32bit) Visual…
はじめに C言語で平日と土日を判定するには、tm_wdayで曜日を表す数値を取り出し、土曜と日曜を平日以外と判定します。 このプログラムは、祝祭日には対応していません。 土日判定プログラム t.tm_wdayを判定して、日曜(0)と土曜(6)はtrueを返します。 bool …
はじめに Visual Studio Community 2013でC++のソースプログラムのリファクタリング(名前変更)を行う方法について書いています。Microsoft Visual Studio Professional 2013 通常版posted with amazlet at 15.05.30マイクロソフト (2013-11-29)売り上げラ…
はじめに C++の静的解析ツール「cppcheck」でソースコードを静的解析した場合に、以下の警告がでることがあります。 error: Common realloc mistake: 'tmp' nulled but not freed upon failure サンプルプログラム #include "stdafx.h" #include <Windows.h> int _tmain</windows.h>…
はじめに 以下のプログラムをコード解析にかけると、C6308 Reallocのリークという警告が出力されます。 C6308 Realloc のリーク 'realloc' は null ポインターを返す可能性があります: null ポインターを、引数として 'realloc' へ渡された 'tmp' に割り当て…
はじめに Visual Studioのコード分析機能を使って、ソースコードの静的解析を行うことができます。 GUIから実行すると複数のソースコードを一度に分析にかけずらいので、コマンドラインから実行できないかと考えました。 環境 Windows 7 Pro(32bit) Visual S…
はじめに GetLastError()のコードからエラーメッセージを取得するサンプルプログラムです。 GetLastError()のコードからエラーメッセージを取得する #include "stdafx.h" #include <Windows.h> int _tmain(int argc, _TCHAR* argv[]) { LPTSTR lpMessageBuffer = NULL; </windows.h>…
はじめに VC++でマルチスレッドプログラミングのサンプルコードを書いてみました。 以下のページに書かれているサンプルプログラムがVS2013にコピーペーストするだけで実行できて、とても参考になりました。マルチスレッドプログラミング スレッドの作成 ス…
はじめに C++の静的解析ツール「cppcheck」でソースコードを静的解析した場合に、以下の警告がでることがあります。 warning: Opposite conditions in nested 'if' blocks lead to a dead code block. cppcheckのバージョン v1.67 サンプルプログラム 以下の…
はじめに C++の静的解析ツール「cppcheck」でソースコードを静的解析した場合に、以下の警告がでることがあります。 warning: Redundant assignment of 'xxx' to itself. cppcheckのバージョン v1.67 サンプルプログラム 以下のソースプログラムを解析にかけ…
はじめに C++の静的解析ツール「cppcheck」でソースコードを静的解析した場合に、以下の警告がでることがあります。 error: Memory is allocated but not initialized: xxx cppcheckのバージョン v1.66 サンプルプログラム 以下のソースプログラムを解析にか…
はじめに C++の静的解析ツール「cppcheck」でソースコードを静的解析した場合に、以下の警告がでることがあります。 (warning) %d in format string (no. 1) requires 'int' but the argument type is 'ULONG {aka unsigned long}'. cppcheckのバージョン v1…
はじめに VC++でOCI(Oracle Call Interface)を使ってOracleに接続して、レコードをselectするコードを書いてみました。 参考にしたのは以下のページです。C言語の勉強3 Oracleデータベース接続 - 日記とかプログラムとか OCI (Oracle Call Interface) 新・門…