Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(219)

Side by Side Diff: tools/clang/plugins/FindBadConstructsConsumer.cpp

Issue 1117163002: Clang style plugin: add warn-only option and use it on Windows (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "FindBadConstructsConsumer.h" 5 #include "FindBadConstructsConsumer.h"
6 6
7 #include "clang/Frontend/CompilerInstance.h" 7 #include "clang/Frontend/CompilerInstance.h"
8 #include "clang/AST/Attr.h" 8 #include "clang/AST/Attr.h"
9 #include "clang/Lex/Lexer.h" 9 #include "clang/Lex/Lexer.h"
10 #include "llvm/Support/raw_ostream.h" 10 #include "llvm/Support/raw_ostream.h"
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
94 return record.isPOD() || 94 return record.isPOD() ||
95 record.getDescribedClassTemplate() || 95 record.getDescribedClassTemplate() ||
96 record.getTemplateSpecializationKind() || 96 record.getTemplateSpecializationKind() ||
97 record.isDependentType(); 97 record.isDependentType();
98 } 98 }
99 99
100 } // namespace 100 } // namespace
101 101
102 FindBadConstructsConsumer::FindBadConstructsConsumer(CompilerInstance& instance, 102 FindBadConstructsConsumer::FindBadConstructsConsumer(CompilerInstance& instance,
103 const Options& options) 103 const Options& options)
104 : ChromeClassTester(instance), options_(options) { 104 : ChromeClassTester(instance, options) {
105 // Messages for virtual method specifiers. 105 // Messages for virtual method specifiers.
106 diag_method_requires_override_ = 106 diag_method_requires_override_ =
107 diagnostic().getCustomDiagID(getErrorLevel(), kMethodRequiresOverride); 107 diagnostic().getCustomDiagID(getErrorLevel(), kMethodRequiresOverride);
108 diag_redundant_virtual_specifier_ = 108 diag_redundant_virtual_specifier_ =
109 diagnostic().getCustomDiagID(getErrorLevel(), kRedundantVirtualSpecifier); 109 diagnostic().getCustomDiagID(getErrorLevel(), kRedundantVirtualSpecifier);
110 diag_base_method_virtual_and_final_ = 110 diag_base_method_virtual_and_final_ =
111 diagnostic().getCustomDiagID(getErrorLevel(), kBaseMethodVirtualAndFinal); 111 diagnostic().getCustomDiagID(getErrorLevel(), kBaseMethodVirtualAndFinal);
112 112
113 // Messages for destructors. 113 // Messages for destructors.
114 diag_no_explicit_dtor_ = 114 diag_no_explicit_dtor_ =
(...skipping 471 matching lines...) Expand 10 before | Expand all | Expand 10 after
586 if (CXXDestructorDecl* dtor = record->getDestructor()) { 586 if (CXXDestructorDecl* dtor = record->getDestructor()) {
587 if (dtor->getAccess() == AS_public) { 587 if (dtor->getAccess() == AS_public) {
588 loc = dtor->getInnerLocStart(); 588 loc = dtor->getInnerLocStart();
589 return PublicDestructor; 589 return PublicDestructor;
590 } 590 }
591 } 591 }
592 592
593 return None; 593 return None;
594 } 594 }
595 595
596 // Adds either a warning or error, based on the current handling of
597 // -Werror.
598 DiagnosticsEngine::Level FindBadConstructsConsumer::getErrorLevel() {
599 #if defined(LLVM_ON_WIN32)
600 // TODO(dcheng): Re-enable -Werror for these diagnostics on Windows once all
601 // the pre-existing warnings are cleaned up. https://crbug.com/467287
602 return DiagnosticsEngine::Warning;
603 #else
604 return diagnostic().getWarningsAsErrors() ? DiagnosticsEngine::Error
605 : DiagnosticsEngine::Warning;
606 #endif
607 }
608
609 // Returns true if |base| specifies one of the Chromium reference counted 596 // Returns true if |base| specifies one of the Chromium reference counted
610 // classes (base::RefCounted / base::RefCountedThreadSafe). 597 // classes (base::RefCounted / base::RefCountedThreadSafe).
611 bool FindBadConstructsConsumer::IsRefCountedCallback( 598 bool FindBadConstructsConsumer::IsRefCountedCallback(
612 const CXXBaseSpecifier* base, 599 const CXXBaseSpecifier* base,
613 CXXBasePath& path, 600 CXXBasePath& path,
614 void* user_data) { 601 void* user_data) {
615 FindBadConstructsConsumer* self = 602 FindBadConstructsConsumer* self =
616 static_cast<FindBadConstructsConsumer*>(user_data); 603 static_cast<FindBadConstructsConsumer*>(user_data);
617 604
618 const TemplateSpecializationType* base_type = 605 const TemplateSpecializationType* base_type =
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after
830 // one of those, it means there is at least one member after a factory. 817 // one of those, it means there is at least one member after a factory.
831 if (weak_ptr_factory_location.isValid() && 818 if (weak_ptr_factory_location.isValid() &&
832 !param_is_weak_ptr_factory_to_self) { 819 !param_is_weak_ptr_factory_to_self) {
833 diagnostic().Report(weak_ptr_factory_location, 820 diagnostic().Report(weak_ptr_factory_location,
834 diag_weak_ptr_factory_order_); 821 diag_weak_ptr_factory_order_);
835 } 822 }
836 } 823 }
837 } 824 }
838 825
839 } // namespace chrome_checker 826 } // namespace chrome_checker
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698