Merge remote-tracking branch 'origin/master' into windows
[scilab.git] / scilab / modules / slint / includes / checkers / CommentRatioChecker.hxx
1 /*
2  *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  *  Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
4  *
5  * Copyright (C) 2012 - 2016 - Scilab Enterprises
6  *
7  * This file is hereby licensed under the terms of the GNU GPL v2.0,
8  * pursuant to article 5.3.4 of the CeCILL v.2.1.
9  * This file was originally licensed under the terms of the CeCILL v2.1,
10  * and continues to be available under such terms.
11  * For more information, see the COPYING file which you should have received
12  * along with this program.
13  *
14  */
15
16 #ifndef __SLINT_COMMENT_RATIO_CHECKER_HXX__
17 #define __SLINT_COMMENT_RATIO_CHECKER_HXX__
18
19 #include <cstdint>
20
21 #include "SLintChecker.hxx"
22
23 namespace slint
24 {
25
26 /**
27  * Compute the ratio between commented lines and total lines
28  */
29 class CommentRatioChecker : public SLintChecker
30 {
31
32     uint64_t count;
33     const double ratioMin;
34
35 public:
36
37     CommentRatioChecker(const std::string & checkerId, const double _ratioMin) : SLintChecker(checkerId), count(0), ratioMin(_ratioMin) { }
38     ~CommentRatioChecker() { }
39
40     void preCheckNode(const ast::Exp & e, SLintContext & context, SLintResult & result);
41     void postCheckNode(const ast::Exp & e, SLintContext & context, SLintResult & result);
42     const std::string getName() const;
43     bool isFileChecker() const;
44     void preCheckFile(SLintContext & context, SLintResult & result);
45     void postCheckFile(SLintContext & context, SLintResult & result);
46
47     virtual const std::vector<ast::Exp::ExpType> getAstNodes() const
48     {
49         return { ast::Exp::COMMENTEXP };
50     }
51 };
52
53 } // namespace slint
54
55 #endif // __SLINT_COMMENT_RATIO_CHECKER_HXX__