Author: charusso Date: Sat Aug 24 05:17:49 2019 New Revision: 369845 URL: http://llvm.org/viewvc/llvm-project?rev=369845&view=rev Log: [analyzer] Analysis: Fix checker silencing
Modified: cfe/trunk/lib/Frontend/CompilerInvocation.cpp cfe/trunk/tools/scan-build/bin/scan-build Modified: cfe/trunk/lib/Frontend/CompilerInvocation.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/CompilerInvocation.cpp?rev=369845&r1=369844&r2=369845&view=diff ============================================================================== --- cfe/trunk/lib/Frontend/CompilerInvocation.cpp (original) +++ cfe/trunk/lib/Frontend/CompilerInvocation.cpp Sat Aug 24 05:17:49 2019 @@ -464,22 +464,6 @@ static void parseAnalyzerConfigs(Analyze // At this point, AnalyzerOptions is configured. Let's validate some options. - if (!Diags) - return; - - if (AnOpts.ShouldTrackConditionsDebug && !AnOpts.ShouldTrackConditions) - Diags->Report(diag::err_analyzer_config_invalid_input) - << "track-conditions-debug" << "'track-conditions' to also be enabled"; - - if (!AnOpts.CTUDir.empty() && !llvm::sys::fs::is_directory(AnOpts.CTUDir)) - Diags->Report(diag::err_analyzer_config_invalid_input) << "ctu-dir" - << "a filename"; - - if (!AnOpts.ModelPath.empty() && - !llvm::sys::fs::is_directory(AnOpts.ModelPath)) - Diags->Report(diag::err_analyzer_config_invalid_input) << "model-path" - << "a filename"; - // FIXME: Here we try to validate the silenced checkers or packages are valid. // The current approach only validates the registered checkers which does not // contain the runtime enabled checkers and optimally we would validate both. @@ -493,18 +477,37 @@ static void parseAnalyzerConfigs(Analyze AnOpts.RawSilencedCheckersAndPackages.split(CheckersAndPackages, ";"); for (const StringRef CheckerOrPackage : CheckersAndPackages) { - bool IsChecker = CheckerOrPackage.contains('.'); - bool IsValidName = - IsChecker ? llvm::find(Checkers, CheckerOrPackage) != Checkers.end() - : llvm::find(Packages, CheckerOrPackage) != Packages.end(); - - if (!IsValidName) - Diags->Report(diag::err_unknown_analyzer_checker_or_package) - << CheckerOrPackage; + if (Diags) { + bool IsChecker = CheckerOrPackage.contains('.'); + bool IsValidName = + IsChecker + ? llvm::find(Checkers, CheckerOrPackage) != Checkers.end() + : llvm::find(Packages, CheckerOrPackage) != Packages.end(); + + if (!IsValidName) + Diags->Report(diag::err_unknown_analyzer_checker_or_package) + << CheckerOrPackage; + } AnOpts.SilencedCheckersAndPackages.emplace_back(CheckerOrPackage); } } + + if (!Diags) + return; + + if (AnOpts.ShouldTrackConditionsDebug && !AnOpts.ShouldTrackConditions) + Diags->Report(diag::err_analyzer_config_invalid_input) + << "track-conditions-debug" << "'track-conditions' to also be enabled"; + + if (!AnOpts.CTUDir.empty() && !llvm::sys::fs::is_directory(AnOpts.CTUDir)) + Diags->Report(diag::err_analyzer_config_invalid_input) << "ctu-dir" + << "a filename"; + + if (!AnOpts.ModelPath.empty() && + !llvm::sys::fs::is_directory(AnOpts.ModelPath)) + Diags->Report(diag::err_analyzer_config_invalid_input) << "model-path" + << "a filename"; } static bool ParseMigratorArgs(MigratorOptions &Opts, ArgList &Args) { Modified: cfe/trunk/tools/scan-build/bin/scan-build URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/scan-build/bin/scan-build?rev=369845&r1=369844&r2=369845&view=diff ============================================================================== --- cfe/trunk/tools/scan-build/bin/scan-build (original) +++ cfe/trunk/tools/scan-build/bin/scan-build Sat Aug 24 05:17:49 2019 @@ -1889,11 +1889,6 @@ foreach (sort { $Options{DisableCheckers # Push checkers in order they were disabled. push @AnalysesToRun, "-analyzer-disable-checker", $_; } -foreach (sort { $Options{SilenceCheckers}{$a} <=> $Options{SilenceCheckers}{$b} } - keys %{$Options{SilenceCheckers}}) { - # Push checkers in order they were silenced. - push @AnalysesToRun, "-analyzer-config silence-checker", $_; -} if ($Options{AnalyzeHeaders}) { push @AnalysesToRun, "-analyzer-opt-analyze-headers"; } if ($Options{AnalyzerStats}) { push @AnalysesToRun, '-analyzer-checker=debug.Stats'; } if ($Options{MaxLoop} > 0) { push @AnalysesToRun, "-analyzer-max-loop $Options{MaxLoop}"; } @@ -1903,6 +1898,14 @@ if ($Options{MaxLoop} > 0) { push @Analy my $CCC_ANALYZER_ANALYSIS = join ' ', @AnalysesToRun; my $CCC_ANALYZER_PLUGINS = join ' ', map { "-load ".$_ } @{$Options{PluginsToLoad}}; my $CCC_ANALYZER_CONFIG = join ' ', map { "-analyzer-config ".$_ } @{$Options{ConfigOptions}}; + +foreach (sort { $Options{SilenceCheckers}{$a} <=> $Options{SilenceCheckers}{$b} } + keys %{$Options{SilenceCheckers}}) { + # Add checkers in order they were silenced. + $CCC_ANALYZER_CONFIG = + $CCC_ANALYZER_CONFIG." -analyzer-config silence-checkers=".$_; +} + my %EnvVars = ( 'CC' => $Cmd, 'CXX' => $CmdCXX, _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits