Skip to content

Commit 550e502

Browse files
Added .clang-tidy file and fixed many cling-tidy warnigns (#43)
1 parent dc2d1a6 commit 550e502

17 files changed

+275
-222
lines changed

.clang-tidy

+62
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
---
2+
# Resons why specific warnings have been turned off:
3+
#
4+
# -clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling
5+
# This warns about memcpy and wants us to use memcpy_s, which is not available in our gcc setup.
6+
#
7+
# -cppcoreguidelines-pro-type-vararg
8+
# This forbids using functions like printf, snprintf etc. We would like to use those either way.
9+
#
10+
# -misc-no-recursion
11+
# Recursion with functions can be an elegant way of solving recursive problems
12+
#
13+
# These checks have been disabled to keep compatibility with C++14:
14+
# -modernize-concat-nested-namespaces
15+
# -modernize-use-nodiscard
16+
#
17+
18+
Checks: "-*,
19+
clang-analyzer-*,
20+
-clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling,
21+
22+
bugprone-*,
23+
-bugprone-easily-swappable-parameters,
24+
-bugprone-implicit-widening-of-multiplication-result,
25+
-bugprone-narrowing-conversions,
26+
27+
cppcoreguidelines-*,
28+
-cppcoreguidelines-avoid-magic-numbers,
29+
-cppcoreguidelines-macro-usage,
30+
-cppcoreguidelines-narrowing-conversions,
31+
-cppcoreguidelines-non-private-member-variables-in-classes,
32+
-cppcoreguidelines-pro-bounds-array-to-pointer-decay,
33+
-cppcoreguidelines-pro-bounds-pointer-arithmetic,
34+
-cppcoreguidelines-pro-type-vararg,
35+
-cppcoreguidelines-pro-type-reinterpret-cast,
36+
37+
misc-*,
38+
-misc-non-private-member-variables-in-classes,
39+
-misc-no-recursion,
40+
41+
modernize-*,
42+
-modernize-pass-by-value,
43+
-modernize-use-trailing-return-type,
44+
-modernize-use-auto,
45+
-modernize-concat-nested-namespaces,
46+
-modernize-return-braced-init-list,
47+
-modernize-use-nodiscard,
48+
-modernize-avoid-bind,
49+
50+
performance-*,
51+
52+
readability-*,
53+
-readability-braces-around-statements,
54+
-readability-identifier-length,
55+
-readability-magic-numbers,
56+
-readability-redundant-access-specifiers,
57+
-readability-function-cognitive-complexity,
58+
-readability-else-after-return,
59+
"
60+
WarningsAsErrors: ''
61+
HeaderFilterRegex: '^((?!/thirdparty/|/_deps/).)*$'
62+
FormatStyle: none

CMakeWindows.bat

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
mkdir _build
22
cd _build
33

4-
cmake .. -DCMAKE_INSTALL_PREFIX=_install
4+
cmake .. -DCMAKE_INSTALL_PREFIX=_install -DBUILD_SHARED_LIBS=OFF
55
cd ..
66
pause

fineftp-server/CMakeLists.txt

+1
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ set(sources
3333
src/server_impl.cpp
3434
src/server_impl.h
3535
src/user_database.cpp
36+
src/user_database.h
3637
src/win_str_convert.cpp
3738
src/win_str_convert.h
3839
)

fineftp-server/include/fineftp/permissions.h

+8-8
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,12 @@ namespace fineftp
2020
None = 0
2121
};
2222

23-
inline Permission operator~ (Permission a) { return (Permission)~(int)a; }
24-
inline Permission operator| (Permission a, Permission b) { return (Permission)((int)a | (int)b); }
25-
inline Permission operator& (Permission a, Permission b) { return (Permission)((int)a & (int)b); }
26-
inline Permission operator^ (Permission a, Permission b) { return (Permission)((int)a ^ (int)b); }
27-
inline Permission& operator|= (Permission& a, Permission b) { return (Permission&)((int&)a |= (int)b); }
28-
inline Permission& operator&= (Permission& a, Permission b) { return (Permission&)((int&)a &= (int)b); }
29-
inline Permission& operator^= (Permission& a, Permission b) { return (Permission&)((int&)a ^= (int)b); }
23+
inline Permission operator~ (Permission a) { return static_cast<Permission>(~static_cast<int>(a)); }
24+
inline Permission operator| (Permission a, Permission b) { return static_cast<Permission>(static_cast<int>(a) | static_cast<int>(b)); }
25+
inline Permission operator& (Permission a, Permission b) { return static_cast<Permission>(static_cast<int>(a) & static_cast<int>(b)); }
26+
inline Permission operator^ (Permission a, Permission b) { return static_cast<Permission>(static_cast<int>(a) ^ static_cast<int>(b)); }
27+
inline Permission& operator|= (Permission& a, Permission b) { return reinterpret_cast<Permission&>(reinterpret_cast<int&>(a) |= static_cast<int>(b)); }
28+
inline Permission& operator&= (Permission& a, Permission b) { return reinterpret_cast<Permission&>(reinterpret_cast<int&>(a) &= static_cast<int>(b)); }
29+
inline Permission& operator^= (Permission& a, Permission b) { return reinterpret_cast<Permission&>(reinterpret_cast<int&>(a) ^= static_cast<int>(b)); }
3030

31-
}
31+
}

fineftp-server/include/fineftp/server.h

+11-6
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,15 @@ namespace fineftp
7070
*/
7171
FINEFTP_EXPORT FtpServer(uint16_t port = 21);
7272

73+
// Move
74+
FINEFTP_EXPORT FtpServer(FtpServer&&) noexcept;
75+
FINEFTP_EXPORT FtpServer& operator=(FtpServer&&) noexcept;
76+
77+
// Non-copyable
78+
FtpServer(const FtpServer&) = delete;
79+
FtpServer& operator=(const FtpServer&) = delete;
80+
81+
// Destructor
7382
FINEFTP_EXPORT ~FtpServer();
7483

7584
/**
@@ -93,7 +102,7 @@ namespace fineftp
93102
*
94103
* @return True if adding the user was successful (i.e. it didn't exit already).
95104
*/
96-
FINEFTP_EXPORT bool addUser(const std::string& username, const std::string& password, const std::string& local_root_path, const Permission permissions);
105+
FINEFTP_EXPORT bool addUser(const std::string& username, const std::string& password, const std::string& local_root_path, Permission permissions);
97106

98107
/**
99108
* @brief Adds the "anonymous" / "ftp" user that FTP clients use to access FTP servers without password
@@ -103,7 +112,7 @@ namespace fineftp
103112
*
104113
* @return True if adding the anonymous user was successful (i.e. it didn't exit already).
105114
*/
106-
FINEFTP_EXPORT bool addUserAnonymous(const std::string& local_root_path, const Permission permissions);
115+
FINEFTP_EXPORT bool addUserAnonymous(const std::string& local_root_path, Permission permissions);
107116

108117
/**
109118
* @brief Starts the FTP Server
@@ -148,10 +157,6 @@ namespace fineftp
148157
*/
149158
FINEFTP_EXPORT std::string getAddress() const;
150159

151-
// Non-copyable
152-
FINEFTP_EXPORT FtpServer(const FtpServer&) = delete;
153-
FINEFTP_EXPORT FtpServer& operator=(const FtpServer&) = delete;
154-
155160
private:
156161
std::unique_ptr<FtpServerImpl> ftp_server_; /**< Implementation details */
157162
};

0 commit comments

Comments
 (0)