小编Mat*_*tin的帖子

是否可以检查共享指针是否在本机单元测试中返回nullptr?

使用Visual Studio 2012本机单元测试时,使用共享指针时无法编译代码.

我的代码:

#include "stdafx.h"
#include "CppUnitTest.h"
#include "ParameterTest.h"

using namespace Microsoft::VisualStudio::CppUnitTestFramework;
using namespace MyParameter;

namespace MyParameterTests
{       
    TEST_CLASS(MyParameterTests)
    {
    public:

        TEST_METHOD(CheckParametersWithPathReturnsNotNull)
        {
            //Arrange
            Parameter parameter = Parameter();

            //Act
            std::shared_ptr<std::string> actual = parameter.CheckParameters("C:\\Parameter.db");

            //Assert
            Assert::IsNotNull(actual, L"Should not return null", LINE_INFO());

        }

    };
}
Run Code Online (Sandbox Code Playgroud)

编译器错误:

2> ------ Rebuild All started:Project:MyParameterTests,Configuration:Debug Win32 ------ 2> stdafx.cpp 2> ParameterTestTests.cpp 2> c:\ users \\ documents\visual studio 2012\projects\myparametertests\parametertests.cpp(26):错误C2784:'void Microsoft :: VisualStudio :: CppUnitTestFramework :: Assert :: IsNotNull(const T*,const wchar_t*,const Microsoft :: VisualStudio :: CppUnitTestFramework :: …

c++ unit-testing visual-studio-2012

4
推荐指数
1
解决办法
1576
查看次数

如何在不违反MISRA C++ 2008要求规则5-2-12的情况下在std :: map中插入项目?

我在PC-Lint(au-misra-cpp.lnt)中收到此错误:

错误1960 :(注意 - 违反MISRA C++ 2008必需规则5-2-12,传递给期望指针的函数的数组类型)

在这段代码上:

_IDs["key"] = "value";
Run Code Online (Sandbox Code Playgroud)

_ID声明为:

std::map<std::string,std::string> _IDs;
Run Code Online (Sandbox Code Playgroud)

也尝试改为:

_IDs.insert("key","value");
Run Code Online (Sandbox Code Playgroud)

但得到同样的错误.

如何让代码符合misra?

c++ misra

1
推荐指数
1
解决办法
913
查看次数

如何在不违反MISRA C++ 2008咨询规则5-2-10的情况下使用std :: transform?

我在PC-Lint中遇到这些错误(au-misra-cpp.lnt):

ConverterUtil.cpp(90):错误864 :(信息 - 涉及变量'transformValue'的表达式可能取决于评估顺序[ MISRA C++规则5-2-10 ])

ConverterUtil.cpp(90):错误864 :(信息 - 涉及变量'transformValue'的表达式可能取决于评估顺序[ MISRA C++规则5-2-10 ])

ConverterUtil.cpp(90):错误534 :(警告 - 忽略函数'std :: transform(std :: _ St​​ring_iterator >>,std :: _ St​​ring_iterator >>,std :: _ St​​ring_iterator >>,int(*))的返回值(int))'(与第998行,文件C:\ Program Files(x86)\ Microsoft Visual Studio 11.0\VC\include\algorithm)比较[MISRA C++规则0-1-7和8-4-6],[ MISRA C++规则0-3-2])

在这段代码上:

/**Conversion from std::string to bool*/
bool ConverterUtil::ConvertStdStringToBool(const std::string value)
{
    std::string transformValue = value;
    bool retValue = false;

    std::transform(transformValue.begin(), transformValue.end(), transformValue.begin(), &::tolower);


    if(transformValue == std::string(static_cast<const char *>("true")))
    {
        retValue = true;
    }

    return retValue;
}
Run Code Online (Sandbox Code Playgroud)

我猜测它不喜欢我在转换中使用相同的std :: …

c++ misra

1
推荐指数
1
解决办法
962
查看次数

标签 统计

c++ ×3

misra ×2

unit-testing ×1

visual-studio-2012 ×1