Merge pull request #37 from joshbeck/master
Added support for reading file lists from stdin, correctly this time
This commit is contained in:
commit
24ce170554
|
@ -45,11 +45,21 @@ static void AddFilesToList(const std::string& FileList, std::vector<std::string>
|
|||
// xml is a bonus then, since we can easily extend it
|
||||
// we need a good parser then -> suggestion : TinyXml
|
||||
// drawback : creates a dependency
|
||||
std::ifstream Files(FileList.c_str());
|
||||
std::istream *Files;
|
||||
std::ifstream Infile;
|
||||
if (FileList.compare("-") == 0) // read from stdin
|
||||
{
|
||||
Files = &std::cin;
|
||||
}
|
||||
else
|
||||
{
|
||||
Infile.open(FileList.c_str());
|
||||
Files = &Infile;
|
||||
}
|
||||
if (Files)
|
||||
{
|
||||
std::string FileName;
|
||||
while (std::getline(Files, FileName)) // next line
|
||||
while (std::getline(*Files, FileName)) // next line
|
||||
{
|
||||
if (!FileName.empty())
|
||||
{
|
||||
|
@ -720,7 +730,8 @@ void CmdLineParser::PrintHelp()
|
|||
" Used when certain messages should be displayed but\n"
|
||||
" should not cause a non-zero exitcode.\n"
|
||||
" --file-list=<file> Specify the files to check in a text file. Add one\n"
|
||||
" filename per line.\n"
|
||||
" filename per line. When file is -, the file list will\n"
|
||||
" be read from standard input.\n"
|
||||
" -f, --force Force checking of all configurations in files that have\n"
|
||||
" \"too many\" configurations.\n"
|
||||
" -h, --help Print this help.\n"
|
||||
|
|
|
@ -225,7 +225,7 @@ Example: -DDEBUG=1 -D__cplusplus</para>
|
|||
<varlistentry>
|
||||
<term><option>--file-list=<file></option></term>
|
||||
<listitem>
|
||||
<para>Specify the files to check in a text file. One filename per line.</para>
|
||||
<para>Specify the files to check in a text file. One filename per line. When file is -, the file list will be read from standard input.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
|
|
|
@ -71,6 +71,7 @@ private:
|
|||
TEST_CASE(exitcodeSuppressions);
|
||||
TEST_CASE(exitcodeSuppressionsNoFile);
|
||||
TEST_CASE(fileList); // TODO: Create and test real file listing file
|
||||
TEST_CASE(fileListStdin);
|
||||
TEST_CASE(inlineSuppr);
|
||||
TEST_CASE(jobs);
|
||||
TEST_CASE(jobsMissingCount);
|
||||
|
@ -531,6 +532,17 @@ private:
|
|||
TODO_ASSERT_EQUALS(true, false, parser.ParseFromArgs(4, argv));
|
||||
}
|
||||
|
||||
void fileListStdin()
|
||||
{
|
||||
// TODO: Give it some stdin to read from, fails because the list of
|
||||
// files in stdin (_pathnames) is empty
|
||||
REDIRECT;
|
||||
const char *argv[] = {"cppcheck", "--file-list=-", "file.cpp"};
|
||||
Settings settings;
|
||||
CmdLineParser parser(&settings);
|
||||
TODO_ASSERT_EQUALS(true, false, parser.ParseFromArgs(3, argv));
|
||||
}
|
||||
|
||||
void inlineSuppr()
|
||||
{
|
||||
REDIRECT;
|
||||
|
|
Loading…
Reference in New Issue