Specify C++ as the language for .ino files when preprocessing them for PVS-Studio // Resolve #3450

This commit is contained in:
valeros
2020-04-07 11:35:17 +03:00
parent 2e320c01b3
commit baa7aab1d7

View File

@@ -140,9 +140,7 @@ class PvsStudioCheckTool(CheckToolBase): # pylint: disable=too-many-instance-at
os.remove(self._tmp_output_file) os.remove(self._tmp_output_file)
if not os.path.isfile(self._tmp_preprocessed_file): if not os.path.isfile(self._tmp_preprocessed_file):
click.echo( click.echo("Error: Missing preprocessed file for '%s'" % src_file)
"Error: Missing preprocessed file '%s'" % (self._tmp_preprocessed_file)
)
return "" return ""
cmd = [ cmd = [
@@ -175,6 +173,9 @@ class PvsStudioCheckTool(CheckToolBase): # pylint: disable=too-many-instance-at
return os.path.join(self._tmp_dir, next(tempfile._get_candidate_names())) return os.path.join(self._tmp_dir, next(tempfile._get_candidate_names()))
def _prepare_preprocessed_file(self, src_file): def _prepare_preprocessed_file(self, src_file):
if os.path.isfile(self._tmp_preprocessed_file):
os.remove(self._tmp_preprocessed_file)
flags = self.cxx_flags flags = self.cxx_flags
compiler = self.cxx_path compiler = self.cxx_path
if src_file.endswith(".c"): if src_file.endswith(".c"):
@@ -186,8 +187,12 @@ class PvsStudioCheckTool(CheckToolBase): # pylint: disable=too-many-instance-at
cmd.extend(["-D%s" % d for d in self.cpp_defines]) cmd.extend(["-D%s" % d for d in self.cpp_defines])
cmd.append('@"%s"' % self._tmp_cmd_file) cmd.append('@"%s"' % self._tmp_cmd_file)
# Explicitly specify C++ as the language used in .ino files
if src_file.endswith(".ino"):
cmd.insert(1, "-xc++")
result = proc.exec_command(" ".join(cmd), shell=True) result = proc.exec_command(" ".join(cmd), shell=True)
if result["returncode"] != 0: if result["returncode"] != 0 or result["err"]:
if self.options.get("verbose"): if self.options.get("verbose"):
click.echo(" ".join(cmd)) click.echo(" ".join(cmd))
click.echo(result["err"]) click.echo(result["err"])