バグ:文字列のコピーでやりがちな・・・

Posted: 2012年11月25日

文字列のコピーでよく指摘されているバグを紹介します。
よく指摘されているため、C言語または、C++等を使用している場合は、問題無いですが
久々に使用した時に書いてしまうこともあります。

プログラムプログラム:

 #include  <stdio.h>
 #include <stdlib.h>

 int main(int argc, char *argv[])
 {
    TCHAR szSrc = _T("12345");
    TCHAR szDest[5];

    // 文字列のコピー
    _tcscpy(szDest, szSrc);

    // 処理

    return 0;
 }

このプログラムにどのような文字列のコピーのバグがあると思いますか?



カテゴリー: バグ, プログラム | タグ: , , | コメント無し »

バグ:COM用文字列型(BSTR)の扱い

Posted: 2012年11月18日

COM用文字列型(BSTR)の扱いでよく書いてしまうバグを紹介します。
ちなみに、COMとは、Component Object Modelの略であり、再利用可能なソフトウェア コンポーネントを作成するための仕様です。
よく関わるものは、msxmlでxmlを操作する際に使用します。(msxmlがcomでできているため)

プログラムプログラム:

 #include  <stdio.h>
 #include <stdlib.h>

 int main(int argc, char *argv[])
 {
    BSTR strSrc = ::SysAllocString(L"12345");
    CString strDest = (LPCTSTR)(_bstr_t)strSrc ;

    // 処理

    return 0;
 }

このプログラムにどのような文字列変換関連のバグがあると思いますか?



カテゴリー: バグ, プログラム | タグ: , , , , | コメント無し »

ユニットテストでは何をテストするか

Posted: 2012年11月11日

テストをしたい項目は山のように存在する
ユニットテストではどのようなテストが可能であり
また、どのように構築していくべきか



カテゴリー: バグ, ユニットテスト | タグ: , , | コメント無し »

バグ:文字列の文字コード変換

Posted: 2012年11月08日

文字列の文字コード変換する際によく書いてしまうバグを紹介します。

プログラムプログラム:

 #include  <stdio.h>
 #include <winnls.h>

 int main(int argc, char *argv[])
 {
    CString strSrc = _T("あいうえお12345");
    WCHAR szDest[128];

    // 変換
    ::MultiByteToWideChar(CP_THREAD_ACP, 0, strSrc, strSrc.GetLength(), szDest, sizeof(szDest));

    //
    // 処理
    //

    return 0;
 }

このプログラムにどのような文字列の文字コード変換関連のバグがあると思いますか?



カテゴリー: バグ, 文字コード | タグ: , , , , | コメント無し »

テストの自動化は、無敵の用心棒のように思える

Posted: 2012年11月03日

テストの自動化は、様々な方法が存在します。

  • ユニットテストの導入
  • マウスとキーボード入力の自動化



カテゴリー: バグ, ユニットテスト | タグ: , , , | コメント無し »

バグ:文字列の変換

Posted: 2012年10月29日

文字列の変換する際によく書いてしまうバグを紹介します。

プログラムプログラム:

 #include  <stdio.h>
 #include <stdlib.h>

 int main(int argc, char *argv[])
 {
    CString strSrc = _T("12345");
    int nData = 0;

    // 変換
    nData = _ttoi(strSrc);
    if (nData == 0) {
        // エラー
        return 1;
    }

    return 0;
 }

このプログラムにどのような文字列変換関連のバグがあると思いますか?



カテゴリー: バグ, プログラム | タグ: , , , | 2 コメント »

バグ:文字列のコピー

Posted: 2012年10月23日

文字列のコピーする際によく書いてしまうバグを紹介します。

プログラムプログラム:

 #include  <stdio.h>
 int main(int argc, char *argv[])
 {
    CString strSrc = _T("12345あいうえおかきくけこ");
    int nDestSize = strSrc.GetLength() + 1;
    TCHAR *pszDest = new TCHAR[nDestSize];

    // 文字列のコピー
    _tcscpy_s(pszDest, nDestSize, strSrc );

    return 0;
 }

このプログラムにどのような文字列コピー関連のバグがあると思いますか?



カテゴリー: バグ, プログラム | タグ: , , , | 1 コメント »

バグ:フォルダの移動

Posted: 2012年10月10日

フォルダを移動する際によく書いてしまうバグを紹介します。

プログラムプログラム:

 #include  <stdio.h>
 #include  <Windows.h>

 int main(int argc, char *argv[])
 {
    char *pszDirPath = _T("C:\aaa\bbb\ccc");
    char *pszNewDirPath = _T("D:\aaa\bbb\ddd");

    // フォルダの削除
    if( ::MoveFile(pszDirPath, pszDirPath) == 0 ) {
        return -1;
    }

    return 0;
 }

このプログラムにどのようなフォルダ移動関連のバグがあると思いますか?



カテゴリー: バグ, プログラム | タグ: , , | コメント無し »

バグ:フォルダの削除

Posted: 2012年09月11日

フォルダを削除する際によく書いてしまうバグを紹介します。

プログラムプログラム:

 #include  <stdio.h>
 #include  <Windows.h>

 int main(int argc, char *argv[])
 {
    char *pszDirPath = _T("C:\aaa\bbb\ccc");

    // 処理

    // フォルダの削除
    if( ::RemoveDirectory(pszDirPath) == 0 ) {
        return -1;
    }

    return 0;
 }

このプログラムにどのようなフォルダ削除関連のバグがあると思いますか?



カテゴリー: バグ, プログラム | タグ: , , | コメント無し »

バグ:フォルダの作成

Posted: 2012年08月18日

フォルダを作成する際によく書いてしまうバグを紹介します。

プログラムプログラム:

 #include  <stdio.h>
 #include  <Windows.h>

 int main(int argc, char *argv[])
 {
    char *pszDirPath = "C:\aaa\bbb\ccc";

    // フォルダの作成
    if( ::CreateDirectory(pszDirPath, NULL) == 0 ) {
        return -1;
    }

    // 処理

    return 0;
 }

このプログラムにどのようなフォルダ作成関連のバグがあると思いますか?



カテゴリー: バグ, プログラム | タグ: , , , | コメント無し »
Page 5 of 6123456