Add static code analysis with cppcheck

This commit is contained in:
Thomas Klaehn 2019-07-15 13:52:12 +02:00
parent 707c75131c
commit e5f7de6df1
3 changed files with 28 additions and 3 deletions

17
.vscode/tasks.json vendored
View File

@ -20,6 +20,23 @@
"isDefault": true "isDefault": true
} }
}, },
{
"label": "check",
"type":"shell",
"command": "make check -j4",
"problemMatcher": {
"base": "$gcc",
"owner": "gcc",
"fileLocation": [
"relative",
"${workspaceFolder}"
]
},
"group": {
"kind": "build",
"isDefault": true
}
},
{ {
"label": "clean", "label": "clean",
"type":"shell", "type":"shell",

View File

@ -4,6 +4,7 @@ TARGET_FILE ?= test
CC = $(CROSS_COMPILE)gcc CC = $(CROSS_COMPILE)gcc
CPP = $(CROSS_COMPILE)cpp CPP = $(CROSS_COMPILE)cpp
CHECK = cppcheck
SRC_DIR = src SRC_DIR = src
OBJ_DIR = obj OBJ_DIR = obj
@ -22,6 +23,7 @@ endif
LD_FLAGS := LD_FLAGS :=
C_FLAGS := -O0 -g -Wall -Wextra -Werror C_FLAGS := -O0 -g -Wall -Wextra -Werror
CPP_FLAGS := $(addprefix -I, $(INCLUDES)) CPP_FLAGS := $(addprefix -I, $(INCLUDES))
CHECK_CLAGS := --enable=all --template=gcc --error-exitcode=1 --suppress=missingIncludeSystem
C_SRCS = $(wildcard $(SRC_DIR)/*.c) C_SRCS = $(wildcard $(SRC_DIR)/*.c)
C_OBJS = $(patsubst $(SRC_DIR)%,$(OBJ_DIR)%,$(patsubst %.c,%.o,$(C_SRCS))) C_OBJS = $(patsubst $(SRC_DIR)%,$(OBJ_DIR)%,$(patsubst %.c,%.o,$(C_SRCS)))
@ -34,6 +36,10 @@ THIS_MAKEFILE := $(lastword $(MAKEFILE_LIST))
.PHONY: all .PHONY: all
all: $(TARGET) all: $(TARGET)
.PHONY: check
check: $(C_SRCS)
$(CHECK) $(CPP_FLAGS) $(CHECK_CLAGS) $(C_SRCS)
$(TARGET): $(OBJS) $(THIS_MAKEFILE) $(TARGET): $(OBJS) $(THIS_MAKEFILE)
@mkdir -p $(BIN_DIR) @mkdir -p $(BIN_DIR)
$(CC) $(C_FLAGS) $(LD_FLAGS) $(OBJS) $(addprefix -l,$(LIBS)) -o $@ $(CC) $(C_FLAGS) $(LD_FLAGS) $(OBJS) $(addprefix -l,$(LIBS)) -o $@

View File

@ -108,12 +108,14 @@ int gpio_read(const struct gpio *gpio, unsigned int *value)
int gpio_write(const struct gpio *gpio, unsigned int value) int gpio_write(const struct gpio *gpio, unsigned int value)
{ {
int res; int res;
unsigned char mask = gpio->ftdi_dev->status_mask; unsigned char mask;
if(NULL == gpio) { if(NULL == gpio) {
return EXIT_FAILURE; return EXIT_FAILURE;
} }
mask = gpio->ftdi_dev->status_mask;
if(value == 0) { if(value == 0) {
mask &= ~(unsigned char)(gpio->pin); mask &= ~(unsigned char)(gpio->pin);
} }
@ -135,13 +137,13 @@ int gpio_write(const struct gpio *gpio, unsigned int value)
int gpio_toggle(const struct gpio *gpio) int gpio_toggle(const struct gpio *gpio)
{ {
int res; int res;
unsigned char mask = gpio->ftdi_dev->status_mask; unsigned char mask;
if(NULL == gpio) { if(NULL == gpio) {
return EXIT_FAILURE; return EXIT_FAILURE;
} }
mask ^= (unsigned char)(gpio->pin); mask = (gpio->ftdi_dev->status_mask) ^ (unsigned char)(gpio->pin);
res = ftdi_write_data(gpio->ftdi_dev->ftdi, &mask, 1); res = ftdi_write_data(gpio->ftdi_dev->ftdi, &mask, 1);
if(res < 0) { if(res < 0) {