提交 b389c71e 编写于 作者: N nimrodz

Added stricter error checks by the compiler, and adapted all impacted code.

Primarily -
* Added "static" to static functions.
* Added proper signature with "void" to functions without arguments.
* Marked unused arguments with "(void)".
* Removed entirely unused static functions.
* Added "const" to preserve const-correctness.
* Added function prototypes for external functions.
上级 af40e790
......@@ -21,7 +21,26 @@ endif
UNITY_ROOT=../..
C_COMPILER=gcc
CFLAGS=-std=c99
CFLAGS += -Wall
CFLAGS += -Wextra
CFLAGS += -Werror
CFLAGS += -Wpointer-arith
CFLAGS += -Wcast-align
CFLAGS += -Wwrite-strings
CFLAGS += -Wswitch-default
CFLAGS += -Wunreachable-code
CFLAGS += -Winit-self
CFLAGS += -Wlogical-op
CFLAGS += -Wmissing-field-initializers
CFLAGS += -Wno-unknown-pragmas
CFLAGS += -Wjump-misses-init
CFLAGS += -Wstrict-prototypes
CFLAGS += -Wundef
CFLAGS += -Wunsafe-loop-optimizations
CFLAGS += -Wold-style-definition
TARGET_BASE1=test1
TARGET_BASE2=test2
TARGET1 = $(TARGET_BASE1)$(TARGET_EXTENSION)
......
......@@ -3,6 +3,8 @@
char* ThisFunctionHasNotBeenTested(int Poor, char* LittleFunction)
{
(void)Poor;
(void)LittleFunction;
//Since There Are No Tests Yet, This Function Could Be Empty For All We Know.
// Which isn't terribly useful... but at least we put in a TEST_IGNORE so we won't forget
return (char*)0;
......
......@@ -12,18 +12,6 @@ extern void test_IgnoredTest(void);
extern void test_AnotherIgnoredTest(void);
extern void test_ThisFunctionHasNotBeenTested_NeedsToBeImplemented(void);
static void runTest(UnityTestFunction test)
{
if (TEST_PROTECT())
{
setUp();
test();
}
if (TEST_PROTECT() && !TEST_IS_IGNORED)
{
tearDown();
}
}
void resetTest(void);
void resetTest(void)
{
......@@ -36,7 +24,6 @@ int main(void)
{
UnityBegin("test/TestProductionCode2.c");
// RUN_TEST calls runTest
RUN_TEST(test_IgnoredTest, 13);
RUN_TEST(test_AnotherIgnoredTest, 18);
RUN_TEST(test_ThisFunctionHasNotBeenTested_NeedsToBeImplemented, 23);
......
......@@ -14,18 +14,6 @@ extern void test_FunctionWhichReturnsLocalVariable_ShouldReturnTheCurrentCounter
extern void test_FunctionWhichReturnsLocalVariable_ShouldReturnTheCurrentCounterValueAgain(void);
extern void test_FunctionWhichReturnsLocalVariable_ShouldReturnCurrentCounter_ButFailsBecauseThisTestIsActuallyFlawed(void);
static void runTest(UnityTestFunction test)
{
if (TEST_PROTECT())
{
setUp();
test();
}
if (TEST_PROTECT() && !TEST_IS_IGNORED)
{
tearDown();
}
}
void resetTest(void);
void resetTest(void)
{
......@@ -38,7 +26,6 @@ int main(void)
{
UnityBegin("test/TestProductionCode.c");
// RUN_TEST calls runTest
RUN_TEST(test_FindFunction_WhichIsBroken_ShouldReturnZeroIfItemIsNotInList_WhichWorksEvenInOurBrokenCode, 20);
RUN_TEST(test_FindFunction_WhichIsBroken_ShouldReturnTheIndexForItemsInList_WhichWillFailBecauseOurFunctionUnderTestIsBroken, 30);
RUN_TEST(test_FunctionWhichReturnsLocalVariable_ShouldReturnTheCurrentCounterValue, 41);
......
......@@ -21,6 +21,28 @@ endif
UNITY_ROOT=../..
C_COMPILER=gcc
CFLAGS = -std=c99
CFLAGS += -Wall
CFLAGS += -Wextra
CFLAGS += -Werror
CFLAGS += -Wpointer-arith
CFLAGS += -Wcast-align
CFLAGS += -Wwrite-strings
CFLAGS += -Wswitch-default
CFLAGS += -Wunreachable-code
CFLAGS += -Winit-self
CFLAGS += -Wlogical-op
CFLAGS += -Wmissing-field-initializers
CFLAGS += -Wno-unknown-pragmas
CFLAGS += -Wjump-misses-init
CFLAGS += -Wstrict-prototypes
CFLAGS += -Wundef
CFLAGS += -Wunsafe-loop-optimizations
CFLAGS += -Wold-style-definition
CFLAGS += -Wmissing-prototypes
CFLAGS += -Wmissing-declarations
TARGET_BASE1=all_tests
TARGET1 = $(TARGET_BASE1)$(TARGET_EXTENSION)
SRC_FILES1=\
......@@ -41,7 +63,7 @@ all: clean default
default:
# ruby auto/generate_test_runner.rb test/TestProductionCode.c test/test_runners/TestProductionCode_Runner.c
# ruby auto/generate_test_runner.rb test/TestProductionCode2.c test/test_runners/TestProductionCode2_Runner.c
$(C_COMPILER) $(INC_DIRS) $(SYMBOLS) $(SRC_FILES1) -o $(TARGET1)
$(C_COMPILER) $(CFLAGS) $(INC_DIRS) $(SYMBOLS) $(SRC_FILES1) -o $(TARGET1)
./$(TARGET1)
clean:
......
......@@ -3,6 +3,8 @@
char* ThisFunctionHasNotBeenTested(int Poor, char* LittleFunction)
{
(void)Poor;
(void)LittleFunction;
//Since There Are No Tests Yet, This Function Could Be Empty For All We Know.
// Which isn't terribly useful... but at least we put in a TEST_IGNORE so we won't forget
return (char*)0;
......
......@@ -21,7 +21,26 @@ endif
UNITY_ROOT=../..
C_COMPILER=gcc
CFLAGS=-std=c99
CFLAGS += -Wall
CFLAGS += -Wextra
CFLAGS += -Werror
CFLAGS += -Wpointer-arith
CFLAGS += -Wcast-align
CFLAGS += -Wwrite-strings
CFLAGS += -Wswitch-default
CFLAGS += -Wunreachable-code
CFLAGS += -Winit-self
CFLAGS += -Wlogical-op
CFLAGS += -Wmissing-field-initializers
CFLAGS += -Wno-unknown-pragmas
CFLAGS += -Wjump-misses-init
CFLAGS += -Wstrict-prototypes
CFLAGS += -Wundef
CFLAGS += -Wunsafe-loop-optimizations
CFLAGS += -Wold-style-definition
TARGET_BASE1=test1
TARGET_BASE2=test2
TARGET1 = $(TARGET_BASE1)$(TARGET_EXTENSION)
......
......@@ -3,6 +3,8 @@
char* ThisFunctionHasNotBeenTested(int Poor, char* LittleFunction)
{
(void)Poor;
(void)LittleFunction;
//Since There Are No Tests Yet, This Function Could Be Empty For All We Know.
// Which isn't terribly useful... but at least we put in a TEST_IGNORE so we won't forget
return (char*)0;
......
......@@ -12,18 +12,6 @@ extern void test_IgnoredTest(void);
extern void test_AnotherIgnoredTest(void);
extern void test_ThisFunctionHasNotBeenTested_NeedsToBeImplemented(void);
static void runTest(UnityTestFunction test)
{
if (TEST_PROTECT())
{
setUp();
test();
}
if (TEST_PROTECT() && !TEST_IS_IGNORED)
{
tearDown();
}
}
void resetTest(void);
void resetTest(void)
{
......@@ -36,7 +24,6 @@ int main(void)
{
UnityBegin("test/TestProductionCode2.c");
// RUN_TEST calls runTest
RUN_TEST(test_IgnoredTest, 13);
RUN_TEST(test_AnotherIgnoredTest, 18);
RUN_TEST(test_ThisFunctionHasNotBeenTested_NeedsToBeImplemented, 23);
......
......@@ -14,18 +14,6 @@ extern void test_FunctionWhichReturnsLocalVariable_ShouldReturnTheCurrentCounter
extern void test_FunctionWhichReturnsLocalVariable_ShouldReturnTheCurrentCounterValueAgain(void);
extern void test_FunctionWhichReturnsLocalVariable_ShouldReturnCurrentCounter_ButFailsBecauseThisTestIsActuallyFlawed(void);
static void runTest(UnityTestFunction test)
{
if (TEST_PROTECT())
{
setUp();
test();
}
if (TEST_PROTECT() && !TEST_IS_IGNORED)
{
tearDown();
}
}
void resetTest(void);
void resetTest(void)
{
......@@ -38,7 +26,6 @@ int main(void)
{
UnityBegin("test/TestProductionCode.c");
// RUN_TEST calls runTest
RUN_TEST(test_FindFunction_WhichIsBroken_ShouldReturnZeroIfItemIsNotInList_WhichWorksEvenInOurBrokenCode, 20);
RUN_TEST(test_FindFunction_WhichIsBroken_ShouldReturnTheIndexForItemsInList_WhichWillFailBecauseOurFunctionUnderTestIsBroken, 30);
RUN_TEST(test_FunctionWhichReturnsLocalVariable_ShouldReturnTheCurrentCounterValue, 41);
......
......@@ -17,10 +17,12 @@ int (*outputChar)(int) = putchar;
int verbose = 0;
void setUp(void);
void tearDown(void);
void setUp(void) { /*does nothing*/ }
void tearDown(void) { /*does nothing*/ }
void announceTestRun(unsigned int runNumber)
static void announceTestRun(unsigned int runNumber)
{
UnityPrint("Unity test run ");
UnityPrintNumber(runNumber+1);
......@@ -29,7 +31,7 @@ void announceTestRun(unsigned int runNumber)
UNITY_OUTPUT_CHAR('\n');
}
int UnityMain(int argc, char* argv[], void (*runAllTests)(void))
int UnityMain(int argc, const char* argv[], void (*runAllTests)(void))
{
int result = UnityGetCommandLineOptions(argc, argv);
unsigned int r;
......@@ -65,7 +67,7 @@ static int groupSelected(const char* group)
return selected(UnityFixture.GroupFilter, group);
}
static void runTestCase()
static void runTestCase(void)
{
}
......@@ -132,13 +134,13 @@ void UnityIgnoreTest(const char * printableName)
static int malloc_count;
static int malloc_fail_countdown = MALLOC_DONT_FAIL;
void UnityMalloc_StartTest()
void UnityMalloc_StartTest(void)
{
malloc_count = 0;
malloc_fail_countdown = MALLOC_DONT_FAIL;
}
void UnityMalloc_EndTest()
void UnityMalloc_EndTest(void)
{
malloc_fail_countdown = MALLOC_DONT_FAIL;
if (malloc_count != 0)
......@@ -274,7 +276,7 @@ enum {MAX_POINTERS=50};
static PointerPair pointer_store[MAX_POINTERS];
static int pointer_index = 0;
void UnityPointer_Init()
void UnityPointer_Init(void)
{
pointer_index = 0;
}
......@@ -290,7 +292,7 @@ void UnityPointer_Set(void ** pointer, void * newValue)
pointer_index++;
}
void UnityPointer_UndoAllSets()
void UnityPointer_UndoAllSets(void)
{
while (pointer_index > 0)
{
......@@ -301,12 +303,12 @@ void UnityPointer_UndoAllSets()
}
}
int UnityFailureCount()
int UnityFailureCount(void)
{
return Unity.TestFailures;
}
int UnityGetCommandLineOptions(int argc, char* argv[])
int UnityGetCommandLineOptions(int argc, const char* argv[])
{
int i;
UnityFixture.Verbose = 0;
......@@ -360,7 +362,7 @@ int UnityGetCommandLineOptions(int argc, char* argv[])
return 0;
}
void UnityConcludeFixtureTest()
void UnityConcludeFixtureTest(void)
{
if (Unity.CurrentTestIgnored)
{
......
......@@ -13,19 +13,22 @@
#include "unity_fixture_malloc_overrides.h"
#include "unity_fixture_internals.h"
int UnityMain(int argc, char* argv[], void (*runAllTests)(void));
int UnityMain(int argc, const char* argv[], void (*runAllTests)(void));
#define TEST_GROUP(group)\
static const char* TEST_GROUP_##group = #group
#define TEST_SETUP(group) void TEST_##group##_SETUP(void)
#define TEST_SETUP(group) void TEST_##group##_SETUP(void);\
void TEST_##group##_SETUP(void)
#define TEST_TEAR_DOWN(group) void TEST_##group##_TEAR_DOWN(void)
#define TEST_TEAR_DOWN(group) void TEST_##group##_TEAR_DOWN(void);\
void TEST_##group##_TEAR_DOWN(void)
#define TEST(group, name) \
void TEST_##group##_##name##_(void);\
void TEST_##group##_##name##_run(void);\
void TEST_##group##_##name##_run(void)\
{\
UnityTestRunner(TEST_##group##_SETUP,\
......@@ -39,6 +42,7 @@ int UnityMain(int argc, char* argv[], void (*runAllTests)(void));
#define IGNORE_TEST(group, name) \
void TEST_##group##_##name##_(void);\
void TEST_##group##_##name##_run(void);\
void TEST_##group##_##name##_run(void)\
{\
UnityIgnoreTest("IGNORE_TEST(" #group ", " #name ")");\
......@@ -60,7 +64,7 @@ int UnityMain(int argc, char* argv[], void (*runAllTests)(void));
{\
TEST_##group##_GROUP_RUNNER_runAll();\
}\
void TEST_##group##_GROUP_RUNNER_runAll()
void TEST_##group##_GROUP_RUNNER_runAll(void)
//Call this from main
#define RUN_TEST_GROUP(group)\
......
......@@ -29,7 +29,7 @@ void UnityIgnoreTest(const char * printableName);
void UnityMalloc_StartTest(void);
void UnityMalloc_EndTest(void);
int UnityFailureCount(void);
int UnityGetCommandLineOptions(int argc, char* argv[]);
int UnityGetCommandLineOptions(int argc, const char* argv[]);
void UnityConcludeFixtureTest(void);
void UnityPointer_Set(void ** ptr, void * newValue);
......
......@@ -13,4 +13,9 @@
#define realloc unity_realloc
#define free unity_free
void* unity_malloc(size_t size);
void* unity_calloc(size_t num, size_t size);
void* unity_realloc(void * oldMem, size_t size);
void unity_free(void * mem);
#endif /* UNITY_FIXTURE_MALLOC_OVERRIDES_H_ */
......@@ -7,14 +7,14 @@
#include "unity_fixture.h"
static void runAllTests()
static void runAllTests(void)
{
RUN_TEST_GROUP(UnityFixture);
RUN_TEST_GROUP(UnityCommandOptions);
RUN_TEST_GROUP(LeakDetection)
}
int main(int argc, char* argv[])
int main(int argc, const char* argv[])
{
return UnityMain(argc, argv, runAllTests);
}
......
......@@ -158,7 +158,7 @@ TEST_TEAR_DOWN(UnityCommandOptions)
}
static char* noOptions[] = {
static const char* noOptions[] = {
"testrunner.exe"
};
......@@ -171,7 +171,7 @@ TEST(UnityCommandOptions, DefaultOptions)
TEST_ASSERT_EQUAL(1, UnityFixture.RepeatCount);
}
static char* verbose[] = {
static const char* verbose[] = {
"testrunner.exe",
"-v"
};
......@@ -182,7 +182,7 @@ TEST(UnityCommandOptions, OptionVerbose)
TEST_ASSERT_EQUAL(1, UnityFixture.Verbose);
}
static char* group[] = {
static const char* group[] = {
"testrunner.exe",
"-g", "groupname"
};
......@@ -193,7 +193,7 @@ TEST(UnityCommandOptions, OptionSelectTestByGroup)
STRCMP_EQUAL("groupname", UnityFixture.GroupFilter);
}
static char* name[] = {
static const char* name[] = {
"testrunner.exe",
"-n", "testname"
};
......@@ -204,7 +204,7 @@ TEST(UnityCommandOptions, OptionSelectTestByName)
STRCMP_EQUAL("testname", UnityFixture.NameFilter);
}
static char* repeat[] = {
static const char* repeat[] = {
"testrunner.exe",
"-r", "99"
};
......@@ -221,7 +221,7 @@ TEST(UnityCommandOptions, OptionSelectRepeatTestsSpecificCount)
TEST_ASSERT_EQUAL(99, UnityFixture.RepeatCount);
}
static char* multiple[] = {
static const char* multiple[] = {
"testrunner.exe",
"-v",
"-g", "groupname",
......@@ -238,7 +238,7 @@ TEST(UnityCommandOptions, MultipleOptions)
TEST_ASSERT_EQUAL(98, UnityFixture.RepeatCount);
}
static char* dashRNotLast[] = {
static const char* dashRNotLast[] = {
"testrunner.exe",
"-v",
"-g", "gggg",
......@@ -255,7 +255,7 @@ TEST(UnityCommandOptions, MultipleOptionsDashRNotLastAndNoValueSpecified)
TEST_ASSERT_EQUAL(2, UnityFixture.RepeatCount);
}
static char* unknownCommand[] = {
static const char* unknownCommand[] = {
"testrunner.exe",
"-v",
"-g", "groupname",
......
......@@ -25,7 +25,7 @@ void UnityOutputCharSpy_Create(int s)
memset(buffer, 0, size);
}
void UnityOutputCharSpy_Destroy()
void UnityOutputCharSpy_Destroy(void)
{
size = 0;
free(buffer);
......@@ -45,7 +45,7 @@ int UnityOutputCharSpy_OutputChar(int c)
return c;
}
const char * UnityOutputCharSpy_Get()
const char * UnityOutputCharSpy_Get(void)
{
return buffer;
}
......
......@@ -9,9 +9,9 @@
#define D_unity_output_Spy_H
void UnityOutputCharSpy_Create(int s);
void UnityOutputCharSpy_Destroy();
void UnityOutputCharSpy_Destroy(void);
int UnityOutputCharSpy_OutputChar(int c);
const char * UnityOutputCharSpy_Get();
const char * UnityOutputCharSpy_Get(void);
void UnityOutputCharSpy_Enable(int enable);
#endif
......@@ -271,7 +271,7 @@ void UnityPrintOk(void)
}
//-----------------------------------------------
void UnityTestResultsBegin(const char* file, const UNITY_LINE_TYPE line)
static void UnityTestResultsBegin(const char* file, const UNITY_LINE_TYPE line)
{
UnityPrint(file);
UNITY_OUTPUT_CHAR(':');
......@@ -282,7 +282,7 @@ void UnityTestResultsBegin(const char* file, const UNITY_LINE_TYPE line)
}
//-----------------------------------------------
void UnityTestResultsFailBegin(const UNITY_LINE_TYPE line)
static void UnityTestResultsFailBegin(const UNITY_LINE_TYPE line)
{
UnityTestResultsBegin(Unity.TestFile, line);
UnityPrint(UnityStrFail);
......@@ -312,7 +312,7 @@ void UnityConcludeTest(void)
}
//-----------------------------------------------
void UnityAddMsgIfSpecified(const char* msg)
static void UnityAddMsgIfSpecified(const char* msg)
{
if (msg)
{
......@@ -322,7 +322,7 @@ void UnityAddMsgIfSpecified(const char* msg)
}
//-----------------------------------------------
void UnityPrintExpectedAndActualStrings(const char* expected, const char* actual)
static void UnityPrintExpectedAndActualStrings(const char* expected, const char* actual)
{
UnityPrint(UnityStrExpected);
if (expected != NULL)
......@@ -352,7 +352,7 @@ void UnityPrintExpectedAndActualStrings(const char* expected, const char* actual
// Assertion & Control Helpers
//-----------------------------------------------
int UnityCheckArraysForNull(UNITY_PTR_ATTRIBUTE const void* expected, UNITY_PTR_ATTRIBUTE const void* actual, const UNITY_LINE_TYPE lineNumber, const char* msg)
static int UnityCheckArraysForNull(UNITY_PTR_ATTRIBUTE const void* expected, UNITY_PTR_ATTRIBUTE const void* actual, const UNITY_LINE_TYPE lineNumber, const char* msg)
{
//return true if they are both NULL
if ((expected == NULL) && (actual == NULL))
......@@ -1102,6 +1102,8 @@ void UnityIgnore(const char* msg, const UNITY_LINE_TYPE line)
//-----------------------------------------------
#if defined(UNITY_WEAK_ATTRIBUTE)
void setUp(void);
void tearDown(void);
UNITY_WEAK_ATTRIBUTE void setUp(void) { }
UNITY_WEAK_ATTRIBUTE void tearDown(void) { }
#elif defined(UNITY_WEAK_PRAGMA)
......
......@@ -10,6 +10,22 @@ compiler:
- '-Wno-address'
- '-std=c99'
- '-pedantic'
- '-Wextra'
- '-Werror'
- '-Wpointer-arith'
- '-Wcast-align'
- '-Wwrite-strings'
- '-Wswitch-default'
- '-Wunreachable-code'
- '-Winit-self'
- '-Wlogical-op'
- '-Wmissing-field-initializers'
- '-Wno-unknown-pragmas'
- '-Wjump-misses-init'
- '-Wstrict-prototypes'
- '-Wundef'
- '-Wunsafe-loop-optimizations'
- '-Wold-style-definition'
includes:
prefix: '-I'
items:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册