小さい頃はエラ呼吸

いつのまにやら肺で呼吸をしています。


C++

Visual Studioの/GS (セキュリティチェック)とは何なのか

C++

はじめに Visual Studioの/GS (バッファーのセキュリティ チェック)とは何なのかまとめてみました。 /GS (バッファーのセキュリティ チェック) プログラミングにおける誤りによって、関数のリターン アドレス、例外ハンドラーのアドレス、または特定の型のパ…

例外コード: 0xc0000409はSTATUS_STACK_BUFFER_OVERRUN

C++

はじめに アプリケーションを動かして、イベントビューアに例外コード: 0xc0000409が出ていたら、アプリケーションのどこかで、スタックバッファオーバランが起きてます。 例外コードの調べ方 例外コードは以下のページで調べることができます。 docs.micros…

Visual Studio 2015でアセンブリコードを出力する方法

c++

はじめに Visual Studioでアセンブリコードを出力する方法です。 Windows10 Visual Studio 2015 Update3 Visual Studioでアセンブリコードを出力する方法 ソリューションのプロパティから「C/C++」→「出力ファイル」→「アセンブリの出力」で「アセンブリコー…

warning C28251: 'WinMain' に対する整合性のない注釈: このインスタンスには 注釈なし が含まれます。

c++

はじめに VC++のコード分析機能でソースコードを静的解析した場合に、以下の警告がでることがあります。 warning C28251: 'WinMain' に対する整合性のない注釈: このインスタンスには 注釈なし が含まれます。 バージョン Visual Studio 2015 Update3 対処方…

SonarQubeとCppcheckを連携させる

C++

はじめに Cppcheckの解析結果をSonarQubeのダッシュボード上に表示させる方法です。事前に対象のソリューションに対して、Cppcheckを行い、結果をXMLファイルへ出力してください。 Cppcheckの解析結果をダッシュボード上に表示させる プロジェクト設定から左…

Cppcheckで静的解析結果をXML形式で出力する

C++

はじめに この記事は、Cppcheckで静的解析結果をXML形式で出力する方法を書いています。 xmlオプション xmlオプションを指定して、リダイレクト先にファイル名を指定します。 set path=%PATH%"C:\Program Files (x86)\Cppcheck"; cppcheck --xml C:\sonar-sc…

SonarQube7.5でC++コードを静的解析してみる

C++

はじめに 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…

ファイルハンドルからファイル名などの情報を取得したい

C++

はじめに VC++でファイルハンドルからファイル名などのファイル情報を取り出したい。たとえば、CloseHandleのラッパー関数があって、すべての呼び出し元はこのラッパー関数を使っていたとします。ラッパー関数内でファイルハンドルからファイル情報を取得で…

Visual Studio 2015(VC++)でQRコードを生成する

c++

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/ 準…

【cppcheck】warning: Either the condition 'x' is redundant or there is possible null pointer dereference

c++

はじめに C++の静的解析ツール「cppcheck」でソースコードを静的解析した場合に、以下の警告がでることがあります。 warning: Either the condition 'x' is redundant or there is possible null pointer dereference. cppcheckのバージョン v1.73 サンプル…

【cppcheck】error: Deallocating a deallocated pointer: xxx

c++

はじめに C++の静的解析ツール「cppcheck」でソースコードを静的解析した場合に、以下の警告がでることがあります。 error: Deallocating a deallocated pointer: xxx cppcheckのバージョン v1.72 サンプルプログラム 以下のソースプログラムを解析にかける…

SonarQubeでC++コードを静的解析してみる

C++

このエントリは古くなっています。 新しい記事はこちら。 replication.hatenablog.com はじめに SonarQubeでC++コードを静的解析してみました。 SonarQubeについては以下の記事をご欄ください。 SonarQubeでプログラムの品質管理をはじめる(概要) - Qiita …

【VS2015】コマンドラインからcl.exeのコード分析(/analyze)を利用する

C++

はじめに Visual Studioのコード分析機能を使って、ソースコードの静的解析を行うことができます。 GUIから実行すると複数のソースコードを一度に分析にかけずらいので、コマンドラインから実行できないかと考えました。 環境 Windows 8.1 Ent(32bit) Visual…

C言語で平日と土日を判定する

C++

はじめに C言語で平日と土日を判定するには、tm_wdayで曜日を表す数値を取り出し、土曜と日曜を平日以外と判定します。 このプログラムは、祝祭日には対応していません。 土日判定プログラム t.tm_wdayを判定して、日曜(0)と土曜(6)はtrueを返します。 bool …

Visual Studio 2013でリファクタリングを行う方法

C++

はじめに Visual Studio Community 2013でC++のソースプログラムのリファクタリング(名前変更)を行う方法について書いています。Microsoft Visual Studio Professional 2013 通常版posted with amazlet at 15.05.30マイクロソフト (2013-11-29)売り上げラ…

【cppcheck】error: Common realloc mistake: 'tmp' nulled but not freed upon failure

c++

はじめに 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のリーク

C++

はじめに 以下のプログラムをコード解析にかけると、C6308 Reallocのリークという警告が出力されます。 C6308 Realloc のリーク 'realloc' は null ポインターを返す可能性があります: null ポインターを、引数として 'realloc' へ渡された 'tmp' に割り当て…

コマンドラインからcl.exeのコード分析(/analyze)を利用する

C++

はじめに Visual Studioのコード分析機能を使って、ソースコードの静的解析を行うことができます。 GUIから実行すると複数のソースコードを一度に分析にかけずらいので、コマンドラインから実行できないかと考えました。 環境 Windows 7 Pro(32bit) Visual S…

【VC++】GetLastError()のコードからエラーメッセージを取得する

C++

はじめに GetLastError()のコードからエラーメッセージを取得するサンプルプログラムです。 GetLastError()のコードからエラーメッセージを取得する #include "stdafx.h" #include <Windows.h> int _tmain(int argc, _TCHAR* argv[]) { LPTSTR lpMessageBuffer = NULL; </windows.h>…

VC++で作るマルチスレッドと排他制御のサンプルプログラム

はじめに VC++でマルチスレッドプログラミングのサンプルコードを書いてみました。 以下のページに書かれているサンプルプログラムがVS2013にコピーペーストするだけで実行できて、とても参考になりました。マルチスレッドプログラミング スレッドの作成 ス…

【cppcheck】warning: Opposite conditions in nested 'if' blocks lead to a dead code block.

c++

はじめに C++の静的解析ツール「cppcheck」でソースコードを静的解析した場合に、以下の警告がでることがあります。 warning: Opposite conditions in nested 'if' blocks lead to a dead code block. cppcheckのバージョン v1.67 サンプルプログラム 以下の…

【cppcheck】warning: Redundant assignment of 'xxx' to itself.

c++

はじめに C++の静的解析ツール「cppcheck」でソースコードを静的解析した場合に、以下の警告がでることがあります。 warning: Redundant assignment of 'xxx' to itself. cppcheckのバージョン v1.67 サンプルプログラム 以下のソースプログラムを解析にかけ…

【cppcheck】error: Memory is allocated but not initialized: xxx

C++

はじめに C++の静的解析ツール「cppcheck」でソースコードを静的解析した場合に、以下の警告がでることがあります。 error: Memory is allocated but not initialized: xxx cppcheckのバージョン v1.66 サンプルプログラム 以下のソースプログラムを解析にか…

【cppcheck】(warning) %d in format string (no. 1) requires 'int' but the argument type is 'ULONG {aka unsigned long}'.

C++

はじめに 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 DBに接続するコード書いたよ。

C++

はじめに VC++でOCI(Oracle Call Interface)を使ってOracleに接続して、レコードをselectするコードを書いてみました。 参考にしたのは以下のページです。C言語の勉強3 Oracleデータベース接続 - 日記とかプログラムとか OCI (Oracle Call Interface) 新・門…

【cppcheck】(warning) sprintf format string requires 1 parameter but 2 are given.

C++

はじめに C++の静的解析ツール「cppcheck」でソースコードを静的解析した場合に、以下の警告がでることがあります。 (warning) sprintf format string requires 1 parameter but 2 are given. cppcheckのバージョン v1.66 サンプルプログラム 以下のソースプ…

【cppcheck】(style) Clarify calculation precedence for '+' and '?'.

C++

はじめに C++の静的解析ツール「cppcheck」でソースコードを静的解析した場合に、以下の警告がでることがあります。 (style) Clarify calculation precedence for '+' and '?'. cppcheckのバージョン v1.66 サンプルプログラム 以下のソースプログラムを解析…

【cppcheck】error: Undefined behavior: Variable 'xxx' is used as parameter and destination in s[n]printf().

C++

はじめに C++の静的解析ツール「cppcheck」でソースコードを静的解析した場合に、以下の警告がでることがあります。 error: Undefined behavior: Variable 'xxx' is used as parameter and destination in s[n]printf(). cppcheckのバージョン v1.66 サンプ…

(warning) The 2nd memset() argument '8224' doesn't fit into an 'unsigned char'.

C++

はじめに C++の静的解析ツール「cppcheck」でソースコードを静的解析した場合に、以下の警告がでることがあります。 (warning) The 2nd memset() argument '8224' doesn't fit into an 'unsigned char'. cppcheckのバージョン v1.66 サンプルプログラム 以下…

【C++】構造体のサイズとバイトアライメント

C++

はじめに 構造体のサイズとアライメントについて過去にハマッたことがあったので、まとめてみました。 構造体のサイズ 次のような構造体があった場合、ST_TESTのbyte数は1+4+1の6byteと思いきや、Windows 32bitの場合12byteになります。 これはメモリ上にメ…