NoQ added a comment.

The idea with strings as keys is curious! I've got a few more minor comments :)


================
Comment at: lib/Analysis/CloneDetection.cpp:104
@@ +103,3 @@
+    // Storage for the signatures of the direct child statements. This is only
+    // needed if the current statemnt is a CompoundStmt.
+    std::vector<CloneDetector::CloneSignature> ChildSignatures;
----------------
Typo: statement.

================
Comment at: lib/Analysis/CloneDetection.cpp:147
@@ +146,3 @@
+      const CompoundStmt *CS,
+      std::vector<CloneDetector::CloneSignature> ChildSignatures) {
+
----------------
Maybe pass `ChildSignatures` by reference?

================
Comment at: lib/Analysis/CloneDetection.cpp:178
@@ +177,3 @@
+
+  bool VisitFunctionDecl(FunctionDecl *D) {
+    // If we found a function, we start the clone search on its body statement.
----------------
You'd probably want to add `ObjCMethodDecl` and `BlockDecl`, because they 
aren't sub-classes of `FunctionDecl` (and probably even tests for that).

Because this part of the code essentially re-implements `AnalysisConsumer`, (a 
`RecursiveASTVisitor` that tells us what code bodies to analyze with the static 
analyzer - i should've looked there earlier!!).

Alternatively, you can just rely on `AnalysisConsumer`, which would eliminate 
the recursive visitor completely: {F2205103} This way you'd be analyzing 
exactly the same code bodies that the analyzer itself would analyze; if you'd 
want to extend to various declarations, you'd be able to do that by subscribing 
on `check::ASTDecl`. But i dare not to predict what kind of different 
flexibility you'd need next.

================
Comment at: lib/Analysis/CloneDetection.cpp:188
@@ +187,3 @@
+void CloneDetector::analyzeTranslationUnit(TranslationUnitDecl *TU) {
+  DataCollectVisitor visitor(*this, TU->getASTContext());
+  visitor.TraverseDecl(TU);
----------------
Micro-nit: Capitalize 'V' in 'visitor'?


https://reviews.llvm.org/D20795



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to