FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
cppcheck/cli/main.cpp at main · lineCode/cppcheck · GitHub
lineCode
/
cppcheck
Public
forked from
cppcheck-opensource/cppcheck
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Pull requests
0
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
cppcheck
/
cli
/
main.cpp
Copy path
More file actions
More file actions
Latest commit
History
History
History
123 lines (111 loc) · 3.68 KB
Breadcrumbs
cppcheck
/
cli
/
main.cpp
Copy path
File metadata and controls
123 lines (111 loc) · 3.68 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2022 Cppcheck team.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/*
*
*
* @mainpage Cppcheck
* @version 2.10.99
*
* @section overview_sec Overview
* Cppcheck is a simple tool for static analysis of C/C++ code.
*
* When you write a checker you have access to:
* - %Token list - the tokenized code
* - Syntax tree - Syntax tree of each expression
* - %SymbolDatabase - Information about all types/variables/functions/etc
* in the current translation unit
* - Library - Configuration of functions/types
* - Value flow analysis - Data flow analysis that determine possible values for each token
*
* Use --debug-normal on the command line to see debug output for the token list
* and the syntax tree. If both --debug-normal and --verbose is used, the symbol
* database is also written.
*
* The checks are written in C++.
*
* @section detailed_overview_sec Detailed overview
* This happens when you execute cppcheck from the command line:
* -# CppCheckExecutor::check this function executes the Cppcheck
* -# CmdLineParser::parseFromArgs parse command line arguments
* - The Settings class is used to maintain settings
* - Use FileLister and command line arguments to get files to check
* -# ThreadExecutor create more instances of CppCheck if needed
* -# CppCheck::check is called for each file. It checks a single file
* -# Preprocess the file (through Preprocessor)
* - Comments are removed
* - Macros are expanded
* -# Tokenize the file (see Tokenizer)
* -# Run the runChecks of all check classes.
*
* When errors are found, they are reported back to the CppCheckExecutor through the ErrorLogger interface.
*/
#
include
"
cppcheckexecutor.h
"
#
ifdef
NDEBUG
#
include
"
errortypes.h
"
#
include
<
cstdlib
>
#
include
<
exception
>
#
include
<
iostream
>
#
include
<
string
>
#
endif
#
ifdef
_WIN32
#
include
<
windows.h
>
static
char
exename[
1024
] = {
0
};
#
endif
#
if
defined(__APPLE__)
#
include
<
mach-o/dyld.h
>
static
char
exename[
1024
] = {
0
};
#
endif
/*
*
* Main function of cppcheck
*
* @param argc Passed to CppCheck::parseFromArgs()
* @param argv Passed to CppCheck::parseFromArgs()
* @return What CppCheckExecutor::check() returns.
*/
int
main
(
int
argc,
char
* argv[])
{
//
MS Visual C++ memory leak debug tracing
#
if
defined(_MSC_VER) && defined(_DEBUG)
_CrtSetDbgFlag
(
_CrtSetDbgFlag
(_CRTDBG_REPORT_FLAG) | _CRTDBG_LEAK_CHECK_DF);
#
endif
CppCheckExecutor exec;
#
ifdef
_WIN32
GetModuleFileNameA
(
nullptr
, exename,
sizeof
(exename)/
sizeof
(exename[
0
])-
1
);
argv[
0
] = exename;
#
endif
#
if
defined(__APPLE__)
uint32_t
size =
sizeof
(exename);
_NSGetExecutablePath
(exename, &size);
argv[
0
] = exename;
#
endif
//
*INDENT-OFF*
#
ifdef
NDEBUG
try
{
#endif
return
exec.
check
(argc, argv);
#
ifdef
NDEBUG
}
catch
(
const
InternalError& e) {
std::cout << e.
errorMessage
<< std::endl;
}
catch
(
const
std::exception& error) {
std::cout << error.
what
() << std::endl;
}
catch
(...) {
std::cout <<
"
Unknown exception
"
<< std::endl;
}
return
EXIT_FAILURE
;
#
endif
//
*INDENT-ON*
}
Back
|
FazBrowse Home
|
New Git URL