Merge remote-tracking branch 'origin/slint-cnes' 15/18015/1
Antoine ELIAS [Wed, 30 Mar 2016 14:43:02 +0000 (16:43 +0200)]
Change-Id: Iffdd5e66de1357c495fd1399778cc58892ccb3a6

125 files changed:
scilab/modules/ast/src/cpp/parse/flex/scanscilab.ll
scilab/modules/core/includes/version.h.in
scilab/modules/helptools/etc/MAIN_CHAPTERS
scilab/modules/slint/Makefile.am
scilab/modules/slint/Makefile.in
scilab/modules/slint/etc/cnes_analysis_conf.xml [new file with mode: 0644]
scilab/modules/slint/etc/cnes_tool_conf.xml [new file with mode: 0644]
scilab/modules/slint/etc/slint.xml
scilab/modules/slint/help/en_US/BracketedExp.xml [new file with mode: 0644]
scilab/modules/slint/help/en_US/BreaksInLoop.xml [new file with mode: 0644]
scilab/modules/slint/help/en_US/CommentRatio.xml [new file with mode: 0644]
scilab/modules/slint/help/en_US/Decimal.xml [new file with mode: 0644]
scilab/modules/slint/help/en_US/Deprecated.xml [new file with mode: 0644]
scilab/modules/slint/help/en_US/EmptyBlock.xml [new file with mode: 0644]
scilab/modules/slint/help/en_US/EqEq.xml [new file with mode: 0644]
scilab/modules/slint/help/en_US/FunctionArgs.xml [new file with mode: 0644]
scilab/modules/slint/help/en_US/FunctionArgsOrder.xml [new file with mode: 0644]
scilab/modules/slint/help/en_US/FunctionName.xml [new file with mode: 0644]
scilab/modules/slint/help/en_US/FunctionTestReturn.xml [new file with mode: 0644]
scilab/modules/slint/help/en_US/GlobalKeyword.xml [new file with mode: 0644]
scilab/modules/slint/help/en_US/IllegalCalls.xml [new file with mode: 0644]
scilab/modules/slint/help/en_US/ImplicitList.xml [new file with mode: 0644]
scilab/modules/slint/help/en_US/LineLength.xml [new file with mode: 0644]
scilab/modules/slint/help/en_US/LinesCount.xml [new file with mode: 0644]
scilab/modules/slint/help/en_US/LoadSave.xml [new file with mode: 0644]
scilab/modules/slint/help/en_US/McCabe.xml [new file with mode: 0644]
scilab/modules/slint/help/en_US/MopenMclose.xml [new file with mode: 0644]
scilab/modules/slint/help/en_US/NaN.xml [new file with mode: 0644]
scilab/modules/slint/help/en_US/NestedBlocks.xml [new file with mode: 0644]
scilab/modules/slint/help/en_US/NotEqual.xml [new file with mode: 0644]
scilab/modules/slint/help/en_US/NotNotChecker.xml [new file with mode: 0644]
scilab/modules/slint/help/en_US/OldNot.xml [new file with mode: 0644]
scilab/modules/slint/help/en_US/Printf.xml [new file with mode: 0644]
scilab/modules/slint/help/en_US/Redefinition.xml [new file with mode: 0644]
scilab/modules/slint/help/en_US/ReturnsCount.xml [new file with mode: 0644]
scilab/modules/slint/help/en_US/Select.xml [new file with mode: 0644]
scilab/modules/slint/help/en_US/SemicolonAtEOL.xml [new file with mode: 0644]
scilab/modules/slint/help/en_US/SingleInstr.xml [new file with mode: 0644]
scilab/modules/slint/help/en_US/SpacesInArgs.xml [new file with mode: 0644]
scilab/modules/slint/help/en_US/StatInCond.xml [new file with mode: 0644]
scilab/modules/slint/help/en_US/Struct.xml [new file with mode: 0644]
scilab/modules/slint/help/en_US/TodoChecker.xml [new file with mode: 0644]
scilab/modules/slint/help/en_US/UnreachableCode.xml [new file with mode: 0644]
scilab/modules/slint/help/en_US/UselessArg.xml [new file with mode: 0644]
scilab/modules/slint/help/en_US/UselessOp.xml [new file with mode: 0644]
scilab/modules/slint/help/en_US/VariableName.xml [new file with mode: 0644]
scilab/modules/slint/help/en_US/Variables.xml [new file with mode: 0644]
scilab/modules/slint/help/en_US/addchapter.sce [new file with mode: 0644]
scilab/modules/slint/help/en_US/slint.xml [new file with mode: 0644]
scilab/modules/slint/help/fr_FR/addchapter.sce [new file with mode: 0644]
scilab/modules/slint/help/ja_JP/addchapter.sce [new file with mode: 0644]
scilab/modules/slint/help/pt_BR/addchapter.sce [new file with mode: 0644]
scilab/modules/slint/help/ru_RU/addchapter.sce [new file with mode: 0644]
scilab/modules/slint/includes/FileException.hxx
scilab/modules/slint/includes/checkers/AllCheckers.hxx
scilab/modules/slint/includes/checkers/BreaksInLoopChecker.hxx
scilab/modules/slint/includes/checkers/DecimalChecker.hxx
scilab/modules/slint/includes/checkers/ExpInCondChecker.hxx [moved from scilab/modules/slint/includes/checkers/StatInCondChecker.hxx with 75% similarity]
scilab/modules/slint/includes/checkers/LineLengthChecker.hxx
scilab/modules/slint/includes/checkers/NotEqualChecker.hxx [new file with mode: 0644]
scilab/modules/slint/includes/checkers/SLintChecker.hxx
scilab/modules/slint/includes/checkers/SemicolonAtEOLChecker.hxx
scilab/modules/slint/includes/checkers/VariablesChecker.hxx
scilab/modules/slint/includes/config/XMLConfig.hxx
scilab/modules/slint/includes/config/cnes/AnalysisConfiguration.hxx [new file with mode: 0644]
scilab/modules/slint/includes/config/cnes/AnalysisConfigurationType.hxx [new file with mode: 0644]
scilab/modules/slint/includes/config/cnes/AnalysisRuleParameterType.hxx [new file with mode: 0644]
scilab/modules/slint/includes/config/cnes/AnalysisRuleType.hxx [new file with mode: 0644]
scilab/modules/slint/includes/config/cnes/CNESConfig.hxx [new file with mode: 0644]
scilab/modules/slint/includes/config/cnes/CNESException.hxx [new file with mode: 0644]
scilab/modules/slint/includes/config/cnes/ExcludedProjectFileType.hxx [new file with mode: 0644]
scilab/modules/slint/includes/config/cnes/RuleLinkType.hxx [new file with mode: 0644]
scilab/modules/slint/includes/config/cnes/Standard.hxx [new file with mode: 0644]
scilab/modules/slint/includes/config/cnes/StandardRuleParameterType.hxx [new file with mode: 0644]
scilab/modules/slint/includes/config/cnes/StandardRuleParameterValueType.hxx [new file with mode: 0644]
scilab/modules/slint/includes/config/cnes/StandardRuleType.hxx [new file with mode: 0644]
scilab/modules/slint/includes/config/cnes/StandardType.hxx [new file with mode: 0644]
scilab/modules/slint/includes/config/cnes/ToolConfiguration.hxx [new file with mode: 0644]
scilab/modules/slint/includes/config/cnes/ToolConfigurationType.hxx [new file with mode: 0644]
scilab/modules/slint/includes/output/SLintResult.hxx
scilab/modules/slint/includes/output/SLintScilabResult.hxx
scilab/modules/slint/includes/output/SLintXmlResult.hxx
scilab/modules/slint/includes/output/cnes/CNESCsvResult.hxx [new file with mode: 0644]
scilab/modules/slint/includes/output/cnes/CNESXmlResult.hxx [new file with mode: 0644]
scilab/modules/slint/sci_gateway/cpp/sci_slint.cpp
scilab/modules/slint/slint.iss
scilab/modules/slint/slint.vcxproj
scilab/modules/slint/slint.vcxproj.filters
scilab/modules/slint/src/cpp/AnalysisConfiguration.cpp [new file with mode: 0644]
scilab/modules/slint/src/cpp/AnalysisConfigurationType.cpp [new file with mode: 0644]
scilab/modules/slint/src/cpp/AnalysisRuleParameterType.cpp [new file with mode: 0644]
scilab/modules/slint/src/cpp/AnalysisRuleType.cpp [new file with mode: 0644]
scilab/modules/slint/src/cpp/BracketedExpChecker.cpp
scilab/modules/slint/src/cpp/BreaksInLoopChecker.cpp
scilab/modules/slint/src/cpp/CNESConfig.cpp [new file with mode: 0644]
scilab/modules/slint/src/cpp/CNESCsvResult.cpp [new file with mode: 0644]
scilab/modules/slint/src/cpp/CNESException.cpp [new file with mode: 0644]
scilab/modules/slint/src/cpp/CNESXmlResult.cpp [new file with mode: 0644]
scilab/modules/slint/src/cpp/DecimalChecker.cpp
scilab/modules/slint/src/cpp/ExcludedProjectFileType.cpp [new file with mode: 0644]
scilab/modules/slint/src/cpp/ExpInCondChecker.cpp [moved from scilab/modules/slint/src/cpp/StatInCondChecker.cpp with 77% similarity]
scilab/modules/slint/src/cpp/FileException.cpp
scilab/modules/slint/src/cpp/FunctionTestReturnChecker.cpp
scilab/modules/slint/src/cpp/ImplicitListChecker.cpp
scilab/modules/slint/src/cpp/LineLengthChecker.cpp
scilab/modules/slint/src/cpp/LoadSaveChecker.cpp
scilab/modules/slint/src/cpp/NestedBlocksChecker.cpp
scilab/modules/slint/src/cpp/NotEqualChecker.cpp [new file with mode: 0644]
scilab/modules/slint/src/cpp/RuleLinkType.cpp [new file with mode: 0644]
scilab/modules/slint/src/cpp/SLint.cpp
scilab/modules/slint/src/cpp/SLintChecker.cpp
scilab/modules/slint/src/cpp/SLintScilabResult.cpp
scilab/modules/slint/src/cpp/SLintVisitor.cpp
scilab/modules/slint/src/cpp/SLintXmlResult.cpp
scilab/modules/slint/src/cpp/SciFile.cpp
scilab/modules/slint/src/cpp/SemicolonAtEOLChecker.cpp
scilab/modules/slint/src/cpp/Standard.cpp [new file with mode: 0644]
scilab/modules/slint/src/cpp/StandardRuleParameterType.cpp [new file with mode: 0644]
scilab/modules/slint/src/cpp/StandardRuleParameterValueType.cpp [new file with mode: 0644]
scilab/modules/slint/src/cpp/StandardRuleType.cpp [new file with mode: 0644]
scilab/modules/slint/src/cpp/StandardType.cpp [new file with mode: 0644]
scilab/modules/slint/src/cpp/ToolConfiguration.cpp [new file with mode: 0644]
scilab/modules/slint/src/cpp/ToolConfigurationType.cpp [new file with mode: 0644]
scilab/modules/slint/src/cpp/VariablesChecker.cpp
scilab/modules/slint/src/cpp/XMLConfig.cpp

index f11b4f9..4da3856 100644 (file)
@@ -1,4 +1,5 @@
-%{                                                            /* -*- C++ -*- */
+%{
+/* -*- C++ -*- */
 /*
  *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
  *  Copyright (C) 2008-2012 - Scilab Enterprises - Bruno JOFRET
@@ -357,7 +358,7 @@ assign                      "="
     return scan_throw(RETURN);
 }
 
-^{spaces}*/({id}){spaces}([^ \t\v\f(=<>~@]|([~@]{spaces}*[^=]?)) {
+^{spaces}*/({id}){spaces}([^ \t\v\f(=<>~@,;]|([~@]{spaces}*[^=]?)) {
         BEGIN(BEGINID);
 }
 
@@ -379,14 +380,13 @@ assign                    "="
        types::InternalType * pIT = symbol::Context::getInstance()->get(symbol::Symbol(*yylval.str));
         if (pIT && pIT->isCallable())
         {
-            scan_throw(ID);
             BEGIN(SHELLMODE);
         }
         else
         {
             BEGIN(INITIAL);
-            return scan_throw(ID);
         }
+       return scan_throw(ID);
     }
 
 }
@@ -748,8 +748,9 @@ assign                      "="
     return scan_throw(RPAREN);
   }
 
-  {spaces}*{lparen} {
-      unput(yytext[yyleng -1]);
+  {spaces}+{lparen} {
+      unput(yytext[yyleng - 1]);
+      --yylloc.last_column;
       if (last_token == ID
           || last_token == RPAREN
           || last_token == QUOTE
@@ -1306,7 +1307,7 @@ assign                    "="
         if (last_token == ID)
         {
             scan_throw(SPACES);
-            return ID;
+            //return ID;
         }
     }
 
index 81b3192..96c7366 100644 (file)
@@ -18,8 +18,8 @@
 #define SCI_VERSION_MAJOR @SCILAB_VERSION_MAJOR@
 #define SCI_VERSION_MINOR @SCILAB_VERSION_MINOR@
 #define SCI_VERSION_MAINTENANCE @SCILAB_VERSION_MAINTENANCE@
-#define SCI_VERSION_STRING "scilab-branch-master"
-#define SCI_VERSION_WIDE_STRING L"scilab-branch-master"
+#define SCI_VERSION_STRING "scilab-branch-slint-cnes"
+#define SCI_VERSION_WIDE_STRING L"scilab-branch-slint-cnes"
 /* SCI_VERSION_REVISION --> hash key commit */
 #define SCI_VERSION_REVISION 0
 #define SCI_VERSION_TIMESTAMP 0
@@ -29,7 +29,7 @@ void disp_scilab_version(void);
 /* for compatibility */
 /* Deprecated */
 #define SCI_VERSION SCI_VERSION_STRING
-#define DEFAULT_SCI_VERSION_MESSAGE L"scilab-branch-master"
+#define DEFAULT_SCI_VERSION_MESSAGE L"scilab-branch-slint-cnes"
 
 #endif
 /*--------------------------------------------------------------------------*/
index f985801..b0daff0 100644 (file)
@@ -22,7 +22,9 @@ libscislint_la_etcdir = $(mydatadir)/etc
 libscislint_la_etc_DATA = \
     etc/slint.quit \
     etc/slint.start \
-    etc/slint.xml
+    etc/slint.xml \
+    etc/cnes_analysis_conf.xml \
+    etc/cnes_tool_conf.xml
 
 include $(top_srcdir)/Makefile.incl.am
 
@@ -75,13 +77,31 @@ src/cpp/BracketedExpChecker.cpp \
 src/cpp/NotNotChecker.cpp \
 src/cpp/SpacesInArgsChecker.cpp \
 src/cpp/GlobalKeywordChecker.cpp \
-src/cpp/StatInCondChecker.cpp \
+src/cpp/ExpInCondChecker.cpp \
 src/cpp/CommentRatioChecker.cpp \
 src/cpp/FunctionArgsOrderChecker.cpp \
 src/cpp/FunctionTestReturnChecker.cpp \
 src/cpp/ReturnsCountChecker.cpp \
+src/cpp/NotEqualChecker.cpp \
 src/cpp/XMLtools.cpp \
-src/cpp/SLintXmlResult.cpp 
+src/cpp/SLintXmlResult.cpp \
+src/cpp/AnalysisConfiguration.cpp \
+src/cpp/AnalysisConfigurationType.cpp \
+src/cpp/AnalysisRuleParameterType.cpp \
+src/cpp/AnalysisRuleType.cpp \
+src/cpp/ExcludedProjectFileType.cpp \
+src/cpp/RuleLinkType.cpp \
+src/cpp/Standard.cpp \
+src/cpp/StandardRuleParameterType.cpp \
+src/cpp/StandardRuleParameterValueType.cpp \
+src/cpp/StandardRuleType.cpp \
+src/cpp/StandardType.cpp \
+src/cpp/ToolConfiguration.cpp \
+src/cpp/ToolConfigurationType.cpp \
+src/cpp/CNESException.cpp \
+src/cpp/CNESConfig.cpp \
+src/cpp/CNESXmlResult.cpp \
+src/cpp/CNESCsvResult.cpp
 
 GATEWAY_CXX_SOURCES = \
     sci_gateway/cpp/sci_slint.cpp
index 78dd690..a2a2b77 100644 (file)
@@ -226,13 +226,31 @@ am__objects_1 = src/cpp/libscislint_algo_la-SLintContext.lo \
        src/cpp/libscislint_algo_la-NotNotChecker.lo \
        src/cpp/libscislint_algo_la-SpacesInArgsChecker.lo \
        src/cpp/libscislint_algo_la-GlobalKeywordChecker.lo \
-       src/cpp/libscislint_algo_la-StatInCondChecker.lo \
+       src/cpp/libscislint_algo_la-ExpInCondChecker.lo \
        src/cpp/libscislint_algo_la-CommentRatioChecker.lo \
        src/cpp/libscislint_algo_la-FunctionArgsOrderChecker.lo \
        src/cpp/libscislint_algo_la-FunctionTestReturnChecker.lo \
        src/cpp/libscislint_algo_la-ReturnsCountChecker.lo \
+       src/cpp/libscislint_algo_la-NotEqualChecker.lo \
        src/cpp/libscislint_algo_la-XMLtools.lo \
-       src/cpp/libscislint_algo_la-SLintXmlResult.lo
+       src/cpp/libscislint_algo_la-SLintXmlResult.lo \
+       src/cpp/libscislint_algo_la-AnalysisConfiguration.lo \
+       src/cpp/libscislint_algo_la-AnalysisConfigurationType.lo \
+       src/cpp/libscislint_algo_la-AnalysisRuleParameterType.lo \
+       src/cpp/libscislint_algo_la-AnalysisRuleType.lo \
+       src/cpp/libscislint_algo_la-ExcludedProjectFileType.lo \
+       src/cpp/libscislint_algo_la-RuleLinkType.lo \
+       src/cpp/libscislint_algo_la-Standard.lo \
+       src/cpp/libscislint_algo_la-StandardRuleParameterType.lo \
+       src/cpp/libscislint_algo_la-StandardRuleParameterValueType.lo \
+       src/cpp/libscislint_algo_la-StandardRuleType.lo \
+       src/cpp/libscislint_algo_la-StandardType.lo \
+       src/cpp/libscislint_algo_la-ToolConfiguration.lo \
+       src/cpp/libscislint_algo_la-ToolConfigurationType.lo \
+       src/cpp/libscislint_algo_la-CNESException.lo \
+       src/cpp/libscislint_algo_la-CNESConfig.lo \
+       src/cpp/libscislint_algo_la-CNESXmlResult.lo \
+       src/cpp/libscislint_algo_la-CNESCsvResult.lo
 am_libscislint_algo_la_OBJECTS = $(am__objects_1)
 libscislint_algo_la_OBJECTS = $(am_libscislint_algo_la_OBJECTS)
 AM_V_lt = $(am__v_lt_@AM_V@)
@@ -594,6 +612,7 @@ pdfdir = @pdfdir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -612,7 +631,9 @@ libscislint_la_etcdir = $(mydatadir)/etc
 libscislint_la_etc_DATA = \
     etc/slint.quit \
     etc/slint.start \
-    etc/slint.xml
+    etc/slint.xml \
+    etc/cnes_analysis_conf.xml \
+    etc/cnes_tool_conf.xml
 
 
 # Where all the Scilab stuff is installed (macros, help, ...)
@@ -736,13 +757,31 @@ src/cpp/BracketedExpChecker.cpp \
 src/cpp/NotNotChecker.cpp \
 src/cpp/SpacesInArgsChecker.cpp \
 src/cpp/GlobalKeywordChecker.cpp \
-src/cpp/StatInCondChecker.cpp \
+src/cpp/ExpInCondChecker.cpp \
 src/cpp/CommentRatioChecker.cpp \
 src/cpp/FunctionArgsOrderChecker.cpp \
 src/cpp/FunctionTestReturnChecker.cpp \
 src/cpp/ReturnsCountChecker.cpp \
+src/cpp/NotEqualChecker.cpp \
 src/cpp/XMLtools.cpp \
-src/cpp/SLintXmlResult.cpp 
+src/cpp/SLintXmlResult.cpp \
+src/cpp/AnalysisConfiguration.cpp \
+src/cpp/AnalysisConfigurationType.cpp \
+src/cpp/AnalysisRuleParameterType.cpp \
+src/cpp/AnalysisRuleType.cpp \
+src/cpp/ExcludedProjectFileType.cpp \
+src/cpp/RuleLinkType.cpp \
+src/cpp/Standard.cpp \
+src/cpp/StandardRuleParameterType.cpp \
+src/cpp/StandardRuleParameterValueType.cpp \
+src/cpp/StandardRuleType.cpp \
+src/cpp/StandardType.cpp \
+src/cpp/ToolConfiguration.cpp \
+src/cpp/ToolConfigurationType.cpp \
+src/cpp/CNESException.cpp \
+src/cpp/CNESConfig.cpp \
+src/cpp/CNESXmlResult.cpp \
+src/cpp/CNESCsvResult.cpp
 
 GATEWAY_CXX_SOURCES = \
     sci_gateway/cpp/sci_slint.cpp
@@ -971,7 +1010,7 @@ src/cpp/libscislint_algo_la-SpacesInArgsChecker.lo:  \
        src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
 src/cpp/libscislint_algo_la-GlobalKeywordChecker.lo:  \
        src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
-src/cpp/libscislint_algo_la-StatInCondChecker.lo:  \
+src/cpp/libscislint_algo_la-ExpInCondChecker.lo:  \
        src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
 src/cpp/libscislint_algo_la-CommentRatioChecker.lo:  \
        src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
@@ -981,10 +1020,46 @@ src/cpp/libscislint_algo_la-FunctionTestReturnChecker.lo:  \
        src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
 src/cpp/libscislint_algo_la-ReturnsCountChecker.lo:  \
        src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscislint_algo_la-NotEqualChecker.lo:  \
+       src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
 src/cpp/libscislint_algo_la-XMLtools.lo: src/cpp/$(am__dirstamp) \
        src/cpp/$(DEPDIR)/$(am__dirstamp)
 src/cpp/libscislint_algo_la-SLintXmlResult.lo:  \
        src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscislint_algo_la-AnalysisConfiguration.lo:  \
+       src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscislint_algo_la-AnalysisConfigurationType.lo:  \
+       src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscislint_algo_la-AnalysisRuleParameterType.lo:  \
+       src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscislint_algo_la-AnalysisRuleType.lo:  \
+       src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscislint_algo_la-ExcludedProjectFileType.lo:  \
+       src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscislint_algo_la-RuleLinkType.lo: src/cpp/$(am__dirstamp) \
+       src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscislint_algo_la-Standard.lo: src/cpp/$(am__dirstamp) \
+       src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscislint_algo_la-StandardRuleParameterType.lo:  \
+       src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscislint_algo_la-StandardRuleParameterValueType.lo:  \
+       src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscislint_algo_la-StandardRuleType.lo:  \
+       src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscislint_algo_la-StandardType.lo: src/cpp/$(am__dirstamp) \
+       src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscislint_algo_la-ToolConfiguration.lo:  \
+       src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscislint_algo_la-ToolConfigurationType.lo:  \
+       src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscislint_algo_la-CNESException.lo: src/cpp/$(am__dirstamp) \
+       src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscislint_algo_la-CNESConfig.lo: src/cpp/$(am__dirstamp) \
+       src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscislint_algo_la-CNESXmlResult.lo: src/cpp/$(am__dirstamp) \
+       src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscislint_algo_la-CNESCsvResult.lo: src/cpp/$(am__dirstamp) \
+       src/cpp/$(DEPDIR)/$(am__dirstamp)
 
 libscislint-algo.la: $(libscislint_algo_la_OBJECTS) $(libscislint_algo_la_DEPENDENCIES) $(EXTRA_libscislint_algo_la_DEPENDENCIES) 
        $(AM_V_CXXLD)$(CXXLINK)  $(libscislint_algo_la_OBJECTS) $(libscislint_algo_la_LIBADD) $(LIBS)
@@ -1012,13 +1087,23 @@ distclean-compile:
        -rm -f *.tab.c
 
 @AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/cpp/$(DEPDIR)/libscislint_la-sci_slint.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscislint_algo_la-AnalysisConfiguration.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscislint_algo_la-AnalysisConfigurationType.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscislint_algo_la-AnalysisRuleParameterType.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscislint_algo_la-AnalysisRuleType.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscislint_algo_la-BracketedExpChecker.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscislint_algo_la-BreaksInLoopChecker.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscislint_algo_la-CNESConfig.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscislint_algo_la-CNESCsvResult.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscislint_algo_la-CNESException.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscislint_algo_la-CNESXmlResult.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscislint_algo_la-CommentRatioChecker.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscislint_algo_la-DecimalChecker.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscislint_algo_la-DeprecatedChecker.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscislint_algo_la-EmptyBlockChecker.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscislint_algo_la-EqEqChecker.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscislint_algo_la-ExcludedProjectFileType.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscislint_algo_la-ExpInCondChecker.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscislint_algo_la-FileException.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscislint_algo_la-FunctionArgsChecker.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscislint_algo_la-FunctionArgsOrderChecker.Plo@am__quote@
@@ -1035,6 +1120,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscislint_algo_la-MopenMcloseChecker.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscislint_algo_la-NaNChecker.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscislint_algo_la-NestedBlocksChecker.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscislint_algo_la-NotEqualChecker.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscislint_algo_la-NotNotChecker.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscislint_algo_la-OldNotChecker.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscislint_algo_la-PCREException.Plo@am__quote@
@@ -1042,6 +1128,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscislint_algo_la-PrintfChecker.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscislint_algo_la-RedefinitionChecker.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscislint_algo_la-ReturnsCountChecker.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscislint_algo_la-RuleLinkType.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscislint_algo_la-SLint.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscislint_algo_la-SLintChecker.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscislint_algo_la-SLintContext.Plo@am__quote@
@@ -1056,9 +1143,15 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscislint_algo_la-SingleInstrChecker.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscislint_algo_la-SpacesAroundOpChecker.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscislint_algo_la-SpacesInArgsChecker.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscislint_algo_la-StatInCondChecker.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscislint_algo_la-Standard.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscislint_algo_la-StandardRuleParameterType.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscislint_algo_la-StandardRuleParameterValueType.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscislint_algo_la-StandardRuleType.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscislint_algo_la-StandardType.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscislint_algo_la-StructChecker.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscislint_algo_la-TodoChecker.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscislint_algo_la-ToolConfiguration.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscislint_algo_la-ToolConfigurationType.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscislint_algo_la-UnreachableCodeChecker.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscislint_algo_la-UselessArgChecker.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscislint_algo_la-UselessOpChecker.Plo@am__quote@
@@ -1428,12 +1521,12 @@ src/cpp/libscislint_algo_la-GlobalKeywordChecker.lo: src/cpp/GlobalKeywordChecke
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscislint_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscislint_algo_la-GlobalKeywordChecker.lo `test -f 'src/cpp/GlobalKeywordChecker.cpp' || echo '$(srcdir)/'`src/cpp/GlobalKeywordChecker.cpp
 
-src/cpp/libscislint_algo_la-StatInCondChecker.lo: src/cpp/StatInCondChecker.cpp
-@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscislint_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscislint_algo_la-StatInCondChecker.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscislint_algo_la-StatInCondChecker.Tpo -c -o src/cpp/libscislint_algo_la-StatInCondChecker.lo `test -f 'src/cpp/StatInCondChecker.cpp' || echo '$(srcdir)/'`src/cpp/StatInCondChecker.cpp
-@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscislint_algo_la-StatInCondChecker.Tpo src/cpp/$(DEPDIR)/libscislint_algo_la-StatInCondChecker.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/cpp/StatInCondChecker.cpp' object='src/cpp/libscislint_algo_la-StatInCondChecker.lo' libtool=yes @AMDEPBACKSLASH@
+src/cpp/libscislint_algo_la-ExpInCondChecker.lo: src/cpp/ExpInCondChecker.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscislint_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscislint_algo_la-ExpInCondChecker.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscislint_algo_la-ExpInCondChecker.Tpo -c -o src/cpp/libscislint_algo_la-ExpInCondChecker.lo `test -f 'src/cpp/ExpInCondChecker.cpp' || echo '$(srcdir)/'`src/cpp/ExpInCondChecker.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscislint_algo_la-ExpInCondChecker.Tpo src/cpp/$(DEPDIR)/libscislint_algo_la-ExpInCondChecker.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/cpp/ExpInCondChecker.cpp' object='src/cpp/libscislint_algo_la-ExpInCondChecker.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscislint_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscislint_algo_la-StatInCondChecker.lo `test -f 'src/cpp/StatInCondChecker.cpp' || echo '$(srcdir)/'`src/cpp/StatInCondChecker.cpp
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscislint_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscislint_algo_la-ExpInCondChecker.lo `test -f 'src/cpp/ExpInCondChecker.cpp' || echo '$(srcdir)/'`src/cpp/ExpInCondChecker.cpp
 
 src/cpp/libscislint_algo_la-CommentRatioChecker.lo: src/cpp/CommentRatioChecker.cpp
 @am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscislint_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscislint_algo_la-CommentRatioChecker.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscislint_algo_la-CommentRatioChecker.Tpo -c -o src/cpp/libscislint_algo_la-CommentRatioChecker.lo `test -f 'src/cpp/CommentRatioChecker.cpp' || echo '$(srcdir)/'`src/cpp/CommentRatioChecker.cpp
@@ -1463,6 +1556,13 @@ src/cpp/libscislint_algo_la-ReturnsCountChecker.lo: src/cpp/ReturnsCountChecker.
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscislint_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscislint_algo_la-ReturnsCountChecker.lo `test -f 'src/cpp/ReturnsCountChecker.cpp' || echo '$(srcdir)/'`src/cpp/ReturnsCountChecker.cpp
 
+src/cpp/libscislint_algo_la-NotEqualChecker.lo: src/cpp/NotEqualChecker.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscislint_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscislint_algo_la-NotEqualChecker.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscislint_algo_la-NotEqualChecker.Tpo -c -o src/cpp/libscislint_algo_la-NotEqualChecker.lo `test -f 'src/cpp/NotEqualChecker.cpp' || echo '$(srcdir)/'`src/cpp/NotEqualChecker.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscislint_algo_la-NotEqualChecker.Tpo src/cpp/$(DEPDIR)/libscislint_algo_la-NotEqualChecker.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/cpp/NotEqualChecker.cpp' object='src/cpp/libscislint_algo_la-NotEqualChecker.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscislint_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscislint_algo_la-NotEqualChecker.lo `test -f 'src/cpp/NotEqualChecker.cpp' || echo '$(srcdir)/'`src/cpp/NotEqualChecker.cpp
+
 src/cpp/libscislint_algo_la-XMLtools.lo: src/cpp/XMLtools.cpp
 @am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscislint_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscislint_algo_la-XMLtools.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscislint_algo_la-XMLtools.Tpo -c -o src/cpp/libscislint_algo_la-XMLtools.lo `test -f 'src/cpp/XMLtools.cpp' || echo '$(srcdir)/'`src/cpp/XMLtools.cpp
 @am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscislint_algo_la-XMLtools.Tpo src/cpp/$(DEPDIR)/libscislint_algo_la-XMLtools.Plo
@@ -1477,6 +1577,125 @@ src/cpp/libscislint_algo_la-SLintXmlResult.lo: src/cpp/SLintXmlResult.cpp
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscislint_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscislint_algo_la-SLintXmlResult.lo `test -f 'src/cpp/SLintXmlResult.cpp' || echo '$(srcdir)/'`src/cpp/SLintXmlResult.cpp
 
+src/cpp/libscislint_algo_la-AnalysisConfiguration.lo: src/cpp/AnalysisConfiguration.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscislint_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscislint_algo_la-AnalysisConfiguration.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscislint_algo_la-AnalysisConfiguration.Tpo -c -o src/cpp/libscislint_algo_la-AnalysisConfiguration.lo `test -f 'src/cpp/AnalysisConfiguration.cpp' || echo '$(srcdir)/'`src/cpp/AnalysisConfiguration.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscislint_algo_la-AnalysisConfiguration.Tpo src/cpp/$(DEPDIR)/libscislint_algo_la-AnalysisConfiguration.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/cpp/AnalysisConfiguration.cpp' object='src/cpp/libscislint_algo_la-AnalysisConfiguration.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscislint_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscislint_algo_la-AnalysisConfiguration.lo `test -f 'src/cpp/AnalysisConfiguration.cpp' || echo '$(srcdir)/'`src/cpp/AnalysisConfiguration.cpp
+
+src/cpp/libscislint_algo_la-AnalysisConfigurationType.lo: src/cpp/AnalysisConfigurationType.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscislint_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscislint_algo_la-AnalysisConfigurationType.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscislint_algo_la-AnalysisConfigurationType.Tpo -c -o src/cpp/libscislint_algo_la-AnalysisConfigurationType.lo `test -f 'src/cpp/AnalysisConfigurationType.cpp' || echo '$(srcdir)/'`src/cpp/AnalysisConfigurationType.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscislint_algo_la-AnalysisConfigurationType.Tpo src/cpp/$(DEPDIR)/libscislint_algo_la-AnalysisConfigurationType.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/cpp/AnalysisConfigurationType.cpp' object='src/cpp/libscislint_algo_la-AnalysisConfigurationType.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscislint_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscislint_algo_la-AnalysisConfigurationType.lo `test -f 'src/cpp/AnalysisConfigurationType.cpp' || echo '$(srcdir)/'`src/cpp/AnalysisConfigurationType.cpp
+
+src/cpp/libscislint_algo_la-AnalysisRuleParameterType.lo: src/cpp/AnalysisRuleParameterType.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscislint_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscislint_algo_la-AnalysisRuleParameterType.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscislint_algo_la-AnalysisRuleParameterType.Tpo -c -o src/cpp/libscislint_algo_la-AnalysisRuleParameterType.lo `test -f 'src/cpp/AnalysisRuleParameterType.cpp' || echo '$(srcdir)/'`src/cpp/AnalysisRuleParameterType.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscislint_algo_la-AnalysisRuleParameterType.Tpo src/cpp/$(DEPDIR)/libscislint_algo_la-AnalysisRuleParameterType.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/cpp/AnalysisRuleParameterType.cpp' object='src/cpp/libscislint_algo_la-AnalysisRuleParameterType.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscislint_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscislint_algo_la-AnalysisRuleParameterType.lo `test -f 'src/cpp/AnalysisRuleParameterType.cpp' || echo '$(srcdir)/'`src/cpp/AnalysisRuleParameterType.cpp
+
+src/cpp/libscislint_algo_la-AnalysisRuleType.lo: src/cpp/AnalysisRuleType.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscislint_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscislint_algo_la-AnalysisRuleType.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscislint_algo_la-AnalysisRuleType.Tpo -c -o src/cpp/libscislint_algo_la-AnalysisRuleType.lo `test -f 'src/cpp/AnalysisRuleType.cpp' || echo '$(srcdir)/'`src/cpp/AnalysisRuleType.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscislint_algo_la-AnalysisRuleType.Tpo src/cpp/$(DEPDIR)/libscislint_algo_la-AnalysisRuleType.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/cpp/AnalysisRuleType.cpp' object='src/cpp/libscislint_algo_la-AnalysisRuleType.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscislint_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscislint_algo_la-AnalysisRuleType.lo `test -f 'src/cpp/AnalysisRuleType.cpp' || echo '$(srcdir)/'`src/cpp/AnalysisRuleType.cpp
+
+src/cpp/libscislint_algo_la-ExcludedProjectFileType.lo: src/cpp/ExcludedProjectFileType.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscislint_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscislint_algo_la-ExcludedProjectFileType.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscislint_algo_la-ExcludedProjectFileType.Tpo -c -o src/cpp/libscislint_algo_la-ExcludedProjectFileType.lo `test -f 'src/cpp/ExcludedProjectFileType.cpp' || echo '$(srcdir)/'`src/cpp/ExcludedProjectFileType.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscislint_algo_la-ExcludedProjectFileType.Tpo src/cpp/$(DEPDIR)/libscislint_algo_la-ExcludedProjectFileType.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/cpp/ExcludedProjectFileType.cpp' object='src/cpp/libscislint_algo_la-ExcludedProjectFileType.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscislint_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscislint_algo_la-ExcludedProjectFileType.lo `test -f 'src/cpp/ExcludedProjectFileType.cpp' || echo '$(srcdir)/'`src/cpp/ExcludedProjectFileType.cpp
+
+src/cpp/libscislint_algo_la-RuleLinkType.lo: src/cpp/RuleLinkType.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscislint_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscislint_algo_la-RuleLinkType.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscislint_algo_la-RuleLinkType.Tpo -c -o src/cpp/libscislint_algo_la-RuleLinkType.lo `test -f 'src/cpp/RuleLinkType.cpp' || echo '$(srcdir)/'`src/cpp/RuleLinkType.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscislint_algo_la-RuleLinkType.Tpo src/cpp/$(DEPDIR)/libscislint_algo_la-RuleLinkType.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/cpp/RuleLinkType.cpp' object='src/cpp/libscislint_algo_la-RuleLinkType.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscislint_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscislint_algo_la-RuleLinkType.lo `test -f 'src/cpp/RuleLinkType.cpp' || echo '$(srcdir)/'`src/cpp/RuleLinkType.cpp
+
+src/cpp/libscislint_algo_la-Standard.lo: src/cpp/Standard.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscislint_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscislint_algo_la-Standard.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscislint_algo_la-Standard.Tpo -c -o src/cpp/libscislint_algo_la-Standard.lo `test -f 'src/cpp/Standard.cpp' || echo '$(srcdir)/'`src/cpp/Standard.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscislint_algo_la-Standard.Tpo src/cpp/$(DEPDIR)/libscislint_algo_la-Standard.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/cpp/Standard.cpp' object='src/cpp/libscislint_algo_la-Standard.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscislint_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscislint_algo_la-Standard.lo `test -f 'src/cpp/Standard.cpp' || echo '$(srcdir)/'`src/cpp/Standard.cpp
+
+src/cpp/libscislint_algo_la-StandardRuleParameterType.lo: src/cpp/StandardRuleParameterType.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscislint_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscislint_algo_la-StandardRuleParameterType.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscislint_algo_la-StandardRuleParameterType.Tpo -c -o src/cpp/libscislint_algo_la-StandardRuleParameterType.lo `test -f 'src/cpp/StandardRuleParameterType.cpp' || echo '$(srcdir)/'`src/cpp/StandardRuleParameterType.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscislint_algo_la-StandardRuleParameterType.Tpo src/cpp/$(DEPDIR)/libscislint_algo_la-StandardRuleParameterType.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/cpp/StandardRuleParameterType.cpp' object='src/cpp/libscislint_algo_la-StandardRuleParameterType.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscislint_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscislint_algo_la-StandardRuleParameterType.lo `test -f 'src/cpp/StandardRuleParameterType.cpp' || echo '$(srcdir)/'`src/cpp/StandardRuleParameterType.cpp
+
+src/cpp/libscislint_algo_la-StandardRuleParameterValueType.lo: src/cpp/StandardRuleParameterValueType.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscislint_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscislint_algo_la-StandardRuleParameterValueType.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscislint_algo_la-StandardRuleParameterValueType.Tpo -c -o src/cpp/libscislint_algo_la-StandardRuleParameterValueType.lo `test -f 'src/cpp/StandardRuleParameterValueType.cpp' || echo '$(srcdir)/'`src/cpp/StandardRuleParameterValueType.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscislint_algo_la-StandardRuleParameterValueType.Tpo src/cpp/$(DEPDIR)/libscislint_algo_la-StandardRuleParameterValueType.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/cpp/StandardRuleParameterValueType.cpp' object='src/cpp/libscislint_algo_la-StandardRuleParameterValueType.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscislint_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscislint_algo_la-StandardRuleParameterValueType.lo `test -f 'src/cpp/StandardRuleParameterValueType.cpp' || echo '$(srcdir)/'`src/cpp/StandardRuleParameterValueType.cpp
+
+src/cpp/libscislint_algo_la-StandardRuleType.lo: src/cpp/StandardRuleType.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscislint_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscislint_algo_la-StandardRuleType.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscislint_algo_la-StandardRuleType.Tpo -c -o src/cpp/libscislint_algo_la-StandardRuleType.lo `test -f 'src/cpp/StandardRuleType.cpp' || echo '$(srcdir)/'`src/cpp/StandardRuleType.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscislint_algo_la-StandardRuleType.Tpo src/cpp/$(DEPDIR)/libscislint_algo_la-StandardRuleType.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/cpp/StandardRuleType.cpp' object='src/cpp/libscislint_algo_la-StandardRuleType.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscislint_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscislint_algo_la-StandardRuleType.lo `test -f 'src/cpp/StandardRuleType.cpp' || echo '$(srcdir)/'`src/cpp/StandardRuleType.cpp
+
+src/cpp/libscislint_algo_la-StandardType.lo: src/cpp/StandardType.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscislint_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscislint_algo_la-StandardType.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscislint_algo_la-StandardType.Tpo -c -o src/cpp/libscislint_algo_la-StandardType.lo `test -f 'src/cpp/StandardType.cpp' || echo '$(srcdir)/'`src/cpp/StandardType.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscislint_algo_la-StandardType.Tpo src/cpp/$(DEPDIR)/libscislint_algo_la-StandardType.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/cpp/StandardType.cpp' object='src/cpp/libscislint_algo_la-StandardType.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscislint_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscislint_algo_la-StandardType.lo `test -f 'src/cpp/StandardType.cpp' || echo '$(srcdir)/'`src/cpp/StandardType.cpp
+
+src/cpp/libscislint_algo_la-ToolConfiguration.lo: src/cpp/ToolConfiguration.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscislint_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscislint_algo_la-ToolConfiguration.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscislint_algo_la-ToolConfiguration.Tpo -c -o src/cpp/libscislint_algo_la-ToolConfiguration.lo `test -f 'src/cpp/ToolConfiguration.cpp' || echo '$(srcdir)/'`src/cpp/ToolConfiguration.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscislint_algo_la-ToolConfiguration.Tpo src/cpp/$(DEPDIR)/libscislint_algo_la-ToolConfiguration.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/cpp/ToolConfiguration.cpp' object='src/cpp/libscislint_algo_la-ToolConfiguration.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscislint_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscislint_algo_la-ToolConfiguration.lo `test -f 'src/cpp/ToolConfiguration.cpp' || echo '$(srcdir)/'`src/cpp/ToolConfiguration.cpp
+
+src/cpp/libscislint_algo_la-ToolConfigurationType.lo: src/cpp/ToolConfigurationType.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscislint_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscislint_algo_la-ToolConfigurationType.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscislint_algo_la-ToolConfigurationType.Tpo -c -o src/cpp/libscislint_algo_la-ToolConfigurationType.lo `test -f 'src/cpp/ToolConfigurationType.cpp' || echo '$(srcdir)/'`src/cpp/ToolConfigurationType.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscislint_algo_la-ToolConfigurationType.Tpo src/cpp/$(DEPDIR)/libscislint_algo_la-ToolConfigurationType.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/cpp/ToolConfigurationType.cpp' object='src/cpp/libscislint_algo_la-ToolConfigurationType.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscislint_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscislint_algo_la-ToolConfigurationType.lo `test -f 'src/cpp/ToolConfigurationType.cpp' || echo '$(srcdir)/'`src/cpp/ToolConfigurationType.cpp
+
+src/cpp/libscislint_algo_la-CNESException.lo: src/cpp/CNESException.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscislint_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscislint_algo_la-CNESException.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscislint_algo_la-CNESException.Tpo -c -o src/cpp/libscislint_algo_la-CNESException.lo `test -f 'src/cpp/CNESException.cpp' || echo '$(srcdir)/'`src/cpp/CNESException.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscislint_algo_la-CNESException.Tpo src/cpp/$(DEPDIR)/libscislint_algo_la-CNESException.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/cpp/CNESException.cpp' object='src/cpp/libscislint_algo_la-CNESException.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscislint_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscislint_algo_la-CNESException.lo `test -f 'src/cpp/CNESException.cpp' || echo '$(srcdir)/'`src/cpp/CNESException.cpp
+
+src/cpp/libscislint_algo_la-CNESConfig.lo: src/cpp/CNESConfig.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscislint_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscislint_algo_la-CNESConfig.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscislint_algo_la-CNESConfig.Tpo -c -o src/cpp/libscislint_algo_la-CNESConfig.lo `test -f 'src/cpp/CNESConfig.cpp' || echo '$(srcdir)/'`src/cpp/CNESConfig.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscislint_algo_la-CNESConfig.Tpo src/cpp/$(DEPDIR)/libscislint_algo_la-CNESConfig.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/cpp/CNESConfig.cpp' object='src/cpp/libscislint_algo_la-CNESConfig.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscislint_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscislint_algo_la-CNESConfig.lo `test -f 'src/cpp/CNESConfig.cpp' || echo '$(srcdir)/'`src/cpp/CNESConfig.cpp
+
+src/cpp/libscislint_algo_la-CNESXmlResult.lo: src/cpp/CNESXmlResult.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscislint_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscislint_algo_la-CNESXmlResult.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscislint_algo_la-CNESXmlResult.Tpo -c -o src/cpp/libscislint_algo_la-CNESXmlResult.lo `test -f 'src/cpp/CNESXmlResult.cpp' || echo '$(srcdir)/'`src/cpp/CNESXmlResult.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscislint_algo_la-CNESXmlResult.Tpo src/cpp/$(DEPDIR)/libscislint_algo_la-CNESXmlResult.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/cpp/CNESXmlResult.cpp' object='src/cpp/libscislint_algo_la-CNESXmlResult.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscislint_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscislint_algo_la-CNESXmlResult.lo `test -f 'src/cpp/CNESXmlResult.cpp' || echo '$(srcdir)/'`src/cpp/CNESXmlResult.cpp
+
+src/cpp/libscislint_algo_la-CNESCsvResult.lo: src/cpp/CNESCsvResult.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscislint_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscislint_algo_la-CNESCsvResult.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscislint_algo_la-CNESCsvResult.Tpo -c -o src/cpp/libscislint_algo_la-CNESCsvResult.lo `test -f 'src/cpp/CNESCsvResult.cpp' || echo '$(srcdir)/'`src/cpp/CNESCsvResult.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscislint_algo_la-CNESCsvResult.Tpo src/cpp/$(DEPDIR)/libscislint_algo_la-CNESCsvResult.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/cpp/CNESCsvResult.cpp' object='src/cpp/libscislint_algo_la-CNESCsvResult.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscislint_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscislint_algo_la-CNESCsvResult.lo `test -f 'src/cpp/CNESCsvResult.cpp' || echo '$(srcdir)/'`src/cpp/CNESCsvResult.cpp
+
 sci_gateway/cpp/libscislint_la-sci_slint.lo: sci_gateway/cpp/sci_slint.cpp
 @am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscislint_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT sci_gateway/cpp/libscislint_la-sci_slint.lo -MD -MP -MF sci_gateway/cpp/$(DEPDIR)/libscislint_la-sci_slint.Tpo -c -o sci_gateway/cpp/libscislint_la-sci_slint.lo `test -f 'sci_gateway/cpp/sci_slint.cpp' || echo '$(srcdir)/'`sci_gateway/cpp/sci_slint.cpp
 @am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) sci_gateway/cpp/$(DEPDIR)/libscislint_la-sci_slint.Tpo sci_gateway/cpp/$(DEPDIR)/libscislint_la-sci_slint.Plo
diff --git a/scilab/modules/slint/etc/cnes_analysis_conf.xml b/scilab/modules/slint/etc/cnes_analysis_conf.xml
new file mode 100644 (file)
index 0000000..200986a
--- /dev/null
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<analysisConfiguration analysisConfigurationId="myfirstanalysis" analysisConfigurationName="" toolConfigurationId="" projectDevLevel="">
+    <analysisRule analysisRuleId="GlobalKeyword" analysisRuleActivation="true" />
+    <analysisRule analysisRuleId="Redefinition" analysisRuleActivation="true" />
+    <analysisRule analysisRuleId="Variables" analysisRuleActivation="true" />
+    <analysisRule analysisRuleId="FunctionName" analysisRuleActivation="false">
+        <analysisRuleParameter analysisRuleParameterName="pattern" analysisRuleTextValue="[a-z]*" />
+        <analysisRuleParameter analysisRuleParameterName="length" analysisRuleValueMin="-1" analysisRuleValueMax="-1" />
+    </analysisRule>
+    <analysisRule analysisRuleId="FunctionArgs" analysisRuleActivation="false" />
+    <analysisRule analysisRuleId="UselessArg" analysisRuleActivation="true" />
+    <analysisRule analysisRuleId="UselessRet" analysisRuleActivation="true" />
+    <analysisRule analysisRuleId="VariableName" analysisRuleActivation="false">
+        <analysisRuleParameter analysisRuleParameterName="pattern" analysisRuleTextValue="[a-zA-Z0-9]*" />
+        <analysisRuleParameter analysisRuleParameterName="length" analysisRuleValueMin="-1" analysisRuleValueMax="-1" />
+    </analysisRule>
+    <analysisRule analysisRuleId="SingleInstr" analysisRuleActivation="true" />
+    <analysisRule analysisRuleId="EmptyBlock" analysisRuleActivation="false" />
+    <analysisRule analysisRuleId="MopenMclose" analysisRuleActivation="true" />
+    <analysisRule analysisRuleId="McCabe" analysisRuleActivation="true">
+        <analysisRuleParameter analysisRuleParameterName="max" analysisRuleNumericalValue="30" />
+    </analysisRule>
+    <analysisRule analysisRuleId="Decimal" analysisRuleActivation="true">
+        <analysisRuleParameter analysisRuleParameterName="character" analysisRuleTextValue="eE" />
+        <analysisRuleParameter analysisRuleParameterName="checkDot" analysisRuleNumericalValue="1" />
+    </analysisRule>
+    <analysisRule analysisRuleId="Printf" analysisRuleActivation="false" />
+    <analysisRule analysisRuleId="LineLength" analysisRuleActivation="true">
+        <analysisRuleParameter analysisRuleParameterName="max" analysisRuleNumericalValue="80" />
+    </analysisRule>
+    <analysisRule analysisRuleId="LinesCount" analysisRuleActivation="true">
+        <analysisRuleParameter analysisRuleParameterName="max" analysisRuleNumericalValue="200" />
+    </analysisRule>
+    <analysisRule analysisRuleId="Todo" analysisRuleActivation="false" />
+    <analysisRule analysisRuleId="NaN" analysisRuleActivation="true" />
+    <analysisRule analysisRuleId="EqEq" analysisRuleActivation="false" />
+    <analysisRule analysisRuleId="UselessOp" analysisRuleActivation="false" />
+    <analysisRule analysisRuleId="UnreachableCode" analysisRuleActivation="false" />
+    <analysisRule analysisRuleId="Deprecated" analysisRuleActivation="true" />
+    <analysisRule analysisRuleId="Select" analysisRuleActivation="true">
+        <analysisRuleParameter analysisRuleParameterName="default" analysisRuleNumericalValue="1" />
+        <analysisRuleParameter analysisRuleParameterName="homogeneity" analysisRuleNumericalValue="0" />
+        <analysisRuleParameter analysisRuleParameterName="empty" analysisRuleNumericalValue="1" />
+        <analysisRuleParameter analysisRuleParameterName="oneCase" analysisRuleNumericalValue="1" />
+    </analysisRule>
+    <analysisRule analysisRuleId="ImplicitList" analysisRuleActivation="false" />
+    <analysisRule analysisRuleId="OldNot" analysisRuleActivation="true" />
+    <analysisRule analysisRuleId="SpacesAroundOp" analysisRuleActivation="true" />
+    <analysisRule analysisRuleId="SpacesInArgs" analysisRuleActivation="true" />
+    <analysisRule analysisRuleId="BreaksInLoop" analysisRuleActivation="true">
+        <analysisRuleParameter analysisRuleParameterName="maxBreaks" analysisRuleNumericalValue="1" />
+        <analysisRuleParameter analysisRuleParameterName="maxContinues" analysisRuleNumericalValue="1" />
+    </analysisRule>
+    <analysisRule analysisRuleId="NestedBlocks" analysisRuleActivation="true">
+        <analysisRuleParameter analysisRuleParameterName="max" analysisRuleNumericalValue="5" />
+    </analysisRule>
+    <analysisRule analysisRuleId="ExpInCond" analysisRuleActivation="true">
+        <analysisRuleParameter analysisRuleParameterName="max" analysisRuleNumericalValue="5" />
+    </analysisRule>
+    <analysisRule analysisRuleId="Bracketed" analysisRuleActivation="true" />
+    <analysisRule analysisRuleId="NotNot" analysisRuleActivation="true" />
+    <analysisRule analysisRuleId="IllegalCalls" analysisRuleActivation="true">
+        <analysisRuleParameter analysisRuleParameterName="keyword" analysisRuleTextValue="pause" />
+        <analysisRuleParameter analysisRuleParameterName="keyword" analysisRuleTextValue="abort" />
+        <analysisRuleParameter analysisRuleParameterName="keyword" analysisRuleTextValue="quit" />
+        <analysisRuleParameter analysisRuleParameterName="keyword" analysisRuleTextValue="exit" />
+        <analysisRuleParameter analysisRuleParameterName="keyword" analysisRuleTextValue="resume" />
+        <analysisRuleParameter analysisRuleParameterName="keyword" analysisRuleTextValue="stacksize" />
+        <analysisRuleParameter analysisRuleParameterName="keyword" analysisRuleTextValue="lib" />
+        <analysisRuleParameter analysisRuleParameterName="keyword" analysisRuleTextValue="disp" />
+    </analysisRule>
+    <analysisRule analysisRuleId="CommentRatio" analysisRuleActivation="true">
+        <analysisRuleParameter analysisRuleParameterName="ratioMin" analysisRuleNumericalValue="0.33" />
+    </analysisRule>
+    <analysisRule analysisRuleId="FunctionArgsOrder" analysisRuleActivation="true" />
+    <analysisRule analysisRuleId="FunctionTestReturn" analysisRuleActivation="true">
+        <analysisRuleParameter analysisRuleParameterName="keyword" analysisRuleTextValue="mopen" analysisRuleNumericalValue="2" />
+        <analysisRuleParameter analysisRuleParameterName="keyword" analysisRuleTextValue="mclose" analysisRuleNumericalValue="1" />
+        <analysisRuleParameter analysisRuleParameterName="keyword" analysisRuleTextValue="meof" analysisRuleNumericalValue="1" />
+        <analysisRuleParameter analysisRuleParameterName="keyword" analysisRuleTextValue="fileinfo" analysisRuleNumericalValue="2" />
+        <analysisRuleParameter analysisRuleParameterName="keyword" analysisRuleTextValue="evstr" analysisRuleNumericalValue="2" />
+    </analysisRule>
+    <analysisRule analysisRuleId="SemicolonAtEOL" analysisRuleActivation="true" />
+    <analysisRule analysisRuleId="ReturnsCount" analysisRuleActivation="true">
+        <analysisRuleParameter analysisRuleParameterName="max" analysisRuleNumericalValue="1" />
+    </analysisRule>
+    <analysisRule analysisRuleId="NotEqual" analysisRuleActivation="true">
+        <analysisRuleParameter analysisRuleParameterName="operator" analysisRuleTextValue="&lt;&gt;" />
+    </analysisRule>
+</analysisConfiguration>
diff --git a/scilab/modules/slint/etc/cnes_tool_conf.xml b/scilab/modules/slint/etc/cnes_tool_conf.xml
new file mode 100644 (file)
index 0000000..4a8f6c3
--- /dev/null
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<toolConfiguration toolConfigurationId="" toolName="slint" toolVersion="0.0">
+    <ruleLink standardRuleId="SCI.INST.Global" analysisRuleId="GlobalKeyword" ruleCoverage="Complete" standardId=""/>
+    <ruleLink standardRuleId="COM.NAME.Homonymy" analysisRuleId="Redefinition" ruleCoverage="Complete" standardId=""/>
+    <ruleLink standardRuleId="COM.DATA.Initialisation" analysisRuleId="Variables.Uninitialized" ruleCoverage="Complete" standardId=""/>
+    <ruleLink standardRuleId="COM.DATA.NotUsed" analysisRuleId="Variables.Unused" ruleCoverage="Complete" standardId=""/>
+    <ruleLink standardRuleId="" analysisRuleId="FunctionName" ruleCoverage="Complete" standardId=""/>
+    <ruleLink standardRuleId="" analysisRuleId="FunctionArgs" ruleCoverage="Complete" standardId=""/>
+    <ruleLink standardRuleId="COM.DATA.NotUsed" analysisRuleId="UselessArg" ruleCoverage="Complete" standardId=""/>
+    <ruleLink standardRuleId="COM.DATA.NotUsed" analysisRuleId="UselessRet" ruleCoverage="Complete" standardId=""/>
+    <ruleLink standardRuleId="" analysisRuleId="VariableName" ruleCoverage="Complete" standardId=""/>
+    <ruleLink standardRuleId="COM.INST.Line" analysisRuleId="SingleInstr" ruleCoverage="Complete" standardId=""/>
+    <ruleLink standardRuleId="" analysisRuleId="EmptyBlock" ruleCoverage="Complete" standardId=""/>
+    <ruleLink standardRuleId="SCI.INST.EndLine" analysisRuleId="SemicolonAtEOL" ruleCoverage="Complete" standardId=""/>
+    <ruleLink standardRuleId="SCI.DATA.mclose" analysisRuleId="MopenMclose" ruleCoverage="Complete" standardId=""/>
+    <ruleLink standardRuleId="COM.MET.ComplexitySimplified" analysisRuleId="McCabe" ruleCoverage="Complete" standardId=""/>
+    <ruleLink standardRuleId="SCI.PRES.ScientificNotation" analysisRuleId="Decimal" ruleCoverage="Complete" standardId=""/>
+    <ruleLink standardRuleId="" analysisRuleId="Printf" ruleCoverage="Complete" standardId=""/>
+    <ruleLink standardRuleId="SCI.PRES.LengthLine" analysisRuleId="LineLength" ruleCoverage="Complete" standardId=""/>
+    <ruleLink standardRuleId="COM.MET.LineOfCode" analysisRuleId="LinesCount" ruleCoverage="Complete" standardId=""/>
+    <ruleLink standardRuleId="" analysisRuleId="Todo" ruleCoverage="Complete" standardId=""/>
+    <ruleLink standardRuleId="SCI.INST.isNAN" analysisRuleId="NaN" ruleCoverage="Complete" standardId=""/>
+    <ruleLink standardRuleId="" analysisRuleId="EqEq" ruleCoverage="Complete" standardId=""/>
+    <ruleLink standardRuleId="" analysisRuleId="UselessOp" ruleCoverage="Complete" standardId=""/>
+    <ruleLink standardRuleId="" analysisRuleId="UnreachableCode" ruleCoverage="Complete" standardId=""/>
+    <ruleLink standardRuleId="SCI.INST.Deprecated" analysisRuleId="Deprecated" ruleCoverage="Complete" standardId=""/>
+    <ruleLink standardRuleId="COM.FLOW.CaseSwitch" analysisRuleId="Select" ruleCoverage="Complete" standardId=""/>
+    <ruleLink standardRuleId="" analysisRuleId="ImplicitList" ruleCoverage="Complete" standardId=""/>
+    <ruleLink standardRuleId="SCI.INST.At" analysisRuleId="OldNot" ruleCoverage="Complete" standardId=""/>
+    <ruleLink standardRuleId="COM.PRES.Ventilate" analysisRuleId="SpacesAroundOp" ruleCoverage="Complete" standardId=""/>
+    <ruleLink standardRuleId="COM.PRES.Ventilate" analysisRuleId="SpacesInArgs" ruleCoverage="Complete" standardId=""/>
+    <ruleLink standardRuleId="SCI.INST.Break" analysisRuleId="BreaksInLoop.Break" ruleCoverage="Complete" standardId=""/>
+    <ruleLink standardRuleId="SCI.INST.Continue" analysisRuleId="BreaksInLoop.Continue" ruleCoverage="Complete" standardId=""/>
+    <ruleLink standardRuleId="COM.MET.Nesting" analysisRuleId="NestedBlocks" ruleCoverage="Complete" standardId=""/>
+    <ruleLink standardRuleId="COM.FLOW.BooleanExpression" analysisRuleId="ExpInCond" ruleCoverage="Complete" standardId=""/>
+    <ruleLink standardRuleId="COM.INST.Brace" analysisRuleId="BracketedExp" ruleCoverage="Complete" standardId=""/>
+    <ruleLink standardRuleId="COM.INST.BoolNegation" analysisRuleId="NotNot" ruleCoverage="Complete" standardId=""/>
+    <ruleLink standardRuleId="SCI.INST.BannedFunction" analysisRuleId="IllegalCalls" ruleCoverage="Complete" standardId=""/>
+    <ruleLink standardRuleId="COM.MET.RatioComment" analysisRuleId="CommentRatio" ruleCoverage="Complete" standardId=""/>
+    <ruleLink standardRuleId="SCI.FLOW.ArgumentName" analysisRuleId="FunctionArgsOrder" ruleCoverage="Complete" standardId=""/>
+    <ruleLink standardRuleId="COM.FLOW.CheckCodeReturn" analysisRuleId="FunctionTestReturn" ruleCoverage="Complete" standardId=""/>
+    <ruleLink standardRuleId="COM.FLOW.Exit" analysisRuleId="ReturnsCount" ruleCoverage="Complete" standardId=""/>
+    <ruleLink standardRuleId="SCI.PRES.Comparison" analysisRuleId="NotEqual" ruleCoverage="Complete" standardId=""/>
+</toolConfiguration>
index 8dc3728..b34c8b6 100644 (file)
@@ -12,7 +12,7 @@
     <EmptyBlock enable="true" id="00010"/>
     <MopenMclose enable="true" id="00011"/>
     <McCabe enable="true" max="30" id="00012"/>
-    <Decimal enable="true" character="e" checkDot="true" id="00013"/>
+    <Decimal enable="true" character="eE" checkDot="true" id="00013"/>
     <Printf enable="true" id="00014"/>
     <LineLength enable="true" max="80" id="00015"/>
     <LinesCount enable="true" max="200" id="00016"/>
@@ -30,8 +30,8 @@
     <SpacesAroundOp enable="true" id="00028"/>
     <SpacesInArgs enable="true" id="00029"/>
     <BreaksInLoop enable="true" maxBreaks="1" maxContinues="1" id="00030"/>
-    <NestedBlocks enable="true" max="5" id="00031"/>
-    <StatInCond enable="true" max="5" id="00032"/>
+    <NestedBlocks enable="true" max="3" id="00031"/>
+    <ExpInCond enable="true" max="5" id="00032"/>
     <BracketedExp enable="true" id="00033"/>
     <NotNot enable="true" id="00034"/>
     <IllegalCalls enable="true" id="00035">
@@ -40,7 +40,6 @@
         <keyword name="quit"/>
         <keyword name="exit"/>
         <keyword name="resume"/>
-        
         <keyword name="stacksize"/>
         <keyword name="lib"/>
         <keyword name="disp"/>
@@ -56,4 +55,5 @@
     </FunctionTestReturn>
     <SemicolonAtEOL enable="true" id="00039"/>
     <ReturnsCount enable="true" max="1" id="00040"/>
+    <NotEqual enable="true" operator="&lt;&gt;" id="00041"/>
 </configuration>
diff --git a/scilab/modules/slint/help/en_US/BracketedExp.xml b/scilab/modules/slint/help/en_US/BracketedExp.xml
new file mode 100644 (file)
index 0000000..0a0c728
--- /dev/null
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="BracketedExpChecker" xml:lang="en">
+    <refnamediv>
+        <refname>Checker for bracketed expressions</refname>
+    </refnamediv>
+    <refsection>
+        <title>Description</title>
+        <para>
+            Check that expressions are bracketed: that increases the code readability.
+        </para>
+    </refsection>
+    <refsection role="see also">
+        <title>See Also</title>
+        <simplelist type="inline">
+            <member>
+                <link linkend="slint">slint</link>
+            </member>
+        </simplelist>
+    </refsection>
+</refentry>
diff --git a/scilab/modules/slint/help/en_US/BreaksInLoop.xml b/scilab/modules/slint/help/en_US/BreaksInLoop.xml
new file mode 100644 (file)
index 0000000..4a8426a
--- /dev/null
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="BreaksInLoopChecker" xml:lang="en">
+    <refnamediv>
+        <refname>Checker to count break or coninue in loops</refname>
+    </refnamediv>
+    <refsection>
+        <title>Description</title>
+        <para>
+            Check that numbers of break or continue in a loop are lesser than a maximum.
+        </para>
+    </refsection>
+    <refsection role="see also">
+        <title>See Also</title>
+        <simplelist type="inline">
+            <member>
+                <link linkend="slint">slint</link>
+            </member>
+        </simplelist>
+    </refsection>
+</refentry>
diff --git a/scilab/modules/slint/help/en_US/CommentRatio.xml b/scilab/modules/slint/help/en_US/CommentRatio.xml
new file mode 100644 (file)
index 0000000..402cfe4
--- /dev/null
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="CommentRatioChecker" xml:lang="en">
+    <refnamediv>
+        <refname>Checker for comment ratio</refname>
+    </refnamediv>
+    <refsection>
+        <title>Description</title>
+        <para>
+            Compute and check the ratio between number of lines and number of comments.
+        </para>
+    </refsection>
+    <refsection role="see also">
+        <title>See Also</title>
+        <simplelist type="inline">
+            <member>
+                <link linkend="slint">slint</link>
+            </member>
+        </simplelist>
+    </refsection>
+</refentry>
diff --git a/scilab/modules/slint/help/en_US/Decimal.xml b/scilab/modules/slint/help/en_US/Decimal.xml
new file mode 100644 (file)
index 0000000..51b9252
--- /dev/null
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="DecimalChecker" xml:lang="en">
+    <refnamediv>
+        <refname>Checker for format of decimal numbers</refname>
+    </refnamediv>
+    <refsection>
+        <title>Description</title>
+        <para>
+            Check if a decimal number begins with a dot and if the decimal exponent is the correct character.
+        </para>
+    </refsection>
+    <refsection role="see also">
+        <title>See Also</title>
+        <simplelist type="inline">
+            <member>
+                <link linkend="slint">slint</link>
+            </member>
+        </simplelist>
+    </refsection>
+</refentry>
diff --git a/scilab/modules/slint/help/en_US/Deprecated.xml b/scilab/modules/slint/help/en_US/Deprecated.xml
new file mode 100644 (file)
index 0000000..f7b25fc
--- /dev/null
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="DeprecatedChecker" xml:lang="en">
+    <refnamediv>
+        <refname>Checker for deprecated functions</refname>
+    </refnamediv>
+    <refsection>
+        <title>Description</title>
+        <para>
+            Check for deprecated functions use.
+        </para>
+    </refsection>
+    <refsection role="see also">
+        <title>See Also</title>
+        <simplelist type="inline">
+            <member>
+                <link linkend="slint">slint</link>
+            </member>
+        </simplelist>
+    </refsection>
+</refentry>
diff --git a/scilab/modules/slint/help/en_US/EmptyBlock.xml b/scilab/modules/slint/help/en_US/EmptyBlock.xml
new file mode 100644 (file)
index 0000000..edb5b2e
--- /dev/null
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="EmptyBlockChecker" xml:lang="en">
+    <refnamediv>
+        <refname>Checker for empty block</refname>
+    </refnamediv>
+    <refsection>
+        <title>Description</title>
+        <para>
+            Check if there are some empty blocks.
+        </para>
+    </refsection>
+    <refsection role="see also">
+        <title>See Also</title>
+        <simplelist type="inline">
+            <member>
+                <link linkend="slint">slint</link>
+            </member>
+        </simplelist>
+    </refsection>
+</refentry>
diff --git a/scilab/modules/slint/help/en_US/EqEq.xml b/scilab/modules/slint/help/en_US/EqEq.xml
new file mode 100644 (file)
index 0000000..a78a89b
--- /dev/null
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="EqEqChecker" xml:lang="en">
+    <refnamediv>
+        <refname>Checker for == as assignment</refname>
+    </refnamediv>
+    <refsection>
+        <title>Description</title>
+        <para>
+            Check if the equality operator is used in a single instruction.
+        </para>
+    </refsection>
+    <refsection>
+        <title>Examples</title>
+        <programlisting role="example"><![CDATA[
+function y = foo(x)
+  y == x + 1; // probably a typo
+endfunction
+    ]]></programlisting>
+    </refsection>
+    <refsection role="see also">
+        <title>See Also</title>
+        <simplelist type="inline">
+            <member>
+                <link linkend="slint">slint</link>
+            </member>
+        </simplelist>
+    </refsection>
+</refentry>
diff --git a/scilab/modules/slint/help/en_US/FunctionArgs.xml b/scilab/modules/slint/help/en_US/FunctionArgs.xml
new file mode 100644 (file)
index 0000000..fc8e48d
--- /dev/null
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="FunctionArgsChecker" xml:lang="en">
+    <refnamediv>
+        <refname>Checker for function's arguments</refname>
+    </refnamediv>
+    <refsection>
+        <title>Description</title>
+        <para>
+            Check if a function's argument (in/out) have no duplicate.
+        </para>
+    </refsection>
+    <refsection>
+        <title>Examples</title>
+        <programlisting role="example"><![CDATA[
+function y = foo(a, b, c, a) // probably an error
+   ...
+endfunction
+
+function [y, a] = foo(a, b, c) // not necessarily an error but could be one
+   ...
+endfunction   
+    ]]></programlisting>
+    </refsection>
+    <refsection role="see also">
+        <title>See Also</title>
+        <simplelist type="inline">
+            <member>
+                <link linkend="slint">slint</link>
+            </member>
+        </simplelist>
+    </refsection>
+</refentry>
diff --git a/scilab/modules/slint/help/en_US/FunctionArgsOrder.xml b/scilab/modules/slint/help/en_US/FunctionArgsOrder.xml
new file mode 100644 (file)
index 0000000..2935226
--- /dev/null
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="FunctionArgsOrderChecker" xml:lang="en">
+    <refnamediv>
+        <refname>Checker for order in function arguments</refname>
+    </refnamediv>
+    <refsection>
+        <title>Description</title>
+        <para>
+            Check that optional arguments are called at the right place.
+        </para>
+    </refsection>
+    <refsection>
+        <title>Examples</title>
+        <programlisting role="example"><![CDATA[
+function foo(a, b, c)
+...
+endfunction
+
+function faa(x, y, z)
+   foo(x, b = 1, z) // not ok
+endfunction
+
+function fee(x, y, z)
+   foo(x, b = 1, c = 2) // ok
+endfunction
+
+function fii(x, y, z)
+   foo(x, c = 2, b = 1) // not ok
+endfunction
+    ]]></programlisting>
+    </refsection>
+    <refsection role="see also">
+        <title>See Also</title>
+        <simplelist type="inline">
+            <member>
+                <link linkend="slint">slint</link>
+            </member>
+        </simplelist>
+    </refsection>
+</refentry>
diff --git a/scilab/modules/slint/help/en_US/FunctionName.xml b/scilab/modules/slint/help/en_US/FunctionName.xml
new file mode 100644 (file)
index 0000000..b8d62e3
--- /dev/null
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="FunctionNameChecker" xml:lang="en">
+    <refnamediv>
+        <refname>Checker for function name</refname>
+    </refnamediv>
+    <refsection>
+        <title>Description</title>
+        <para>
+            Check if a function's name matches a regex pattern.
+        </para>
+    </refsection>
+    <refsection role="see also">
+        <title>See Also</title>
+        <simplelist type="inline">
+            <member>
+                <link linkend="slint">slint</link>
+            </member>
+        </simplelist>
+    </refsection>
+</refentry>
diff --git a/scilab/modules/slint/help/en_US/FunctionTestReturn.xml b/scilab/modules/slint/help/en_US/FunctionTestReturn.xml
new file mode 100644 (file)
index 0000000..dfba07d
--- /dev/null
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="FunctionTestReturnChecker" xml:lang="en">
+    <refnamediv>
+        <refname>Checker error on function return</refname>
+    </refnamediv>
+    <refsection>
+        <title>Description</title>
+        <para>
+            Check that the return of functions which have an error indicator are tested. The list of such functions is configurable.
+        </para>
+    </refsection>
+    <refsection>
+        <title>Examples</title>
+        <programlisting role="example"><![CDATA[
+function foo(a, b, c)
+   [fd, err] = mopen(...) // ok err is returned
+   if err ... then // ok err is checked
+      ...
+   end
+   ...
+   mclose(fd);
+endfunction
+    ]]></programlisting>
+    </refsection>
+    <refsection role="see also">
+        <title>See Also</title>
+        <simplelist type="inline">
+            <member>
+                <link linkend="slint">slint</link>
+            </member>
+        </simplelist>
+    </refsection>
+</refentry>
diff --git a/scilab/modules/slint/help/en_US/GlobalKeyword.xml b/scilab/modules/slint/help/en_US/GlobalKeyword.xml
new file mode 100644 (file)
index 0000000..dc69963
--- /dev/null
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="GlobalKeywordChecker" xml:lang="en">
+    <refnamediv>
+        <refname>Checker for global keyword</refname>
+    </refnamediv>
+    <refsection>
+        <title>Description</title>
+        <para>
+            Check if the keyword <code>global</code> is present.
+        </para>
+    </refsection>
+    <refsection>
+        <title>Examples</title>
+        <programlisting role="example"><![CDATA[
+function y = foo(x)
+    global z
+endfunction
+    ]]></programlisting>
+    </refsection>
+    <refsection role="see also">
+        <title>See Also</title>
+        <simplelist type="inline">
+            <member>
+                <link linkend="slint">slint</link>
+            </member>
+        </simplelist>
+    </refsection>
+</refentry>
diff --git a/scilab/modules/slint/help/en_US/IllegalCalls.xml b/scilab/modules/slint/help/en_US/IllegalCalls.xml
new file mode 100644 (file)
index 0000000..78e2e2b
--- /dev/null
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="IllegalCallsChecker" xml:lang="en">
+    <refnamediv>
+        <refname>Checker for illegal calls</refname>
+    </refnamediv>
+    <refsection>
+        <title>Description</title>
+        <para>
+            Check that function calls are allowed: the list of illegal calls is configurable.
+        </para>
+    </refsection>
+    <refsection role="see also">
+        <title>See Also</title>
+        <simplelist type="inline">
+            <member>
+                <link linkend="slint">slint</link>
+            </member>
+        </simplelist>
+    </refsection>
+</refentry>
diff --git a/scilab/modules/slint/help/en_US/ImplicitList.xml b/scilab/modules/slint/help/en_US/ImplicitList.xml
new file mode 100644 (file)
index 0000000..893c84e
--- /dev/null
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="ImplicitListChecker" xml:lang="en">
+    <refnamediv>
+        <refname>Checker for implicitit list</refname>
+    </refnamediv>
+    <refsection>
+        <title>Description</title>
+        <para>
+            Check if an implicit list doesn't contain %nan or %inf and if one of the argument is not an implicit list itself.
+        </para>
+    </refsection>
+    <refsection role="see also">
+        <title>See Also</title>
+        <simplelist type="inline">
+            <member>
+                <link linkend="slint">slint</link>
+            </member>
+        </simplelist>
+    </refsection>
+</refentry>
diff --git a/scilab/modules/slint/help/en_US/LineLength.xml b/scilab/modules/slint/help/en_US/LineLength.xml
new file mode 100644 (file)
index 0000000..6594dfd
--- /dev/null
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="LineLengthChecker" xml:lang="en">
+    <refnamediv>
+        <refname>Checker for line length</refname>
+    </refnamediv>
+    <refsection>
+        <title>Description</title>
+        <para>
+            Check the line length.
+        </para>
+    </refsection>
+    <refsection role="see also">
+        <title>See Also</title>
+        <simplelist type="inline">
+            <member>
+                <link linkend="slint">slint</link>
+            </member>
+        </simplelist>
+    </refsection>
+</refentry>
diff --git a/scilab/modules/slint/help/en_US/LinesCount.xml b/scilab/modules/slint/help/en_US/LinesCount.xml
new file mode 100644 (file)
index 0000000..96cff6d
--- /dev/null
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="LinesCountChecker" xml:lang="en">
+    <refnamediv>
+        <refname>Checker for lines count</refname>
+    </refnamediv>
+    <refsection>
+        <title>Description</title>
+        <para>
+            Check the lines count inside a function body. Have too much lines can decrease the readability.
+        </para>
+    </refsection>
+    <refsection role="see also">
+        <title>See Also</title>
+        <simplelist type="inline">
+            <member>
+                <link linkend="slint">slint</link>
+            </member>
+        </simplelist>
+    </refsection>
+</refentry>
diff --git a/scilab/modules/slint/help/en_US/LoadSave.xml b/scilab/modules/slint/help/en_US/LoadSave.xml
new file mode 100644 (file)
index 0000000..47ed7ee
--- /dev/null
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="LoadSaveChecker" xml:lang="en">
+    <refnamediv>
+        <refname>Checker for load/save functions</refname>
+    </refnamediv>
+    <refsection>
+        <title>Description</title>
+        <para>
+            Check that load and save functions are used with variables name arguments.
+        </para>
+    </refsection>
+    <refsection role="see also">
+        <title>See Also</title>
+        <simplelist type="inline">
+            <member>
+                <link linkend="slint">slint</link>
+            </member>
+        </simplelist>
+    </refsection>
+</refentry>
diff --git a/scilab/modules/slint/help/en_US/McCabe.xml b/scilab/modules/slint/help/en_US/McCabe.xml
new file mode 100644 (file)
index 0000000..0f86b9b
--- /dev/null
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="McCabeChecker" xml:lang="en">
+    <refnamediv>
+        <refname>Checker for McCabe complexity</refname>
+    </refnamediv>
+    <refsection>
+        <title>Description</title>
+        <para>
+            Compute the simplified McCabe complexity and compare it to a reference.
+        </para>
+    </refsection>
+    <refsection role="see also">
+        <title>See Also</title>
+        <simplelist type="inline">
+            <member>
+                <link linkend="slint">slint</link>
+            </member>
+        </simplelist>
+    </refsection>
+</refentry>
diff --git a/scilab/modules/slint/help/en_US/MopenMclose.xml b/scilab/modules/slint/help/en_US/MopenMclose.xml
new file mode 100644 (file)
index 0000000..8872d23
--- /dev/null
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="MopenMcloseChecker" xml:lang="en">
+    <refnamediv>
+        <refname>Checker for mopen/mclose functions</refname>
+    </refnamediv>
+    <refsection>
+        <title>Description</title>
+        <para>
+            Check when it's possible if the files opened with mopen are closed with mclose and check if <code>mclose("all")</code> is not used (because it could have some side-effects).
+        </para>
+    </refsection>
+    <refsection role="see also">
+        <title>See Also</title>
+        <simplelist type="inline">
+            <member>
+                <link linkend="slint">slint</link>
+            </member>
+        </simplelist>
+    </refsection>
+</refentry>
diff --git a/scilab/modules/slint/help/en_US/NaN.xml b/scilab/modules/slint/help/en_US/NaN.xml
new file mode 100644 (file)
index 0000000..2e25266
--- /dev/null
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="NaNChecker" xml:lang="en">
+    <refnamediv>
+        <refname>Checker for NaN in comparisons</refname>
+    </refnamediv>
+    <refsection>
+        <title>Description</title>
+        <para>
+            Most of the time compare a number with NaN isn't a good idea. Use <code>isnan</code> is better.
+        </para>
+    </refsection>
+    <refsection role="see also">
+        <title>See Also</title>
+        <simplelist type="inline">
+            <member>
+                <link linkend="slint">slint</link>
+            </member>
+        </simplelist>
+    </refsection>
+</refentry>
diff --git a/scilab/modules/slint/help/en_US/NestedBlocks.xml b/scilab/modules/slint/help/en_US/NestedBlocks.xml
new file mode 100644 (file)
index 0000000..69ef856
--- /dev/null
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="NestedBlocksChecker" xml:lang="en">
+    <refnamediv>
+        <refname>Checker to count the nested blocks</refname>
+    </refnamediv>
+    <refsection>
+        <title>Description</title>
+        <para>
+            Check that numbers of nested blocks are lesser than a maximum.
+        </para>
+    </refsection>
+    <refsection role="see also">
+        <title>See Also</title>
+        <simplelist type="inline">
+            <member>
+                <link linkend="slint">slint</link>
+            </member>
+        </simplelist>
+    </refsection>
+</refentry>
diff --git a/scilab/modules/slint/help/en_US/NotEqual.xml b/scilab/modules/slint/help/en_US/NotEqual.xml
new file mode 100644 (file)
index 0000000..b2ff945
--- /dev/null
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="NotEqualChecker" xml:lang="en">
+    <refnamediv>
+        <refname>Checker for 'not equal' operator</refname>
+    </refnamediv>
+    <refsection>
+        <title>Description</title>
+        <para>
+            The 'not equal' operator can be written '~=', '@=' or '&lt;&gt;', so check that only one is used.
+        </para>
+    </refsection>
+    <refsection role="see also">
+        <title>See Also</title>
+        <simplelist type="inline">
+            <member>
+                <link linkend="slint">slint</link>
+            </member>
+        </simplelist>
+    </refsection>
+</refentry>
diff --git a/scilab/modules/slint/help/en_US/NotNotChecker.xml b/scilab/modules/slint/help/en_US/NotNotChecker.xml
new file mode 100644 (file)
index 0000000..fd979bc
--- /dev/null
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="NotNotChecker" xml:lang="en">
+    <refnamediv>
+        <refname>Checker for double negation</refname>
+    </refnamediv>
+    <refsection>
+        <title>Description</title>
+        <para>
+            Check that double negation are not used.
+        </para>
+    </refsection>
+    <refsection role="see also">
+        <title>See Also</title>
+        <simplelist type="inline">
+            <member>
+                <link linkend="slint">slint</link>
+            </member>
+        </simplelist>
+    </refsection>
+</refentry>
diff --git a/scilab/modules/slint/help/en_US/OldNot.xml b/scilab/modules/slint/help/en_US/OldNot.xml
new file mode 100644 (file)
index 0000000..437ee98
--- /dev/null
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="OldNotChecker" xml:lang="en">
+    <refnamediv>
+        <refname>Checker for old not operator</refname>
+    </refnamediv>
+    <refsection>
+        <title>Description</title>
+        <para>
+            Check for use of not operator '@', '~' is preferable.
+        </para>
+    </refsection>
+    <refsection role="see also">
+        <title>See Also</title>
+        <simplelist type="inline">
+            <member>
+                <link linkend="slint">slint</link>
+            </member>
+        </simplelist>
+    </refsection>
+</refentry>
diff --git a/scilab/modules/slint/help/en_US/Printf.xml b/scilab/modules/slint/help/en_US/Printf.xml
new file mode 100644 (file)
index 0000000..92e5455
--- /dev/null
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="PrintfChecker" xml:lang="en">
+    <refnamediv>
+        <refname>Checker for printf function</refname>
+    </refnamediv>
+    <refsection>
+        <title>Description</title>
+        <para>
+            Check when it's possible if the number of %foo in printf first argument corresponds to the number of printf arguments.
+        </para>
+    </refsection>
+    <refsection role="see also">
+        <title>See Also</title>
+        <simplelist type="inline">
+            <member>
+                <link linkend="slint">slint</link>
+            </member>
+        </simplelist>
+    </refsection>
+</refentry>
diff --git a/scilab/modules/slint/help/en_US/Redefinition.xml b/scilab/modules/slint/help/en_US/Redefinition.xml
new file mode 100644 (file)
index 0000000..28fe4a0
--- /dev/null
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="RedefinitionChecker" xml:lang="en">
+    <refnamediv>
+        <refname>Checker for redefinition</refname>
+    </refnamediv>
+    <refsection>
+        <title>Description</title>
+        <para>
+            Check if a variable redefines a Scilab's constant, built-in or macro.
+        </para>
+        <para>
+            Redefine a Scilab's variable could have undesirable side-effects, so it should be avoided.
+        </para>
+    </refsection>
+    <refsection>
+        <title>Examples</title>
+        <programlisting role="example"><![CDATA[
+function y = foo(x)
+    y = x
+endfunction
+
+function y = bar(x)
+    y = foo(x)
+endfunction
+
+function y = oof(x) // call oof(2) doesn't return 2 !
+    foo = rand(x, 1);
+    y = bar(x)
+endfunction    
+    ]]></programlisting>
+    </refsection>
+    <refsection role="see also">
+        <title>See Also</title>
+        <simplelist type="inline">
+            <member>
+                <link linkend="slint">slint</link>
+            </member>
+        </simplelist>
+    </refsection>
+</refentry>
diff --git a/scilab/modules/slint/help/en_US/ReturnsCount.xml b/scilab/modules/slint/help/en_US/ReturnsCount.xml
new file mode 100644 (file)
index 0000000..05f7a15
--- /dev/null
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="ReturnsCountChecker" xml:lang="en">
+    <refnamediv>
+        <refname>Checker to count return in a function</refname>
+    </refnamediv>
+    <refsection>
+        <title>Description</title>
+        <para>
+            Check that number of return in a function is lesser than a maximum.
+        </para>
+    </refsection>
+    <refsection role="see also">
+        <title>See Also</title>
+        <simplelist type="inline">
+            <member>
+                <link linkend="slint">slint</link>
+            </member>
+        </simplelist>
+    </refsection>
+</refentry>
diff --git a/scilab/modules/slint/help/en_US/Select.xml b/scilab/modules/slint/help/en_US/Select.xml
new file mode 100644 (file)
index 0000000..9dea9d5
--- /dev/null
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="SelectChecker" xml:lang="en">
+    <refnamediv>
+        <refname>Checker for select</refname>
+    </refnamediv>
+    <refsection>
+        <title>Description</title>
+        <para>
+            Check if select has a default case, if it has at least a case.
+        </para>
+        <para>
+            Check the homogeneity of the case expressions: all are constant scalar strings or constant scalar double.
+        </para>
+    </refsection>
+    <refsection role="see also">
+        <title>See Also</title>
+        <simplelist type="inline">
+            <member>
+                <link linkend="slint">slint</link>
+            </member>
+        </simplelist>
+    </refsection>
+</refentry>
diff --git a/scilab/modules/slint/help/en_US/SemicolonAtEOL.xml b/scilab/modules/slint/help/en_US/SemicolonAtEOL.xml
new file mode 100644 (file)
index 0000000..bed7702
--- /dev/null
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="SemicolonAtEOLChecker" xml:lang="en">
+    <refnamediv>
+        <refname>Checker for semicolon at end of line</refname>
+    </refnamediv>
+    <refsection>
+        <title>Description</title>
+        <para>
+            Check that lines are finished with a semicolon.
+        </para>
+    </refsection>
+    <refsection role="see also">
+        <title>See Also</title>
+        <simplelist type="inline">
+            <member>
+                <link linkend="slint">slint</link>
+            </member>
+        </simplelist>
+    </refsection>
+</refentry>
diff --git a/scilab/modules/slint/help/en_US/SingleInstr.xml b/scilab/modules/slint/help/en_US/SingleInstr.xml
new file mode 100644 (file)
index 0000000..4279822
--- /dev/null
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="SingleInstrChecker" xml:lang="en">
+    <refnamediv>
+        <refname>Checker for single instruction</refname>
+    </refnamediv>
+    <refsection>
+        <title>Description</title>
+        <para>
+            Check if there is a single instruction on each line.
+        </para>
+    </refsection>
+    <refsection role="see also">
+        <title>See Also</title>
+        <simplelist type="inline">
+            <member>
+                <link linkend="slint">slint</link>
+            </member>
+        </simplelist>
+    </refsection>
+</refentry>
diff --git a/scilab/modules/slint/help/en_US/SpacesInArgs.xml b/scilab/modules/slint/help/en_US/SpacesInArgs.xml
new file mode 100644 (file)
index 0000000..4fcb8fd
--- /dev/null
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="SpacesInArgsChecker" xml:lang="en">
+    <refnamediv>
+        <refname>Checker for spaces in arguments separated with commas</refname>
+    </refnamediv>
+    <refsection>
+        <title>Description</title>
+        <para>
+            Check that there is a space after each comma in function arguments.
+        </para>
+    </refsection>
+    <refsection role="see also">
+        <title>See Also</title>
+        <simplelist type="inline">
+            <member>
+                <link linkend="slint">slint</link>
+            </member>
+        </simplelist>
+    </refsection>
+</refentry>
diff --git a/scilab/modules/slint/help/en_US/StatInCond.xml b/scilab/modules/slint/help/en_US/StatInCond.xml
new file mode 100644 (file)
index 0000000..1c70646
--- /dev/null
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="StatInCondChecker" xml:lang="en">
+    <refnamediv>
+        <refname>Checker to count the statements in a condition (if or while condition)</refname>
+    </refnamediv>
+    <refsection>
+        <title>Description</title>
+        <para>
+            Check that number of statements in a condition is lesser than a maximum.
+        </para>
+    </refsection>
+    <refsection role="see also">
+        <title>See Also</title>
+        <simplelist type="inline">
+            <member>
+                <link linkend="slint">slint</link>
+            </member>
+        </simplelist>
+    </refsection>
+</refentry>
diff --git a/scilab/modules/slint/help/en_US/Struct.xml b/scilab/modules/slint/help/en_US/Struct.xml
new file mode 100644 (file)
index 0000000..1bb0b68
--- /dev/null
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="StructChecker" xml:lang="en">
+    <refnamediv>
+        <refname>Checker for struct</refname>
+    </refnamediv>
+    <refsection>
+        <title>Description</title>
+        <para>
+            Check the struct definition (even number of arguments, field names are strings and match a regex pattern).
+        </para>
+    </refsection>
+    <refsection role="see also">
+        <title>See Also</title>
+        <simplelist type="inline">
+            <member>
+                <link linkend="slint">slint</link>
+            </member>
+        </simplelist>
+    </refsection>
+</refentry>
diff --git a/scilab/modules/slint/help/en_US/TodoChecker.xml b/scilab/modules/slint/help/en_US/TodoChecker.xml
new file mode 100644 (file)
index 0000000..b321ae3
--- /dev/null
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="TodoChecker" xml:lang="en">
+    <refnamediv>
+        <refname>Checker for todo in comments</refname>
+    </refnamediv>
+    <refsection>
+        <title>Description</title>
+        <para>
+            Check if todo is present in comments. Most of the time, when there's a todo, it's probably that something must be finished.
+        </para>
+    </refsection>
+    <refsection role="see also">
+        <title>See Also</title>
+        <simplelist type="inline">
+            <member>
+                <link linkend="slint">slint</link>
+            </member>
+        </simplelist>
+    </refsection>
+</refentry>
diff --git a/scilab/modules/slint/help/en_US/UnreachableCode.xml b/scilab/modules/slint/help/en_US/UnreachableCode.xml
new file mode 100644 (file)
index 0000000..1f92788
--- /dev/null
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="UnreachableCodeChecker" xml:lang="en">
+    <refnamediv>
+        <refname>Checker for unreachable code</refname>
+    </refnamediv>
+    <refsection>
+        <title>Description</title>
+        <para>
+            Check for unreachable code (after a break or return). Unreachable code decreases code readability.
+        </para>
+    </refsection>
+    <refsection role="see also">
+        <title>See Also</title>
+        <simplelist type="inline">
+            <member>
+                <link linkend="slint">slint</link>
+            </member>
+        </simplelist>
+    </refsection>
+</refentry>
diff --git a/scilab/modules/slint/help/en_US/UselessArg.xml b/scilab/modules/slint/help/en_US/UselessArg.xml
new file mode 100644 (file)
index 0000000..e44f3b9
--- /dev/null
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="UselessArgChecker" xml:lang="en">
+    <refnamediv>
+        <refname>Checker for function's arguments</refname>
+    </refnamediv>
+    <refsection>
+        <title>Description</title>
+        <para>
+            Check if a function's argument is useless or not. Useless arguments can decrease the readability.
+        </para>
+    </refsection>
+    <refsection role="see also">
+        <title>See Also</title>
+        <simplelist type="inline">
+            <member>
+                <link linkend="slint">slint</link>
+            </member>
+        </simplelist>
+    </refsection>
+</refentry>
diff --git a/scilab/modules/slint/help/en_US/UselessOp.xml b/scilab/modules/slint/help/en_US/UselessOp.xml
new file mode 100644 (file)
index 0000000..0fdaae6
--- /dev/null
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="UselessOpChecker" xml:lang="en">
+    <refnamediv>
+        <refname>Checker for useless operations</refname>
+    </refnamediv>
+    <refsection>
+        <title>Description</title>
+        <para>
+            Check if an operation without assignment is used in a single instruction.
+        </para>
+    </refsection>
+    <refsection>
+        <title>Examples</title>
+        <programlisting role="example"><![CDATA[
+function y = foo(x)
+  x + 1; // probably useless
+endfunction
+    ]]></programlisting>
+    </refsection>
+    <refsection role="see also">
+        <title>See Also</title>
+        <simplelist type="inline">
+            <member>
+                <link linkend="slint">slint</link>
+            </member>
+        </simplelist>
+    </refsection>
+</refentry>
diff --git a/scilab/modules/slint/help/en_US/VariableName.xml b/scilab/modules/slint/help/en_US/VariableName.xml
new file mode 100644 (file)
index 0000000..723da9d
--- /dev/null
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="VariableNameChecker" xml:lang="en">
+    <refnamediv>
+        <refname>Checker for variable name</refname>
+    </refnamediv>
+    <refsection>
+        <title>Description</title>
+        <para>
+            Check if a variable's name matches a regex pattern.
+        </para>
+    </refsection>
+    <refsection role="see also">
+        <title>See Also</title>
+        <simplelist type="inline">
+            <member>
+                <link linkend="slint">slint</link>
+            </member>
+        </simplelist>
+    </refsection>
+</refentry>
diff --git a/scilab/modules/slint/help/en_US/Variables.xml b/scilab/modules/slint/help/en_US/Variables.xml
new file mode 100644 (file)
index 0000000..e6c8d9f
--- /dev/null
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="VariablesChecker" xml:lang="en">
+    <refnamediv>
+        <refname>Checker for variables use</refname>
+    </refnamediv>
+    <refsection>
+        <title>Description</title>
+        <para>
+            Check if a declared or uninitialized variable is used.
+        </para>
+        <para>
+            Initialized and unused variables are useless and can decrease the readability.
+        </para>
+        <para>
+            When an uninitialized variable is used its value is taken in the previous scope if defined so it could have side-effects.
+        </para>
+    </refsection>
+    <refsection>
+        <title>Examples</title>
+        <programlisting role="example"><![CDATA[
+function y = foo(x)
+    scilab = 123;
+    y = bar(x);
+endfunction
+
+function y = bar(x)
+    Scilab = 456;
+    y = scilab + 1; // typo error
+endfunction
+    ]]></programlisting>
+    </refsection>
+    <refsection role="see also">
+        <title>See Also</title>
+        <simplelist type="inline">
+            <member>
+                <link linkend="slint">slint</link>
+            </member>
+        </simplelist>
+    </refsection>
+</refentry>
diff --git a/scilab/modules/slint/help/en_US/addchapter.sce b/scilab/modules/slint/help/en_US/addchapter.sce
new file mode 100644 (file)
index 0000000..cd9fc26
--- /dev/null
@@ -0,0 +1,10 @@
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution.  The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+add_help_chapter("Lint tool (SLint)",SCI+"/modules/slint/help/en_US",%T);
diff --git a/scilab/modules/slint/help/en_US/slint.xml b/scilab/modules/slint/help/en_US/slint.xml
new file mode 100644 (file)
index 0000000..fb5a5d5
--- /dev/null
@@ -0,0 +1,195 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="slint" xml:lang="en">
+    <refnamediv>
+        <refname>slint</refname>
+        <refpurpose>Call the lint tool</refpurpose>
+    </refnamediv>
+    <refsynopsisdiv>
+        <title>Calling Sequence</title>
+        <synopsis>
+            slint(files [, conf, out])
+            slint(files [, out])
+            out = slint(files [, conf], print)
+        </synopsis>
+    </refsynopsisdiv>
+    <refsection>
+        <title>Arguments</title>
+        <variablelist>
+            <varlistentry>
+                <term>files</term>
+                <listitem>
+                    <para>a matrix of strings, the .sci files or the directories to analyze.</para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term>conf</term>
+                <listitem>
+                    <para>a scalar string, the name of the configuration file (by default it's SCI/modules/slint/etc/slint.xml).</para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term>out</term>
+                <listitem>
+                    <para>a scalar string, the name of the output file.</para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term>print</term>
+                <listitem>
+                    <para>a scalar boolean, if true the result is printed else the result is a struct.</para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term>out</term>
+                <listitem>
+                    <para>a struct (if print is false).</para>
+                </listitem>
+            </varlistentry>
+        </variablelist>
+    </refsection>
+    <refsection>
+        <title>Description</title>
+        <para>
+            slint has been written to check the &quot;quality&quot; of the Scilab's code according to configurable rules.
+        </para>
+    </refsection>
+    <refsection>
+        <title>Examples</title>
+        <programlisting role="example"><![CDATA[
+slint("SCI/modules/elementary_functions/macros/atanm.sci");
+       ]]></programlisting>
+    </refsection>
+    <refsection role="see also">
+        <title>See Also</title>
+        <simplelist type="inline">
+            <member>
+                <link linkend="GlobalKeywordChecker">GlobalKeyword</link>
+            </member>
+            <member>
+                <link linkend="RedefinitionChecker">Redefinition</link>
+            </member>
+            <member>
+                <link linkend="VariablesChecker">Variables</link>
+            </member>
+            <member>
+                <link linkend="FunctionNameChecker">FunctionName</link>
+            </member>
+            <member>
+                <link linkend="FunctionArgsChecker">FunctionArgs</link>
+            </member>
+            <member>
+                <link linkend="UselessArgChecker">UselessArg</link>
+            </member>
+            <member>
+                <link linkend="VariableNameChecker">VariableName</link>
+            </member>
+            <member>
+                <link linkend="SingleInstrChecker">SingleInstr</link>
+            </member>
+            <member>
+                <link linkend="EmptyBlockChecker">EmptyBlock</link>
+            </member>
+            <member>
+                <link linkend="MopenMcloseChecker">MopenMclose</link>
+            </member>
+            <member>
+                <link linkend="McCabeChecker">McCabe</link>
+            </member>
+            <member>
+                <link linkend="DecimalChecker">Decimal</link>
+            </member>
+            <member>
+                <link linkend="PrintfChecker">Printf</link>
+            </member>
+            <member>
+                <link linkend="LineLengthChecker">LineLength</link>
+            </member>
+            <member>
+                <link linkend="LinesCountChecker">LinesCount</link>
+            </member>
+            <member>
+                <link linkend="TodoChecker">Todo</link>
+            </member>
+            <member>
+                <link linkend="NaNChecker">NaN</link>
+            </member>
+            <member>
+                <link linkend="EqEqChecker">EqEq</link>
+            </member>
+            <member>
+                <link linkend="UselessOpChecker">UselessOp</link>
+            </member>
+            <member>
+                <link linkend="UnreachableCodeChecker">UnreachableCode</link>
+            </member>
+            <member>
+                <link linkend="DeprecatedChecker">Deprecated</link>
+            </member>
+            <member>
+                <link linkend="SelectChecker">Select</link>
+            </member>
+            <member>
+                <link linkend="ImplicitListChecker">ImplicitList</link>
+            </member>
+            <member>
+                <link linkend="StructChecker">Struct</link>
+            </member>
+            <member>
+                <link linkend="LoadSaveChecker">LoadSave</link>
+            </member>
+            <member>
+                <link linkend="OldNotChecker">OldNot</link>
+            </member>
+            <member>
+                <link linkend="SpacesInArgsChecker">SpacesInArgs</link>
+            </member>
+            <member>
+                <link linkend="BreaksInLoopChecker">BreaksInLoop</link>
+            </member>
+            <member>
+                <link linkend="NestedBlocksChecker">NestedBlocks</link>
+            </member>
+            <member>
+                <link linkend="StatInCondChecker">StatInCond</link>
+            </member>
+            <member>
+                <link linkend="BracketedExpChecker">BracketedExp</link>
+            </member>
+            <member>
+                <link linkend="NotNotChecker">NotNot</link>
+            </member>
+            <member>
+                <link linkend="IllegalCallsChecker">IllegalCalls</link>
+            </member>
+            <member>
+                <link linkend="CommentRatioChecker">CommentRatio</link>
+            </member>
+            <member>
+                <link linkend="FunctionArgsOrderChecker">FunctionArgsOrder</link>
+            </member>
+            <member>
+                <link linkend="FunctionTestReturnChecker">FunctionTestReturn</link>
+            </member>
+            <member>
+                <link linkend="SemicolonAtEOLChecker">SemicolonAtEOL</link>
+            </member>
+            <member>
+                <link linkend="ReturnsCountChecker">ReturnsCount</link>
+            </member>
+            <member>
+                <link linkend="NotEqualChecker">NotEqual</link>
+            </member>
+        </simplelist>
+    </refsection>
+</refentry>
diff --git a/scilab/modules/slint/help/fr_FR/addchapter.sce b/scilab/modules/slint/help/fr_FR/addchapter.sce
new file mode 100644 (file)
index 0000000..992e417
--- /dev/null
@@ -0,0 +1,10 @@
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution.  The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+add_help_chapter("Lint tool (SLint)",SCI+"/modules/slint/help/fr_FR",%T);
diff --git a/scilab/modules/slint/help/ja_JP/addchapter.sce b/scilab/modules/slint/help/ja_JP/addchapter.sce
new file mode 100644 (file)
index 0000000..0bb07f9
--- /dev/null
@@ -0,0 +1,10 @@
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution.  The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+add_help_chapter("Lint tool (SLint)",SCI+"/modules/slint/help/ja_JP",%T);
diff --git a/scilab/modules/slint/help/pt_BR/addchapter.sce b/scilab/modules/slint/help/pt_BR/addchapter.sce
new file mode 100644 (file)
index 0000000..dfbc8ec
--- /dev/null
@@ -0,0 +1,10 @@
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution.  The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+add_help_chapter("Lint tool (SLint)",SCI+"/modules/slint/help/pt_BR",%T);
diff --git a/scilab/modules/slint/help/ru_RU/addchapter.sce b/scilab/modules/slint/help/ru_RU/addchapter.sce
new file mode 100644 (file)
index 0000000..3c55033
--- /dev/null
@@ -0,0 +1,10 @@
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution.  The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+add_help_chapter("Lint tool (SLint)",SCI+"/modules/slint/help/ru_RU",%T);
index 893c24a..3b0042e 100644 (file)
@@ -29,6 +29,7 @@ class FileException : public std::exception
 public:
 
     FileException(const std::wstring & filename, const std::wstring & error);
+    FileException(const std::wstring & filename, const std::string & error);
 
 #ifdef _MSC_VER
     virtual const char * what() const;
index 214939a..0c90188 100644 (file)
 #include "checkers/NotNotChecker.hxx"
 #include "checkers/SpacesInArgsChecker.hxx"
 #include "checkers/GlobalKeywordChecker.hxx"
-#include "checkers/StatInCondChecker.hxx"
+#include "checkers/ExpInCondChecker.hxx"
 #include "checkers/CommentRatioChecker.hxx"
 #include "checkers/FunctionArgsOrderChecker.hxx"
 #include "checkers/FunctionTestReturnChecker.hxx"
 #include "checkers/ReturnsCountChecker.hxx"
+#include "checkers/NotEqualChecker.hxx"
 
 #endif // __SLINT_ALL_CHECKERS_HXX__
index 25ee25d..0919489 100644 (file)
@@ -42,6 +42,7 @@ public:
     void preCheckNode(const ast::Exp & e, SLintContext & context, SLintResult & result);
     void postCheckNode(const ast::Exp & e, SLintContext & context, SLintResult & result);
     const std::string getName() const;
+    const std::wstring getId(const unsigned sub) const;
 
     virtual const std::vector<ast::Exp::ExpType> getAstNodes() const
     {
index 252cb6c..5da8493 100644 (file)
@@ -29,14 +29,14 @@ namespace slint
 class DecimalChecker : public SLintChecker
 {
 
-    const wchar_t character;
+    const std::wstring character;
     const bool checkDot;
 
 public:
 
-    DecimalChecker(const std::wstring & checkerId, const wchar_t _character) : SLintChecker(checkerId), character(_character), checkDot(false) { }
+    DecimalChecker(const std::wstring & checkerId, const std::wstring & _character) : SLintChecker(checkerId), character(_character), checkDot(false) { }
     DecimalChecker(const std::wstring & checkerId, const bool _checkDot) : SLintChecker(checkerId), character(L'\0'), checkDot(_checkDot) { }
-    DecimalChecker(const std::wstring & checkerId, const wchar_t _character, const bool _checkDot) : SLintChecker(checkerId), character(_character), checkDot(_checkDot) { }
+    DecimalChecker(const std::wstring & checkerId, const std::wstring & _character, const bool _checkDot) : SLintChecker(checkerId), character(_character), checkDot(_checkDot) { }
 
     ~DecimalChecker() { }
 
@@ -13,8 +13,8 @@
  *
  */
 
-#ifndef __STAT_IN_COND_CHECKER_HXX__
-#define __STAT_IN_COND_CHECKER_HXX__
+#ifndef __EXP_IN_COND_CHECKER_HXX__
+#define __EXP_IN_COND_CHECKER_HXX__
 
 #include "SLintChecker.hxx"
 
@@ -22,17 +22,17 @@ namespace slint
 {
 
 /**
- * Check the number of statements in a condition (if or while)
+ * Check the number of expements in a condition (if or while)
  */
-class StatInCondChecker : public SLintChecker
+class ExpInCondChecker : public SLintChecker
 {
 
     const unsigned int max;
 
 public:
 
-    StatInCondChecker(const std::wstring & checkerId, const int _max) : SLintChecker(checkerId), max(_max) { }
-    ~StatInCondChecker() { }
+    ExpInCondChecker(const std::wstring & checkerId, const int _max) : SLintChecker(checkerId), max(_max) { }
+    ~ExpInCondChecker() { }
 
     void preCheckNode(const ast::Exp & e, SLintContext & context, SLintResult & result);
     void postCheckNode(const ast::Exp & e, SLintContext & context, SLintResult & result);
@@ -51,4 +51,4 @@ private:
 
 } // namespace slint
 
-#endif // __STAT_IN_COND_CHECKER_HXX__
+#endif // __EXP_IN_COND_CHECKER_HXX__
index a164d7e..adc0f0b 100644 (file)
@@ -36,11 +36,14 @@ public:
 
     void preCheckNode(const ast::Exp & e, SLintContext & context, SLintResult & result);
     void postCheckNode(const ast::Exp & e, SLintContext & context, SLintResult & result);
+    bool isFileChecker() const;
+    void preCheckFile(SLintContext & context, SLintResult & result);
+    void postCheckFile(SLintContext & context, SLintResult & result);
     const std::string getName() const;
 
     virtual const std::vector<ast::Exp::ExpType> getAstNodes() const
     {
-        return { ast::Exp::FUNCTIONDEC };
+        return { };
     }
 };
 
diff --git a/scilab/modules/slint/includes/checkers/NotEqualChecker.hxx b/scilab/modules/slint/includes/checkers/NotEqualChecker.hxx
new file mode 100644 (file)
index 0000000..61313e5
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ *  Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ *  This file must be used under the terms of the CeCILL.
+ *  This source file is licensed as described in the file COPYING, which
+ *  you should have received as part of this distribution.  The terms
+ *  are also available at
+ *  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#ifndef __SLINT_NOTEQUAL_CHECKER_HXX__
+#define __SLINT_NOTEQUAL_CHECKER_HXX__
+
+#include "SLintChecker.hxx"
+
+namespace slint
+{
+
+/**
+ * Check the use of <> or @= or ~=
+ */
+class NotEqualChecker : public SLintChecker
+{
+
+    const std::wstring op;
+
+public:
+
+    NotEqualChecker(const std::wstring & checkerId, const std::wstring & _op) : SLintChecker(checkerId), op(_op) { }
+    ~NotEqualChecker() { }
+
+    void preCheckNode(const ast::Exp & e, SLintContext & context, SLintResult & result);
+    void postCheckNode(const ast::Exp & e, SLintContext & context, SLintResult & result);
+    const std::string getName() const;
+
+    virtual const std::vector<ast::Exp::ExpType> getAstNodes() const
+    {
+        return { ast::Exp::OPEXP };
+    }
+};
+
+} // namespace slint
+
+#endif // __SLINT_NOTEQUAL_CHECKER_HXX__
index 774f8a0..96891c0 100644 (file)
@@ -103,6 +103,11 @@ public:
     virtual const std::wstring & getId() const;
 
     /**
+     * Get the checker id for the sub rule
+     */
+    virtual const std::wstring getId(const unsigned sub) const;
+
+    /**
      * Check if the name corresponds to a Scilab's constant
      */
     static bool isScilabConstant(const std::wstring & name);
index 1f7af8d..f80d4ab 100644 (file)
@@ -38,12 +38,13 @@ public:
 
     virtual const std::vector<ast::Exp::ExpType> getAstNodes() const
     {
-        return { ast::Exp::SEQEXP };
+        return { ast::Exp::FUNCTIONDEC };
     }
 
 private:
 
     void check(const ast::Exp * e, SLintContext & context, SLintResult & result) const;
+    void checkSeqExp(const ast::SeqExp & e, SLintContext & context, SLintResult & result) const;
 };
 
 } // namespace slint
index 9039a38..f4fa52d 100644 (file)
@@ -31,7 +31,7 @@ namespace slint
 class VariablesChecker : public SLintChecker
 {
 
-    std::stack<std::unordered_map<std::wstring, std::pair<Location, ast::AssignListExp *>>> assigned;
+    std::stack<std::unordered_map<std::wstring, std::tuple<Location, bool, ast::AssignListExp *>>> assigned;
     std::stack<std::unordered_map<std::wstring, const ast::Exp *>> used;
 
 public:
@@ -42,6 +42,7 @@ public:
     void preCheckNode(const ast::Exp & e, SLintContext & context, SLintResult & result);
     void postCheckNode(const ast::Exp & e, SLintContext & context, SLintResult & result);
     const std::string getName() const;
+    const std::wstring getId(const unsigned sub) const;
 
     virtual const std::vector<ast::Exp::ExpType> getAstNodes() const
     {
index 8392325..df46120 100644 (file)
@@ -40,6 +40,7 @@ class XMLConfig
 public:
 
     static void getOptions(const std::wstring & path, SLintOptions & options);
+    static void getOptions(types::String & str, SLintOptions & options);
 
 private:
 
diff --git a/scilab/modules/slint/includes/config/cnes/AnalysisConfiguration.hxx b/scilab/modules/slint/includes/config/cnes/AnalysisConfiguration.hxx
new file mode 100644 (file)
index 0000000..111e561
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ *  Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ *  This file must be used under the terms of the CeCILL.
+ *  This source file is licensed as described in the file COPYING, which
+ *  you should have received as part of this distribution.  The terms
+ *  are also available at
+ *  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#ifndef __SLINT_CNES_ANALYSIS_CONFIGURATION_HXX__
+#define __SLINT_CNES_ANALYSIS_CONFIGURATION_HXX__
+
+#include "AnalysisConfigurationType.hxx"
+
+namespace slint
+{
+
+namespace CNES
+{
+
+class AnalysisConfiguration
+{
+
+    const AnalysisConfigurationType analysisConfiguration;
+
+public:
+
+    AnalysisConfiguration(const AnalysisConfigurationType & _analysisConfiguration) : analysisConfiguration(_analysisConfiguration) { }
+
+    inline const AnalysisConfigurationType & getAnalysisConfiguration() const
+    {
+        return analysisConfiguration;
+    }
+
+    static AnalysisConfiguration createFromXml(const std::wstring & path);
+
+};
+
+
+} // namespace CNES
+
+} // namespace slint
+
+#endif // __SLINT_CNES_ANALYSIS_CONFIGURATION_HXX__
diff --git a/scilab/modules/slint/includes/config/cnes/AnalysisConfigurationType.hxx b/scilab/modules/slint/includes/config/cnes/AnalysisConfigurationType.hxx
new file mode 100644 (file)
index 0000000..a6508ba
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ *  Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ *  This file must be used under the terms of the CeCILL.
+ *  This source file is licensed as described in the file COPYING, which
+ *  you should have received as part of this distribution.  The terms
+ *  are also available at
+ *  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#ifndef __SLINT_CNES_ANALYSIS_CONFIGURATION_TYPE_HXX__
+#define __SLINT_CNES_ANALYSIS_CONFIGURATION_TYPE_HXX__
+
+#include <string>
+#include <vector>
+#include <libxml/tree.h>
+
+#include "ExcludedProjectFileType.hxx"
+#include "AnalysisRuleType.hxx"
+
+namespace slint
+{
+
+namespace CNES
+{
+
+class AnalysisConfigurationType
+{
+
+    const std::string id;
+    const std::string name;
+    const std::string toolConfigurationId;
+    const std::string projectDevLevel;
+
+    std::vector<ExcludedProjectFileType> excludedProjectFile;
+    std::vector<AnalysisRuleType> analysisRuleType;
+
+public:
+
+    AnalysisConfigurationType(const std::string & _id, const std::string & _name, const std::string & _toolConfigurationId, const std::string & _projectDevLevel) : id(_id), name(_name), toolConfigurationId(_toolConfigurationId), projectDevLevel(_projectDevLevel) { }
+
+    inline const std::string & getId() const
+    {
+        return id;
+    }
+    inline const std::string & getName() const
+    {
+        return name;
+    }
+    inline const std::string & getToolConfigurationId() const
+    {
+        return toolConfigurationId;
+    }
+    inline const std::string & getProjectDevLevel() const
+    {
+        return projectDevLevel;
+    }
+    inline const std::vector<ExcludedProjectFileType> & getExcludedProjectFile() const
+    {
+        return excludedProjectFile;
+    }
+    inline const std::vector<AnalysisRuleType> & getAnalysisRuleType() const
+    {
+        return analysisRuleType;
+    }
+
+    inline void add(const ExcludedProjectFileType & epft)
+    {
+        excludedProjectFile.emplace_back(epft);
+    }
+    inline void add(const AnalysisRuleType & art)
+    {
+        analysisRuleType.emplace_back(art);
+    }
+
+    static AnalysisConfigurationType createFromXmlNode(xmlNode * node);
+
+};
+
+
+} // namespace CNES
+
+} // namespace slint
+
+#endif // __SLINT_CNES_ANALYSIS_CONFIGURATION_TYPE_HXX__
diff --git a/scilab/modules/slint/includes/config/cnes/AnalysisRuleParameterType.hxx b/scilab/modules/slint/includes/config/cnes/AnalysisRuleParameterType.hxx
new file mode 100644 (file)
index 0000000..909e18f
--- /dev/null
@@ -0,0 +1,68 @@
+/*
+ *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ *  Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ *  This file must be used under the terms of the CeCILL.
+ *  This source file is licensed as described in the file COPYING, which
+ *  you should have received as part of this distribution.  The terms
+ *  are also available at
+ *  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#ifndef __SLINT_CNES_ANALYSIS_RULE_PARAMETER_TYPE_HXX__
+#define __SLINT_CNES_ANALYSIS_RULE_PARAMETER_TYPE_HXX__
+
+#include <string>
+#include <libxml/tree.h>
+
+namespace slint
+{
+
+namespace CNES
+{
+
+class AnalysisRuleParameterType
+{
+
+    const std::string parameterName;
+    const double numericalValue;
+    const std::string textValue;
+    const double valueMin;
+    const double valueMax;
+
+public:
+
+    AnalysisRuleParameterType(const std::string & _parameterName, const double _numericalValue, const std::string & _textValue, const double _valueMin, const double _valueMax) : parameterName(_parameterName), numericalValue(_numericalValue), textValue(_textValue), valueMin(_valueMin), valueMax(_valueMax) { }
+
+    inline const std::string & getParameterName() const
+    {
+        return parameterName;
+    }
+    inline double getNumericalValue() const
+    {
+        return numericalValue;
+    }
+    inline const std::string & getTextValue() const
+    {
+        return textValue;
+    }
+    inline double getValueMin() const
+    {
+        return valueMin;
+    }
+    inline double getValueMax() const
+    {
+        return valueMax;
+    }
+
+    static AnalysisRuleParameterType createFromXmlNode(xmlNode * node);
+
+};
+
+
+} // namespace CNES
+
+} // namespace slint
+
+#endif // __SLINT_CNES_ANALYSIS_RULE_TYPE_HXX__
diff --git a/scilab/modules/slint/includes/config/cnes/AnalysisRuleType.hxx b/scilab/modules/slint/includes/config/cnes/AnalysisRuleType.hxx
new file mode 100644 (file)
index 0000000..754c360
--- /dev/null
@@ -0,0 +1,66 @@
+/*
+ *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ *  Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ *  This file must be used under the terms of the CeCILL.
+ *  This source file is licensed as described in the file COPYING, which
+ *  you should have received as part of this distribution.  The terms
+ *  are also available at
+ *  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#ifndef __SLINT_CNES_ANALYSIS_RULE_TYPE_HXX__
+#define __SLINT_CNES_ANALYSIS_RULE_TYPE_HXX__
+
+#include <string>
+#include <unordered_map>
+
+#include "AnalysisRuleParameterType.hxx"
+
+namespace slint
+{
+
+namespace CNES
+{
+
+class AnalysisRuleType
+{
+
+    const std::string id;
+    const bool activation;
+
+    std::unordered_multimap<std::string, AnalysisRuleParameterType> analysisRuleParameter;
+
+public:
+
+    AnalysisRuleType(const std::string & _id, const bool _activation) : id(_id), activation(_activation) { }
+
+    inline const std::string & getId() const
+    {
+        return id;
+    }
+    inline bool getActivation() const
+    {
+        return activation;
+    }
+    inline const std::unordered_multimap<std::string, AnalysisRuleParameterType> & getAnalysisRuleParameter() const
+    {
+        return analysisRuleParameter;
+    }
+
+    inline void add(const AnalysisRuleParameterType & arpt)
+    {
+        analysisRuleParameter.emplace(arpt.getParameterName(), arpt);
+    }
+
+    static AnalysisRuleType createFromXmlNode(xmlNode * node);
+
+};
+
+
+} // namespace CNES
+
+} // namespace slint
+
+#endif // __SLINT_CNES_ANALYSIS_RULE_TYPE_HXX__
diff --git a/scilab/modules/slint/includes/config/cnes/CNESConfig.hxx b/scilab/modules/slint/includes/config/cnes/CNESConfig.hxx
new file mode 100644 (file)
index 0000000..1faa61c
--- /dev/null
@@ -0,0 +1,70 @@
+/*
+ *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ *  Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ *  This file must be used under the terms of the CeCILL.
+ *  This source file is licensed as described in the file COPYING, which
+ *  you should have received as part of this distribution.  The terms
+ *  are also available at
+ *  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#ifndef __SLINT_CNES_CONFIG_HXX__
+#define __SLINT_CNES_CONFIG_HXX__
+
+#include "checkers/AllCheckers.hxx"
+#include "CNESException.hxx"
+#include "ToolConfigurationType.hxx"
+#include "AnalysisConfigurationType.hxx"
+#include "UTF8.hxx"
+
+namespace slint
+{
+
+class SLintOptions;
+
+namespace CNES
+{
+class CNESConfig
+{
+
+    typedef SLintChecker * (*CBType)(const ToolConfigurationType &, const AnalysisRuleType &);
+
+    static std::unordered_map<std::string, CBType> callbacks;
+
+public:
+
+    static void getOptions(const ToolConfigurationType & tct, const AnalysisConfigurationType & act, SLintOptions & options);
+
+private:
+
+    static void getWString(const AnalysisRuleType & art, const std::string & name, std::wstring & value);
+    static void getString(const AnalysisRuleType & art, const std::string & name, std::string & value);
+    static void getDouble(const AnalysisRuleType & art, const std::string & name, double & value);
+    static void getInt(const AnalysisRuleType & art, const std::string & name, int & value);
+    static void getInt(const AnalysisRuleType & art, const std::string & name, int & min, int & max);
+    static void getUInt(const AnalysisRuleType & art, const std::string & name, unsigned int & value);
+    static void getBool(const AnalysisRuleType & art, const std::string & name, bool & value);
+    static const std::wstring getId(const ToolConfigurationType & tct, const AnalysisRuleType & art);
+
+    template<typename T>
+    static SLintChecker * create(const ToolConfigurationType & tct, const AnalysisRuleType & art)
+    {
+        if (art.getActivation())
+        {
+            return new T(getId(tct, art));
+        }
+
+        return nullptr;
+    }
+
+    static std::unordered_map<std::string, CBType> initCallbacks();
+
+};
+
+} // namespace CNES
+
+} // namespace slint
+
+#endif // __SLINT_CNES_CONFIG_HXX__
diff --git a/scilab/modules/slint/includes/config/cnes/CNESException.hxx b/scilab/modules/slint/includes/config/cnes/CNESException.hxx
new file mode 100644 (file)
index 0000000..bc8088c
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ *  Scilab ( http://www.scilab.org/ ) - This cnes is part of Scilab
+ *  Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ *  This cnes must be used under the terms of the CeCILL.
+ *  This source cnes is licensed as described in the cnes COPYING, which
+ *  you should have received as part of this distribution.  The terms
+ *  are also available at
+ *  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#ifndef __CNES_EXCEPTION_HXX__
+#define __CNES_EXCEPTION_HXX__
+
+#include <exception>
+#include <string>
+
+namespace slint
+{
+
+namespace CNES
+{
+class CNESException : public std::exception
+{
+
+    std::string msg;
+
+public:
+
+    CNESException(const std::wstring & error);
+
+#ifdef _MSC_VER
+    virtual const char * what() const;
+#else
+    virtual const char * what() const noexcept;
+#endif
+
+};
+} // namespace CNES
+
+} // namespace slint
+
+#endif // __CNES_EXCEPTION_HXX__
diff --git a/scilab/modules/slint/includes/config/cnes/ExcludedProjectFileType.hxx b/scilab/modules/slint/includes/config/cnes/ExcludedProjectFileType.hxx
new file mode 100644 (file)
index 0000000..140b536
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ *  Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ *  This file must be used under the terms of the CeCILL.
+ *  This source file is licensed as described in the file COPYING, which
+ *  you should have received as part of this distribution.  The terms
+ *  are also available at
+ *  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#ifndef __SLINT_CNES_EXCLUDED_PROJECT_FILE_TYPE_HXX__
+#define __SLINT_CNES_EXCLUDED_PROJECT_FILE_TYPE_HXX__
+
+#include <string>
+#include <libxml/tree.h>
+
+namespace slint
+{
+
+namespace CNES
+{
+
+class ExcludedProjectFileType
+{
+
+    const std::string filename;
+
+public:
+
+    ExcludedProjectFileType(const std::string & _filename) : filename(_filename) { }
+
+    inline const std::string & getFilename() const
+    {
+        return filename;
+    }
+
+    static ExcludedProjectFileType createFromXmlNode(xmlNode * node);
+
+};
+
+
+} // namespace CNES
+
+} // namespace slint
+
+#endif // __SLINT_CNES_EXCLUDED_PROJECT_FILE_TYPE_HXX__
diff --git a/scilab/modules/slint/includes/config/cnes/RuleLinkType.hxx b/scilab/modules/slint/includes/config/cnes/RuleLinkType.hxx
new file mode 100644 (file)
index 0000000..39479f4
--- /dev/null
@@ -0,0 +1,63 @@
+/*
+ *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ *  Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ *  This file must be used under the terms of the CeCILL.
+ *  This source file is licensed as described in the file COPYING, which
+ *  you should have received as part of this distribution.  The terms
+ *  are also available at
+ *  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#ifndef __SLINT_CNES_RULE_LINK_TYPE_HXX__
+#define __SLINT_CNES_RULE_LINK_TYPE_HXX__
+
+#include <string>
+#include <libxml/tree.h>
+
+namespace slint
+{
+
+namespace CNES
+{
+
+class RuleLinkType
+{
+
+    const std::string standardRuleId;
+    const std::string analysisRuleId;
+    const std::string ruleCoverage;
+    const std::string standardId;
+
+public:
+
+    RuleLinkType(const std::string & _standardRuleId, const std::string & _analysisRuleId, const std::string & _ruleCoverage, const std::string & _standardId) : standardRuleId(_standardRuleId), analysisRuleId(_analysisRuleId), ruleCoverage(_ruleCoverage), standardId(_standardId) { }
+
+    inline const std::string & getStandardRuleId() const
+    {
+        return standardRuleId;
+    }
+    inline const std::string & getAnalysisRuleId() const
+    {
+        return analysisRuleId;
+    }
+    inline const std::string & getRuleCoverage() const
+    {
+        return ruleCoverage;
+    }
+    inline const std::string & getStandardId() const
+    {
+        return standardId;
+    }
+
+    static RuleLinkType createFromXmlNode(xmlNode * node);
+
+};
+
+
+} // namespace CNES
+
+} // namespace slint
+
+#endif // __SLINT_CNES_RULE_LINK_TYPE_HXX__
diff --git a/scilab/modules/slint/includes/config/cnes/Standard.hxx b/scilab/modules/slint/includes/config/cnes/Standard.hxx
new file mode 100644 (file)
index 0000000..844741c
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+ *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ *  Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ *  This file must be used under the terms of the CeCILL.
+ *  This source file is licensed as described in the file COPYING, which
+ *  you should have received as part of this distribution.  The terms
+ *  are also available at
+ *  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#ifndef __SLINT_CNES_STANDARD_HXX__
+#define __SLINT_CNES_STANDARD_HXX__
+
+#include <string>
+
+#include "StandardType.hxx"
+
+namespace slint
+{
+
+namespace CNES
+{
+
+class Standard
+{
+
+    const StandardType standard;
+
+public:
+
+    Standard(const StandardType & _standard) : standard(_standard) { }
+
+    inline const StandardType & getStandard() const
+    {
+        return standard;
+    }
+
+    static Standard createFromXml(const std::wstring & path);
+
+};
+
+
+} // namespace CNES
+
+} // namespace slint
+
+#endif // __SLINT_CNES_STANDARD_HXX__
diff --git a/scilab/modules/slint/includes/config/cnes/StandardRuleParameterType.hxx b/scilab/modules/slint/includes/config/cnes/StandardRuleParameterType.hxx
new file mode 100644 (file)
index 0000000..4d96440
--- /dev/null
@@ -0,0 +1,59 @@
+/*
+ *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ *  Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ *  This file must be used under the terms of the CeCILL.
+ *  This source file is licensed as described in the file COPYING, which
+ *  you should have received as part of this distribution.  The terms
+ *  are also available at
+ *  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#ifndef __SLINT_CNES_STANDARD_RULE_PARAMETER_TYPE_HXX__
+#define __SLINT_CNES_STANDARD_RULE_PARAMETER_TYPE_HXX__
+
+#include <string>
+#include <vector>
+#include <libxml/tree.h>
+
+#include "StandardRuleParameterValueType.hxx"
+
+namespace slint
+{
+
+namespace CNES
+{
+
+class StandardRuleParameterType
+{
+
+    const std::string name;
+
+    std::vector<StandardRuleParameterValueType> value;
+
+public:
+
+    StandardRuleParameterType(const std::string & _name) : name(_name) { }
+
+    inline const std::string & getName() const
+    {
+        return name;
+    }
+    inline const std::vector<StandardRuleParameterValueType> & getParameterValue() const
+    {
+        return value;
+    }
+    inline void add(const StandardRuleParameterValueType & pvt)
+    {
+        value.emplace_back(pvt);
+    }
+
+    static StandardRuleParameterType createFromXmlNode(xmlNode * node);
+};
+
+} // namespace CNES
+
+} // namespace slint
+
+#endif // __SLINT_CNES_STANDARD_RULE_PARAMETER_TYPE_HXX__
diff --git a/scilab/modules/slint/includes/config/cnes/StandardRuleParameterValueType.hxx b/scilab/modules/slint/includes/config/cnes/StandardRuleParameterValueType.hxx
new file mode 100644 (file)
index 0000000..5cd0e24
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+ *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ *  Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ *  This file must be used under the terms of the CeCILL.
+ *  This source file is licensed as described in the file COPYING, which
+ *  you should have received as part of this distribution.  The terms
+ *  are also available at
+ *  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#ifndef __SLINT_CNES_STANDARD_RULE_PARAMETER_VALUE_TYPE_HXX__
+#define __SLINT_CNES_STANDARD_RULE_PARAMETER_VALUE_TYPE_HXX__
+
+#include <string>
+#include <libxml/tree.h>
+
+namespace slint
+{
+
+namespace CNES
+{
+
+class StandardRuleParameterValueType
+{
+
+    const double numericalValue;
+    const std::string textValue;
+    const double valueMin;
+    const double valueMax;
+    const std::string devLevel;
+
+public:
+
+    StandardRuleParameterValueType(const double _numericalValue, const std::string & _textValue, const double _valueMin, const double _valueMax, const std::string & _devLevel) : numericalValue(_numericalValue), textValue(_textValue), valueMin(_valueMin), valueMax(_valueMax), devLevel(_devLevel) { }
+
+    inline double getNumericalValue() const
+    {
+        return numericalValue;
+    }
+    inline const std::string & getTextValue() const
+    {
+        return textValue;
+    }
+    inline double getValueMin() const
+    {
+        return valueMin;
+    }
+    inline double getValueMax() const
+    {
+        return valueMax;
+    }
+    inline const std::string & getDevLevel() const
+    {
+        return devLevel;
+    }
+
+    static StandardRuleParameterValueType createFromXmlNode(xmlNode * node);
+
+};
+
+} // namespace CNES
+
+} // namespace slint
+
+#endif // __SLINT_CNES_STANDARD_RULE_PARAMETER_VALUE_TYPE_HXX__
diff --git a/scilab/modules/slint/includes/config/cnes/StandardRuleType.hxx b/scilab/modules/slint/includes/config/cnes/StandardRuleType.hxx
new file mode 100644 (file)
index 0000000..1493f30
--- /dev/null
@@ -0,0 +1,111 @@
+/*
+ *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ *  Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ *  This file must be used under the terms of the CeCILL.
+ *  This source file is licensed as described in the file COPYING, which
+ *  you should have received as part of this distribution.  The terms
+ *  are also available at
+ *  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#ifndef __SLINT_CNES_STANDARD_RULE_TYPE_HXX__
+#define __SLINT_CNES_STANDARD_RULE_TYPE_HXX__
+
+#include <string>
+#include <vector>
+#include <libxml/tree.h>
+
+#include "StandardRuleParameterType.hxx"
+
+namespace slint
+{
+
+namespace CNES
+{
+
+class StandardRuleType
+{
+
+    const std::string standardRuleId;
+    const std::string category;
+    const std::string entitled;
+    const std::string desc;
+    const std::string classification;
+    const int maintainability;
+    const int reliability;
+    const int portability;
+    const std::string justification;
+    const std::string example;
+    const std::string counterExample;
+
+    std::vector<StandardRuleParameterType> parameter;
+
+public:
+
+    StandardRuleType(const std::string & _standardRuleId, const std::string & _category, const std::string & _entitled, const std::string & _desc, const std::string & _classification, const int _maintainability, const int _reliability, const int _portability, const std::string & _justification, const std::string & _example, const std::string & _counterExample) : standardRuleId(_standardRuleId), category(_category), entitled(_entitled), desc(_desc), classification(_classification), maintainability(_maintainability), reliability(_reliability), portability(_portability), justification(_justification), example(_example), counterExample(_counterExample) { }
+
+    inline const std::string & getStandardRuleId() const
+    {
+        return standardRuleId;
+    }
+    inline const std::string & getCategory() const
+    {
+        return category;
+    }
+    inline const std::string & getEntitled() const
+    {
+        return entitled;
+    }
+    inline const std::string & getDesc() const
+    {
+        return desc;
+    }
+    inline const std::string & getClassification() const
+    {
+        return classification;
+    }
+    inline int getMaintainability() const
+    {
+        return maintainability;
+    }
+    inline int getReliability() const
+    {
+        return reliability;
+    }
+    inline int getPortability() const
+    {
+        return portability;
+    }
+    inline const std::string & getJustification() const
+    {
+        return justification;
+    }
+    inline const std::string & getExample() const
+    {
+        return example;
+    }
+    inline const std::string & getCounterExample() const
+    {
+        return counterExample;
+    }
+    inline const std::vector<StandardRuleParameterType> & getParameter() const
+    {
+        return parameter;
+    }
+
+    inline void add(const StandardRuleParameterType & pt)
+    {
+        parameter.emplace_back(pt);
+    }
+
+    static StandardRuleType createFromXmlNode(xmlNode * node);
+};
+
+
+} // namespace CNES
+
+} // namespace slint
+
+#endif // __SLINT_CNES_STANDARD_RULE_TYPE_HXX__
diff --git a/scilab/modules/slint/includes/config/cnes/StandardType.hxx b/scilab/modules/slint/includes/config/cnes/StandardType.hxx
new file mode 100644 (file)
index 0000000..2e82935
--- /dev/null
@@ -0,0 +1,76 @@
+/*
+ *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ *  Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ *  This file must be used under the terms of the CeCILL.
+ *  This source file is licensed as described in the file COPYING, which
+ *  you should have received as part of this distribution.  The terms
+ *  are also available at
+ *  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#ifndef __SLINT_CNES_STANDARD_TYPE_HXX__
+#define __SLINT_CNES_STANDARD_TYPE_HXX__
+
+#include <string>
+#include <vector>
+#include <libxml/tree.h>
+
+#include "StandardRuleType.hxx"
+
+namespace slint
+{
+
+namespace CNES
+{
+
+class StandardType
+{
+
+    const std::string reference;
+    const std::string type;
+    const std::string version;
+    const std::string date;
+
+    std::vector<StandardRuleType> rule;
+
+public:
+
+    StandardType(const std::string & _reference, const std::string & _type, const std::string & _version, const std::string & _date) : reference(_reference), type(_type), version(_version), date(_date) { }
+
+    inline const std::string & getReference() const
+    {
+        return reference;
+    }
+    inline const std::string & getType() const
+    {
+        return type;
+    }
+    inline const std::string & getVersion() const
+    {
+        return version;
+    }
+    inline const std::string & getDate() const
+    {
+        return date;
+    }
+    inline const std::vector<StandardRuleType> & getRule() const
+    {
+        return rule;
+    }
+
+    inline void add(const StandardRuleType & rt)
+    {
+        rule.emplace_back(rt);
+    }
+
+    static StandardType createFromXmlNode(xmlNode * node);
+};
+
+
+} // namespace CNES
+
+} // namespace slint
+
+#endif // __SLINT_CNES_STANDARD_TYPE_HXX__
diff --git a/scilab/modules/slint/includes/config/cnes/ToolConfiguration.hxx b/scilab/modules/slint/includes/config/cnes/ToolConfiguration.hxx
new file mode 100644 (file)
index 0000000..181c4c2
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+ *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ *  Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ *  This file must be used under the terms of the CeCILL.
+ *  This source file is licensed as described in the file COPYING, which
+ *  you should have received as part of this distribution.  The terms
+ *  are also available at
+ *  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#ifndef __SLINT_CNES_TOOL_CONFIGURATION_HXX__
+#define __SLINT_CNES_TOOL_CONFIGURATION_HXX__
+
+#include <string>
+
+#include "ToolConfigurationType.hxx"
+
+namespace slint
+{
+
+namespace CNES
+{
+
+class ToolConfiguration
+{
+
+    const ToolConfigurationType toolConfiguration;
+
+public:
+
+    ToolConfiguration(const ToolConfigurationType & _toolConfiguration) : toolConfiguration(_toolConfiguration) { }
+
+    inline const ToolConfigurationType & getToolConfiguration() const
+    {
+        return toolConfiguration;
+    }
+
+    static ToolConfiguration createFromXml(const std::wstring & path);
+
+};
+
+
+} // namespace CNES
+
+} // namespace slint
+
+#endif // __SLINT_CNES_TOOL_CONFIGURATION_HXX__
diff --git a/scilab/modules/slint/includes/config/cnes/ToolConfigurationType.hxx b/scilab/modules/slint/includes/config/cnes/ToolConfigurationType.hxx
new file mode 100644 (file)
index 0000000..4eb4c67
--- /dev/null
@@ -0,0 +1,72 @@
+/*
+ *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ *  Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ *  This file must be used under the terms of the CeCILL.
+ *  This source file is licensed as described in the file COPYING, which
+ *  you should have received as part of this distribution.  The terms
+ *  are also available at
+ *  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#ifndef __SLINT_CNES_TOOL_CONFIGURATION_TYPE_HXX__
+#define __SLINT_CNES_TOOL_CONFIGURATION_TYPE_HXX__
+
+#include <string>
+#include <unordered_map>
+#include <libxml/tree.h>
+
+#include "RuleLinkType.hxx"
+
+namespace slint
+{
+
+namespace CNES
+{
+
+class ToolConfigurationType
+{
+
+    const std::string id;
+    const std::string name;
+    const std::string version;
+
+    std::unordered_map<std::string, RuleLinkType> ruleLink;
+
+public:
+
+    ToolConfigurationType(const std::string & _id, const std::string & _name, const std::string & _version) : id(_id), name(_name), version(_version) { }
+
+    inline const std::string & getId() const
+    {
+        return id;
+    }
+    inline const std::string & getName() const
+    {
+        return name;
+    }
+    inline const std::string & getVersion() const
+    {
+        return version;
+    }
+    inline const std::unordered_map<std::string, RuleLinkType> & getRuleLink() const
+    {
+        return ruleLink;
+    }
+
+    inline void add(const RuleLinkType & rlt)
+    {
+        ruleLink.emplace(rlt.getAnalysisRuleId(), rlt);
+    }
+
+    static ToolConfigurationType createFromXmlNode(xmlNode * node);
+
+};
+
+
+} // namespace CNES
+
+} // namespace slint
+
+#endif // __SLINT_CNES_TOOL_CONFIGURATION_TYPE_HXX__
index e48034a..4f8c487 100644 (file)
@@ -39,19 +39,33 @@ public:
     template<typename... Args>
     void report(SLintContext & context, const Location & loc, const SLintChecker & checker, const std::wstring & err, Args... args)
     {
-        handleMessage(context, loc, checker, make_string(err, args...));
+        handleMessage(context, loc, checker, 0, make_string(err, args...));
     }
 
     template<typename... Args>
     void report(SLintContext & context, const Location & loc, const SLintChecker & checker, const std::string & err, Args... args)
     {
         wchar_t * _err = to_wide_string(err.c_str());
-        handleMessage(context, loc, checker, make_string(std::wstring(_err), args...));
+        handleMessage(context, loc, checker, 0, make_string(std::wstring(_err), args...));
+        FREE(_err);
+    }
+
+    template<typename... Args>
+    void report(SLintContext & context, const Location & loc, const SLintChecker & checker, const unsigned sub, const std::wstring & err, Args... args)
+    {
+        handleMessage(context, loc, checker, sub, make_string(err, args...));
+    }
+
+    template<typename... Args>
+    void report(SLintContext & context, const Location & loc, const SLintChecker & checker, const unsigned sub, const std::string & err, Args... args)
+    {
+        wchar_t * _err = to_wide_string(err.c_str());
+        handleMessage(context, loc, checker, sub, make_string(std::wstring(_err), args...));
         FREE(_err);
     }
 
     virtual void handleFiles(const std::vector<SciFilePtr> & files) = 0;
-    virtual void handleMessage(SLintContext & context, const Location & loc, const SLintChecker & checker, const std::wstring & msg) = 0;
+    virtual void handleMessage(SLintContext & context, const Location & loc, const SLintChecker & checker, const unsigned sub, const std::wstring & msg) = 0;
 
     virtual void finalize() { }
 
index aea44ed..aa56579 100644 (file)
@@ -42,7 +42,7 @@ public:
     SLintScilabResult();
     virtual ~SLintScilabResult();
     virtual void handleFiles(const std::vector<SciFilePtr> & files) { }
-    virtual void handleMessage(SLintContext & context, const Location & loc, const SLintChecker & checker, const std::wstring & msg);
+    virtual void handleMessage(SLintContext & context, const Location & loc, const SLintChecker & checker, const unsigned sub, const std::wstring & msg);
     virtual void finalize();
 };
 
@@ -57,7 +57,7 @@ public:
     SLintScilabOut();
     virtual ~SLintScilabOut();
     virtual void handleFiles(const std::vector<SciFilePtr> & files) { }
-    virtual void handleMessage(SLintContext & context, const Location & loc, const SLintChecker & checker, const std::wstring & msg);
+    virtual void handleMessage(SLintContext & context, const Location & loc, const SLintChecker & checker, const unsigned sub, const std::wstring & msg);
     virtual void finalize();
 
     types::Struct * getStruct() const;
index 5915276..5e68e09 100644 (file)
@@ -38,7 +38,7 @@ public:
 
     virtual ~SLintXmlResult();
     virtual void handleFiles(const std::vector<SciFilePtr> & files) { }
-    virtual void handleMessage(SLintContext & context, const Location & loc, const SLintChecker & checker, const std::wstring & msg);
+    virtual void handleMessage(SLintContext & context, const Location & loc, const SLintChecker & checker, const unsigned sub, const std::wstring & msg);
     virtual void finalize();
 
     static std::wstring replaceByEntities(const std::wstring & seq);
@@ -47,9 +47,9 @@ public:
 private:
 
     void print(const SciFilePtr & file);
-    void print(const Location & loc, const SLintChecker & checker, const std::wstring & msg);
+    void print(const Location & loc, const SLintChecker & checker, const unsigned sub, const std::wstring & msg);
     void print(const Location & loc);
-    void print(const SLintChecker & checker);
+    void print(const SLintChecker & checker, const unsigned sub);
     void print(const std::wstring & msg);
 
     inline static void pushEntity(std::vector<wchar_t> & buf, const wchar_t * wstr, const unsigned char len)
diff --git a/scilab/modules/slint/includes/output/cnes/CNESCsvResult.hxx b/scilab/modules/slint/includes/output/cnes/CNESCsvResult.hxx
new file mode 100644 (file)
index 0000000..0bac59a
--- /dev/null
@@ -0,0 +1,76 @@
+/*
+ *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ *  Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ *  This file must be used under the terms of the CeCILL.
+ *  This source file is licensed as described in the file COPYING, which
+ *  you should have received as part of this distribution.  The terms
+ *  are also available at
+ *  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#ifndef __SLINT_CNES_CSV_RESULT_HXX__
+#define __SLINT_CNES_CSV_RESULT_HXX__
+
+#include <fstream>
+#include <string>
+#include <unordered_map>
+#include <vector>
+
+#include "config/cnes/ToolConfiguration.hxx"
+#include "output/SLintResult.hxx"
+
+namespace types
+{
+class String;
+}
+
+namespace slint
+{
+
+class SciFile;
+
+namespace CNES
+{
+
+class CNESCsvResult : public SLintResult
+{
+
+    struct __Info
+    {
+        const Location loc;
+        const std::wstring msg;
+        const std::wstring funName;
+
+        __Info(const Location & _loc, const std::wstring & _msg, const std::wstring & _funName) : loc(_loc), msg(_msg), funName(_funName) { }
+    };
+
+
+    const ToolConfigurationType tct;
+    const std::wstring path;
+    std::ofstream * out;
+    SciFilePtr current;
+    std::unordered_map<std::wstring, std::vector<__Info>> res;
+
+public:
+
+    CNESCsvResult(const ToolConfiguration & tc, types::String * conf, const std::wstring & id, const std::wstring & _path);
+
+    virtual ~CNESCsvResult();
+    virtual void handleFiles(const std::vector<SciFilePtr> & files);
+    virtual void handleMessage(SLintContext & context, const Location & loc, const SLintChecker & checker, const unsigned sub, const std::wstring & msg);
+    virtual void finalize();
+
+private:
+
+    void printRes();
+    const std::string getStr(const std::wstring & str);
+    const std::string getStr(const std::string & str);
+};
+
+} // namespace CNES
+
+} // namespace slint
+
+#endif // __SLINT_CNES_CSV_RESULT_HXX__
diff --git a/scilab/modules/slint/includes/output/cnes/CNESXmlResult.hxx b/scilab/modules/slint/includes/output/cnes/CNESXmlResult.hxx
new file mode 100644 (file)
index 0000000..736d569
--- /dev/null
@@ -0,0 +1,73 @@
+/*
+ *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ *  Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ *  This file must be used under the terms of the CeCILL.
+ *  This source file is licensed as described in the file COPYING, which
+ *  you should have received as part of this distribution.  The terms
+ *  are also available at
+ *  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#ifndef __SLINT_CNES_XML_RESULT_HXX__
+#define __SLINT_CNES_XML_RESULT_HXX__
+
+#include <fstream>
+#include <string>
+#include <unordered_map>
+#include <vector>
+
+#include "config/cnes/ToolConfiguration.hxx"
+#include "output/SLintResult.hxx"
+
+namespace types
+{
+class String;
+}
+
+namespace slint
+{
+
+class SciFile;
+
+namespace CNES
+{
+
+class CNESXmlResult : public SLintResult
+{
+
+    struct __Info
+    {
+        const Location loc;
+        const std::wstring msg;
+        const std::wstring funName;
+
+        __Info(const Location & _loc, const std::wstring & _msg, const std::wstring & _funName) : loc(_loc), msg(_msg), funName(_funName) { }
+    };
+
+    const ToolConfigurationType tct;
+    const std::wstring path;
+    std::ofstream * out;
+    SciFilePtr current;
+    std::unordered_map<std::wstring, std::vector<__Info>> res;
+
+public:
+
+    CNESXmlResult(const ToolConfiguration & tc, types::String * conf, const std::wstring & id, const std::wstring & _path);
+
+    virtual ~CNESXmlResult();
+    virtual void handleFiles(const std::vector<SciFilePtr> & files);
+    virtual void handleMessage(SLintContext & context, const Location & loc, const SLintChecker & checker, const unsigned sub, const std::wstring & msg);
+    virtual void finalize();
+
+private:
+
+    void printRes();
+};
+
+} // namespace CNES
+
+} // namespace slint
+
+#endif // __SLINT_CNES_XML_RESULT_HXX__
index 18aa0b4..f18299b 100644 (file)
@@ -19,6 +19,9 @@
 #include "SLint.hxx"
 #include "output/SLintScilabResult.hxx"
 #include "output/SLintXmlResult.hxx"
+#include "output/cnes/CNESXmlResult.hxx"
+#include "output/cnes/CNESCsvResult.hxx"
+#include "config/cnes/ToolConfiguration.hxx"
 #include "config/XMLConfig.hxx"
 
 #include "struct.hxx"
 extern "C"
 {
 #include "Scierror.h"
+#include "sciprint.h"
 #include "localization.h"
 }
 
+static bool contributionMsg = true;
 /**
  * slint(String[a,b] files, String[1,c] conf, String[1,1] out)
  * slint(String[a,b] files, String[1,1] out)                   : default conf is etc/slint.xml
@@ -44,7 +49,7 @@ types::Function::ReturnValue sci_slint(types::typed_list & in, int _iRetCount, t
 {
     slint::SLintResult * results = nullptr;
     bool printResults = false;
-    const unsigned size = in.size();
+    const int size = (int)in.size();
     types::String * conf = nullptr;
     types::String * outFile = nullptr;
 
@@ -56,7 +61,7 @@ types::Function::ReturnValue sci_slint(types::typed_list & in, int _iRetCount, t
 
     if (!in[0]->isString())
     {
-        Scierror(999, _("%s: Wrong type for input argument #%d: A string expected.\n"), "slint" , 1);
+        Scierror(999, _("%s: Wrong type for input argument #%d: A string expected.\n"), "slint", 1);
         return types::Function::Error;
     }
 
@@ -73,11 +78,11 @@ types::Function::ReturnValue sci_slint(types::typed_list & in, int _iRetCount, t
             {
                 if (in[1]->getAs<types::Bool>()->getSize() == 1)
                 {
-                    printResults = in[1]->getAs<types::Bool>()->get(0);
+                    printResults = in[1]->getAs<types::Bool>()->get(0) == 0 ? false : true;
                 }
                 else
                 {
-                    Scierror(999, _("%s: Wrong type for input argument #%d: A single boolean expected.\n"), "slint" , 2);
+                    Scierror(999, _("%s: Wrong type for input argument #%d: A single boolean expected.\n"), "slint", 2);
                     return types::Function::Error;
                 }
             }
@@ -87,7 +92,7 @@ types::Function::ReturnValue sci_slint(types::typed_list & in, int _iRetCount, t
             }
             else
             {
-                Scierror(999, _("%s: Wrong type for input argument #%d: A string or a boolean expected.\n"), "slint" , 2);
+                Scierror(999, _("%s: Wrong type for input argument #%d: A string or a boolean expected.\n"), "slint", 2);
                 return types::Function::Error;
             }
             break;
@@ -98,11 +103,11 @@ types::Function::ReturnValue sci_slint(types::typed_list & in, int _iRetCount, t
             {
                 if (in[2]->getAs<types::Bool>()->getSize() == 1)
                 {
-                    printResults = in[2]->getAs<types::Bool>()->get(0);
+                    printResults = in[2]->getAs<types::Bool>()->get(0) == 0 ? false : true;
                 }
                 else
                 {
-                    Scierror(999, _("%s: Wrong type for input argument #%d: A single boolean expected.\n"), "slint" , 3);
+                    Scierror(999, _("%s: Wrong type for input argument #%d: A single boolean expected.\n"), "slint", 3);
                     return types::Function::Error;
                 }
             }
@@ -112,13 +117,13 @@ types::Function::ReturnValue sci_slint(types::typed_list & in, int _iRetCount, t
             }
             else
             {
-                Scierror(999, _("%s: Wrong type for input argument #%d: A string or a boolean expected.\n"), "slint" , 3);
+                Scierror(999, _("%s: Wrong type for input argument #%d: A string or a boolean expected.\n"), "slint", 3);
                 return types::Function::Error;
             }
 
             if (!in[1]->isString())
             {
-                Scierror(999, _("%s: Wrong type for input argument #%d: A string expected.\n"), "slint" , 3);
+                Scierror(999, _("%s: Wrong type for input argument #%d: A string expected.\n"), "slint", 3);
                 return types::Function::Error;
             }
             conf = in[1]->getAs<types::String>();
@@ -131,7 +136,14 @@ types::Function::ReturnValue sci_slint(types::typed_list & in, int _iRetCount, t
         slint::SLintOptions options;
         if (conf)
         {
-            slint::XMLConfig::getOptions(conf->get(0), options);
+            if (conf->getSize() == 1)
+            {
+                slint::XMLConfig::getOptions(conf->get(0), options);
+            }
+            else
+            {
+                slint::XMLConfig::getOptions(*conf, options);
+            }
         }
         else
         {
@@ -140,7 +152,24 @@ types::Function::ReturnValue sci_slint(types::typed_list & in, int _iRetCount, t
 
         if (outFile)
         {
-            results = new slint::SLintXmlResult(outFile->get(0));
+            if (conf && conf->getSize() >= 2 && (std::wstring(conf->get(0)) == L"cnes"))
+            {
+                const slint::CNES::ToolConfiguration tc = slint::CNES::ToolConfiguration::createFromXml(conf->get(1));
+                const std::wstring out(outFile->get(0));
+                const std::size_t pos = out.find_last_of(L'.');
+                if (pos != std::string::npos && out.substr(pos) == L".csv")
+                {
+                    results = new slint::CNES::CNESCsvResult(tc, conf, options.getId(), outFile->get(0));
+                }
+                else
+                {
+                    results = new slint::CNES::CNESXmlResult(tc, conf, options.getId(), outFile->get(0));
+                }
+            }
+            else
+            {
+                results = new slint::SLintXmlResult(outFile->get(0));
+            }
         }
         else
         {
@@ -185,5 +214,11 @@ types::Function::ReturnValue sci_slint(types::typed_list & in, int _iRetCount, t
 
     delete results;
 
+    if (contributionMsg)
+    {
+        sciprint("%s\n", _("Module developed with the contribution of CNES."));
+        contributionMsg = false;
+    }
+
     return types::Function::OK;
 }
index 95250c2..1ac1eb9 100644 (file)
@@ -28,6 +28,8 @@ Source: modules\{#SLINT}\sci_gateway\{#SLINT}_gateway.xml; DestDir: {app}\module
 Source: modules\{#SLINT}\etc\{#SLINT}.quit; DestDir: {app}\modules\{#SLINT}\etc; Components: {#COMPN_SCILAB}
 Source: modules\{#SLINT}\etc\{#SLINT}.start; DestDir: {app}\modules\{#SLINT}\etc; Components: {#COMPN_SCILAB}
 Source: modules\{#SLINT}\etc\{#SLINT}.xml; DestDir: {app}\modules\{#SLINT}\etc; Components: {#COMPN_SCILAB}
+Source: modules\{#SLINT}\etc\cnes_tool_conf.xml; DestDir: {app}\modules\{#SLINT}\etc; Components: {#COMPN_SCILAB}
+Source: modules\{#SLINT}\etc\cnes_analysis_conf.xml; DestDir: {app}\modules\{#SLINT}\etc; Components: {#COMPN_SCILAB}
 ;
 Source: modules\{#SLINT}\macros\buildmacros.sce; DestDir: {app}\modules\{#SLINT}\macros; Components: {#COMPN_SCILAB}
 Source: modules\{#SLINT}\macros\buildmacros.bat; DestDir: {app}\modules\{#SLINT}\macros; Components: {#COMPN_SCILAB}
index 5dd9112..1c87ac4 100644 (file)
     <ClInclude Include="includes\checkers\DeprecatedChecker.hxx" />
     <ClInclude Include="includes\checkers\EmptyBlockChecker.hxx" />
     <ClInclude Include="includes\checkers\EqEqChecker.hxx" />
+    <ClInclude Include="includes\checkers\ExpInCondChecker.hxx" />
     <ClInclude Include="includes\checkers\FindSymVisitor.hxx" />
     <ClInclude Include="includes\checkers\FunctionArgsChecker.hxx" />
     <ClInclude Include="includes\checkers\FunctionArgsOrderChecker.hxx" />
     <ClInclude Include="includes\checkers\MopenMcloseChecker.hxx" />
     <ClInclude Include="includes\checkers\NaNChecker.hxx" />
     <ClInclude Include="includes\checkers\NestedBlocksChecker.hxx" />
+    <ClInclude Include="includes\checkers\NotEqualChecker.hxx" />
     <ClInclude Include="includes\checkers\NotNotChecker.hxx" />
     <ClInclude Include="includes\checkers\OldNotChecker.hxx" />
     <ClInclude Include="includes\checkers\PrintfChecker.hxx" />
     <ClInclude Include="includes\checkers\SLintChecker.hxx" />
     <ClInclude Include="includes\checkers\SpacesAroundOpChecker.hxx" />
     <ClInclude Include="includes\checkers\SpacesInArgsChecker.hxx" />
-    <ClInclude Include="includes\checkers\StatInCondChecker.hxx" />
     <ClInclude Include="includes\checkers\StructChecker.hxx" />
     <ClInclude Include="includes\checkers\TodoChecker.hxx" />
     <ClInclude Include="includes\checkers\UnreachableCodeChecker.hxx" />
     <ClInclude Include="includes\checkers\UselessRetChecker.hxx" />
     <ClInclude Include="includes\checkers\VariableNameChecker.hxx" />
     <ClInclude Include="includes\checkers\VariablesChecker.hxx" />
+    <ClInclude Include="includes\config\cnes\AnalysisConfiguration.hxx" />
+    <ClInclude Include="includes\config\cnes\AnalysisConfigurationType.hxx" />
+    <ClInclude Include="includes\config\cnes\AnalysisRuleParameterType.hxx" />
+    <ClInclude Include="includes\config\cnes\AnalysisRuleType.hxx" />
+    <ClInclude Include="includes\config\cnes\CNESConfig.hxx" />
+    <ClInclude Include="includes\config\cnes\CNESException.hxx" />
+    <ClInclude Include="includes\config\cnes\ExcludedProjectFileType.hxx" />
+    <ClInclude Include="includes\config\cnes\RuleLinkType.hxx" />
+    <ClInclude Include="includes\config\cnes\Standard.hxx" />
+    <ClInclude Include="includes\config\cnes\StandardRuleParameterType.hxx" />
+    <ClInclude Include="includes\config\cnes\StandardRuleParameterValueType.hxx" />
+    <ClInclude Include="includes\config\cnes\StandardRuleType.hxx" />
+    <ClInclude Include="includes\config\cnes\StandardType.hxx" />
+    <ClInclude Include="includes\config\cnes\ToolConfiguration.hxx" />
+    <ClInclude Include="includes\config\cnes\ToolConfigurationType.hxx" />
     <ClInclude Include="includes\config\XMLConfig.hxx" />
     <ClInclude Include="includes\dynlib_slint.h" />
     <ClInclude Include="includes\FileException.hxx" />
+    <ClInclude Include="includes\output\cnes\CNESCsvResult.hxx" />
+    <ClInclude Include="includes\output\cnes\CNESXmlResult.hxx" />
     <ClInclude Include="includes\output\SLintResult.hxx" />
     <ClInclude Include="includes\output\SLintScilabResult.hxx" />
     <ClInclude Include="includes\output\SLintXmlResult.hxx" />
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="sci_gateway\cpp\sci_slint.cpp" />
+    <ClCompile Include="src\cpp\AnalysisConfiguration.cpp" />
+    <ClCompile Include="src\cpp\AnalysisConfigurationType.cpp" />
+    <ClCompile Include="src\cpp\AnalysisRuleParameterType.cpp" />
+    <ClCompile Include="src\cpp\AnalysisRuleType.cpp" />
     <ClCompile Include="src\cpp\BracketedExpChecker.cpp" />
     <ClCompile Include="src\cpp\BreaksInLoopChecker.cpp" />
+    <ClCompile Include="src\cpp\CNESConfig.cpp" />
+    <ClCompile Include="src\cpp\CNESCsvResult.cpp" />
+    <ClCompile Include="src\cpp\CNESException.cpp" />
+    <ClCompile Include="src\cpp\CNESXmlResult.cpp" />
     <ClCompile Include="src\cpp\CommentRatioChecker.cpp" />
     <ClCompile Include="src\cpp\DecimalChecker.cpp" />
     <ClCompile Include="src\cpp\DeprecatedChecker.cpp" />
     <ClCompile Include="src\cpp\EmptyBlockChecker.cpp" />
     <ClCompile Include="src\cpp\EqEqChecker.cpp" />
+    <ClCompile Include="src\cpp\ExcludedProjectFileType.cpp" />
+    <ClCompile Include="src\cpp\ExpInCondChecker.cpp" />
     <ClCompile Include="src\cpp\FileException.cpp" />
     <ClCompile Include="src\cpp\FunctionArgsChecker.cpp" />
     <ClCompile Include="src\cpp\FunctionArgsOrderChecker.cpp" />
     <ClCompile Include="src\cpp\MopenMcloseChecker.cpp" />
     <ClCompile Include="src\cpp\NaNChecker.cpp" />
     <ClCompile Include="src\cpp\NestedBlocksChecker.cpp" />
+    <ClCompile Include="src\cpp\NotEqualChecker.cpp" />
     <ClCompile Include="src\cpp\NotNotChecker.cpp" />
     <ClCompile Include="src\cpp\OldNotChecker.cpp" />
     <ClCompile Include="src\cpp\PCREException.cpp" />
     <ClCompile Include="src\cpp\PrintfChecker.cpp" />
     <ClCompile Include="src\cpp\RedefinitionChecker.cpp" />
     <ClCompile Include="src\cpp\ReturnsCountChecker.cpp" />
+    <ClCompile Include="src\cpp\RuleLinkType.cpp" />
     <ClCompile Include="src\cpp\SciFile.cpp" />
     <ClCompile Include="src\cpp\SelectChecker.cpp" />
     <ClCompile Include="src\cpp\SemicolonAtEOLChecker.cpp" />
     <ClCompile Include="src\cpp\SLintXmlResult.cpp" />
     <ClCompile Include="src\cpp\SpacesAroundOpChecker.cpp" />
     <ClCompile Include="src\cpp\SpacesInArgsChecker.cpp" />
-    <ClCompile Include="src\cpp\StatInCondChecker.cpp" />
+    <ClCompile Include="src\cpp\Standard.cpp" />
+    <ClCompile Include="src\cpp\StandardRuleParameterType.cpp" />
+    <ClCompile Include="src\cpp\StandardRuleParameterValueType.cpp" />
+    <ClCompile Include="src\cpp\StandardRuleType.cpp" />
+    <ClCompile Include="src\cpp\StandardType.cpp" />
     <ClCompile Include="src\cpp\StructChecker.cpp" />
     <ClCompile Include="src\cpp\TodoChecker.cpp" />
+    <ClCompile Include="src\cpp\ToolConfiguration.cpp" />
+    <ClCompile Include="src\cpp\ToolConfigurationType.cpp" />
     <ClCompile Include="src\cpp\UnreachableCodeChecker.cpp" />
     <ClCompile Include="src\cpp\UselessArgChecker.cpp" />
     <ClCompile Include="src\cpp\UselessOpChecker.cpp" />
index 321f7c2..ded907d 100644 (file)
     <Filter Include="Header Files\output">
       <UniqueIdentifier>{9f137ccc-400e-45bc-9e0a-70108af226f1}</UniqueIdentifier>
     </Filter>
+    <Filter Include="Header Files\output\cnes">
+      <UniqueIdentifier>{d303f476-858e-41e1-99e9-be17e9d2903e}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Header Files\config\cnes">
+      <UniqueIdentifier>{a4318558-430e-4f93-a921-3881e0267214}</UniqueIdentifier>
+    </Filter>
   </ItemGroup>
   <ItemGroup>
     <ResourceCompile Include="slint.rc">
     <ClInclude Include="includes\XMLtools.hxx">
       <Filter>Header Files</Filter>
     </ClInclude>
+    <ClInclude Include="includes\config\cnes\AnalysisConfiguration.hxx">
+      <Filter>Header Files\config\cnes</Filter>
+    </ClInclude>
+    <ClInclude Include="includes\config\cnes\AnalysisConfigurationType.hxx">
+      <Filter>Header Files\config\cnes</Filter>
+    </ClInclude>
+    <ClInclude Include="includes\config\cnes\AnalysisRuleParameterType.hxx">
+      <Filter>Header Files\config\cnes</Filter>
+    </ClInclude>
+    <ClInclude Include="includes\config\cnes\AnalysisRuleType.hxx">
+      <Filter>Header Files\config\cnes</Filter>
+    </ClInclude>
+    <ClInclude Include="includes\config\cnes\CNESConfig.hxx">
+      <Filter>Header Files\config\cnes</Filter>
+    </ClInclude>
+    <ClInclude Include="includes\config\cnes\CNESException.hxx">
+      <Filter>Header Files\config\cnes</Filter>
+    </ClInclude>
+    <ClInclude Include="includes\config\cnes\ExcludedProjectFileType.hxx">
+      <Filter>Header Files\config\cnes</Filter>
+    </ClInclude>
+    <ClInclude Include="includes\config\cnes\RuleLinkType.hxx">
+      <Filter>Header Files\config\cnes</Filter>
+    </ClInclude>
+    <ClInclude Include="includes\config\cnes\Standard.hxx">
+      <Filter>Header Files\config\cnes</Filter>
+    </ClInclude>
+    <ClInclude Include="includes\config\cnes\StandardRuleParameterType.hxx">
+      <Filter>Header Files\config\cnes</Filter>
+    </ClInclude>
+    <ClInclude Include="includes\config\cnes\StandardRuleParameterValueType.hxx">
+      <Filter>Header Files\config\cnes</Filter>
+    </ClInclude>
+    <ClInclude Include="includes\config\cnes\StandardRuleType.hxx">
+      <Filter>Header Files\config\cnes</Filter>
+    </ClInclude>
+    <ClInclude Include="includes\config\cnes\StandardType.hxx">
+      <Filter>Header Files\config\cnes</Filter>
+    </ClInclude>
+    <ClInclude Include="includes\config\cnes\ToolConfiguration.hxx">
+      <Filter>Header Files\config\cnes</Filter>
+    </ClInclude>
+    <ClInclude Include="includes\config\cnes\ToolConfigurationType.hxx">
+      <Filter>Header Files\config\cnes</Filter>
+    </ClInclude>
     <ClInclude Include="includes\checkers\CommentRatioChecker.hxx">
       <Filter>Header Files\checkers</Filter>
     </ClInclude>
     <ClInclude Include="includes\checkers\ReturnsCountChecker.hxx">
       <Filter>Header Files\checkers</Filter>
     </ClInclude>
-    <ClInclude Include="includes\checkers\StatInCondChecker.hxx">
+    <ClInclude Include="includes\checkers\NotEqualChecker.hxx">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="includes\checkers\ExpInCondChecker.hxx">
       <Filter>Header Files\checkers</Filter>
     </ClInclude>
+    <ClInclude Include="includes\output\cnes\CNESCsvResult.hxx">
+      <Filter>Header Files\output\cnes</Filter>
+    </ClInclude>
+    <ClInclude Include="includes\output\cnes\CNESXmlResult.hxx">
+      <Filter>Header Files\output\cnes</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="src\cpp\BracketedExpChecker.cpp">
     <ClCompile Include="src\cpp\VariablesChecker.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
+    <ClCompile Include="src\cpp\XMLConfig.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
     <ClCompile Include="src\cpp\XMLtools.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
     <ClCompile Include="sci_gateway\cpp\sci_slint.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
+    <ClCompile Include="src\cpp\AnalysisConfiguration.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="src\cpp\AnalysisConfigurationType.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="src\cpp\AnalysisRuleParameterType.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="src\cpp\AnalysisRuleType.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="src\cpp\CNESConfig.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="src\cpp\CNESException.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
     <ClCompile Include="src\cpp\CommentRatioChecker.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
+    <ClCompile Include="src\cpp\ExcludedProjectFileType.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
     <ClCompile Include="src\cpp\FunctionArgsOrderChecker.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
     <ClCompile Include="src\cpp\ReturnsCountChecker.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="src\cpp\StatInCondChecker.cpp">
+    <ClCompile Include="src\cpp\RuleLinkType.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="src\cpp\XMLConfig.cpp">
+    <ClCompile Include="src\cpp\Standard.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="src\cpp\StandardRuleParameterType.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="src\cpp\StandardRuleParameterValueType.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="src\cpp\StandardRuleType.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="src\cpp\StandardType.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="src\cpp\ToolConfiguration.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="src\cpp\ToolConfigurationType.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="src\cpp\NotEqualChecker.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="src\cpp\ExpInCondChecker.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="src\cpp\CNESCsvResult.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="src\cpp\CNESXmlResult.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
   </ItemGroup>
diff --git a/scilab/modules/slint/src/cpp/AnalysisConfiguration.cpp b/scilab/modules/slint/src/cpp/AnalysisConfiguration.cpp
new file mode 100644 (file)
index 0000000..05583a4
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ *  Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ *  This file must be used under the terms of the CeCILL.
+ *  This source file is licensed as described in the file COPYING, which
+ *  you should have received as part of this distribution.  The terms
+ *  are also available at
+ *  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#include <string>
+
+#include "config/cnes/CNESException.hxx"
+#include "config/cnes/AnalysisConfiguration.hxx"
+#include "XMLtools.hxx"
+
+namespace slint
+{
+
+namespace CNES
+{
+
+AnalysisConfiguration AnalysisConfiguration::createFromXml(const std::wstring & path)
+{
+    xmlDoc * doc = slint::XMLtools::readXML(path);
+    xmlNode * root = xmlDocGetRootElement(doc);
+
+    std::string name((const char *)root->name);
+    if (name == "analysisConfiguration")
+    {
+        AnalysisConfiguration analysisConfiguration(AnalysisConfigurationType::createFromXmlNode(root));
+        xmlFreeDoc(doc);
+
+        return analysisConfiguration;
+    }
+    else
+    {
+        xmlFreeDoc(doc);
+        throw CNESException(L"Invalid analysis configuration file");
+    }
+}
+
+} // namespace CNES
+
+} // namespace slint
diff --git a/scilab/modules/slint/src/cpp/AnalysisConfigurationType.cpp b/scilab/modules/slint/src/cpp/AnalysisConfigurationType.cpp
new file mode 100644 (file)
index 0000000..7411a50
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ *  Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ *  This file must be used under the terms of the CeCILL.
+ *  This source file is licensed as described in the file COPYING, which
+ *  you should have received as part of this distribution.  The terms
+ *  are also available at
+ *  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#include "config/cnes/AnalysisConfigurationType.hxx"
+#include "XMLtools.hxx"
+
+namespace slint
+{
+
+namespace CNES
+{
+
+AnalysisConfigurationType AnalysisConfigurationType::createFromXmlNode(xmlNode * node)
+{
+    std::string id;
+    std::string name;
+    std::string toolConfigurationId;
+    std::string projectDevLevel;
+
+    slint::XMLtools::getString(node, "analysisConfigurationId", id);
+    slint::XMLtools::getString(node, "analysisConfigurationName", name);
+    slint::XMLtools::getString(node, "toolConfigurationId", toolConfigurationId);
+    slint::XMLtools::getString(node, "projectDevLevel", projectDevLevel);
+
+    AnalysisConfigurationType act(id, name, toolConfigurationId, projectDevLevel);
+    for (xmlNode * child = node->children; child; child = child->next)
+    {
+        std::string name((const char *)child->name);
+        if (name == "excludedProjectFile")
+        {
+            act.add(ExcludedProjectFileType::createFromXmlNode(child));
+        }
+        else if (name == "analysisRule")
+        {
+            act.add(AnalysisRuleType::createFromXmlNode(child));
+        }
+    }
+
+    return act;
+}
+
+} // namespace CNES
+
+} // namespace slint
diff --git a/scilab/modules/slint/src/cpp/AnalysisRuleParameterType.cpp b/scilab/modules/slint/src/cpp/AnalysisRuleParameterType.cpp
new file mode 100644 (file)
index 0000000..c9971b7
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ *  Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ *  This file must be used under the terms of the CeCILL.
+ *  This source file is licensed as described in the file COPYING, which
+ *  you should have received as part of this distribution.  The terms
+ *  are also available at
+ *  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#include "config/cnes/AnalysisRuleParameterType.hxx"
+#include "XMLtools.hxx"
+
+namespace slint
+{
+
+namespace CNES
+{
+
+AnalysisRuleParameterType AnalysisRuleParameterType::createFromXmlNode(xmlNode * node)
+{
+    std::string parameterName;
+    double numericalValue = 0;
+    std::string textValue;
+    double valueMin = 0;
+    double valueMax = 0;
+
+    slint::XMLtools::getString(node, "analysisRuleParameterName", parameterName);
+    slint::XMLtools::getDouble(node, "analysisRuleNumericalValue", numericalValue);
+    slint::XMLtools::getString(node, "analysisRuleTextValue", textValue);
+    slint::XMLtools::getDouble(node, "analysisRuleValueMin", valueMin);
+    slint::XMLtools::getDouble(node, "analysisRuleValueMax", valueMax);
+
+    return AnalysisRuleParameterType(parameterName, numericalValue, textValue, valueMin, valueMax);
+}
+
+} // namespace CNES
+
+} // namespace slint
diff --git a/scilab/modules/slint/src/cpp/AnalysisRuleType.cpp b/scilab/modules/slint/src/cpp/AnalysisRuleType.cpp
new file mode 100644 (file)
index 0000000..0996e7c
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ *  Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ *  This file must be used under the terms of the CeCILL.
+ *  This source file is licensed as described in the file COPYING, which
+ *  you should have received as part of this distribution.  The terms
+ *  are also available at
+ *  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#include "checkers/AllCheckers.hxx"
+#include "config/cnes/AnalysisRuleType.hxx"
+#include "XMLtools.hxx"
+
+namespace slint
+{
+
+namespace CNES
+{
+
+AnalysisRuleType AnalysisRuleType::createFromXmlNode(xmlNode * node)
+{
+    std::string id;
+    bool activation = false;
+
+    slint::XMLtools::getString(node, "analysisRuleId", id);
+    slint::XMLtools::getBool(node, "analysisRuleActivation", activation);
+
+    AnalysisRuleType art(id, activation);
+    for (xmlNode * child = node->children; child; child = child->next)
+    {
+        art.add(AnalysisRuleParameterType::createFromXmlNode(child));
+    }
+
+    return art;
+}
+
+} // namespace CNES
+
+} // namespace slint
index 484df10..67bf922 100644 (file)
@@ -21,7 +21,7 @@ namespace slint
 void BracketedExpChecker::preCheckNode(const ast::Exp & e, SLintContext & context, SLintResult & result)
 {
     const ast::OpExp & oe = static_cast<const ast::OpExp &>(e);
-    if (oe.getParent()->isOpExp())
+    if (oe.getParent()->isOpExp() || oe.getParent()->isListExp())
     {
         std::pair<unsigned int, unsigned int> pos;
         bool bracketed = true;
index 59c5bd1..c9e285d 100644 (file)
@@ -36,7 +36,7 @@ void BreaksInLoopChecker::preCheckNode(const ast::Exp & e, SLintContext & contex
                 {
                     if (_breaks == maxBreaks)
                     {
-                        result.report(context, e.getLocation(), *this, _("Number of break is limited: %d max."), maxBreaks);
+                        result.report(context, e.getLocation(), *this, 1, _("Number of break is limited: %d max."), maxBreaks);
                         _breaks = -1;
                     }
                     else
@@ -52,7 +52,7 @@ void BreaksInLoopChecker::preCheckNode(const ast::Exp & e, SLintContext & contex
                 {
                     if (_continues == maxContinues)
                     {
-                        result.report(context, e.getLocation(), *this, _("Number of break is limited: %d max."), maxContinues);
+                        result.report(context, e.getLocation(), *this, 2, _("Number of continue is limited: %d max."), maxContinues);
                         _continues = -1;
                     }
                     else
@@ -80,4 +80,19 @@ const std::string BreaksInLoopChecker::getName() const
 {
     return "BreaksInLoopChecker";
 }
+
+const std::wstring BreaksInLoopChecker::getId(const unsigned sub) const
+{
+    switch (sub)
+    {
+        case 0:
+            return SLintChecker::getId();
+        case 1:
+            return SLintChecker::getId() + L".Break";
+        case 2:
+            return SLintChecker::getId() + L".Continue";
+        default:
+            return L"";
+    }
+}
 }
diff --git a/scilab/modules/slint/src/cpp/CNESConfig.cpp b/scilab/modules/slint/src/cpp/CNESConfig.cpp
new file mode 100644 (file)
index 0000000..9327208
--- /dev/null
@@ -0,0 +1,431 @@
+/*
+ *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ *  Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ *  This file must be used under the terms of the CeCILL.
+ *  This source file is licensed as described in the file COPYING, which
+ *  you should have received as part of this distribution.  The terms
+ *  are also available at
+ *  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#include <unordered_map>
+
+#include "config/cnes/CNESConfig.hxx"
+#include "SLintOptions.hxx"
+
+#define SLINT_INSERT_IN_MAP(name) callbacks.emplace(#name, &create<name##Checker>)
+
+namespace slint
+{
+namespace CNES
+{
+
+std::unordered_map<std::string, CNESConfig::CBType> CNESConfig::callbacks = initCallbacks();
+
+void CNESConfig::getOptions(const ToolConfigurationType & tct, const AnalysisConfigurationType & act, SLintOptions & options)
+{
+    for (const auto & art : act.getAnalysisRuleType())
+    {
+        auto i = callbacks.find(art.getId());
+        if (i != callbacks.end())
+        {
+            if (SLintChecker * checker = i->second(tct, art))
+            {
+                options.addDefault(checker);
+            }
+        }
+    }
+}
+
+void CNESConfig::getWString(const AnalysisRuleType & art, const std::string & name, std::wstring & value)
+{
+    auto i = art.getAnalysisRuleParameter().find(name);
+    if (i != art.getAnalysisRuleParameter().end())
+    {
+        value = scilab::UTF8::toWide(i->second.getTextValue());
+    }
+}
+
+void CNESConfig::getString(const AnalysisRuleType & art, const std::string & name, std::string & value)
+{
+    auto i = art.getAnalysisRuleParameter().find(name);
+    if (i != art.getAnalysisRuleParameter().end())
+    {
+        value = i->second.getTextValue();
+    }
+}
+
+void CNESConfig::getDouble(const AnalysisRuleType & art, const std::string & name, double & value)
+{
+    auto i = art.getAnalysisRuleParameter().find(name);
+    if (i != art.getAnalysisRuleParameter().end())
+    {
+        value = i->second.getNumericalValue();
+    }
+}
+
+void CNESConfig::getInt(const AnalysisRuleType & art, const std::string & name, int & value)
+{
+    auto i = art.getAnalysisRuleParameter().find(name);
+    if (i != art.getAnalysisRuleParameter().end())
+    {
+        value = (int)i->second.getNumericalValue();
+    }
+}
+
+void CNESConfig::getInt(const AnalysisRuleType & art, const std::string & name, int & min, int & max)
+{
+    auto i = art.getAnalysisRuleParameter().find(name);
+    if (i != art.getAnalysisRuleParameter().end())
+    {
+        min = (int)i->second.getValueMin();
+        max = (int)i->second.getValueMax();
+    }
+}
+
+void CNESConfig::getUInt(const AnalysisRuleType & art, const std::string & name, unsigned int & value)
+{
+    auto i = art.getAnalysisRuleParameter().find(name);
+    if (i != art.getAnalysisRuleParameter().end())
+    {
+        value = (unsigned int)i->second.getNumericalValue();
+    }
+}
+
+void CNESConfig::getBool(const AnalysisRuleType & art, const std::string & name, bool & value)
+{
+    auto i = art.getAnalysisRuleParameter().find(name);
+    if (i != art.getAnalysisRuleParameter().end())
+    {
+        value = i->second.getNumericalValue() != 0.;
+    }
+}
+
+const std::wstring CNESConfig::getId(const ToolConfigurationType & tct, const AnalysisRuleType & art)
+{
+    /*auto i = tct.getRuleLink().find(art.getId());
+    if (i == tct.getRuleLink().end())
+    {
+        return scilab::UTF8::toWide(art.getId());
+    }
+    else
+    {
+        return scilab::UTF8::toWide(i->second.getStandardRuleId());
+       }*/
+    return scilab::UTF8::toWide(art.getId());
+}
+
+template<>
+SLintChecker * CNESConfig::create<FunctionNameChecker>(const ToolConfigurationType & tct, const AnalysisRuleType & art)
+{
+    if (art.getActivation())
+    {
+        std::wstring pattern;
+        int min = -1;
+        int max = -1;
+
+        CNESConfig::getWString(art, "namePattern", pattern);
+        CNESConfig::getInt(art, "length", min, max);
+
+        return new FunctionNameChecker(CNESConfig::getId(tct, art), pattern, min, max);
+    }
+
+    return nullptr;
+}
+
+template<>
+SLintChecker * CNESConfig::create<VariableNameChecker>(const ToolConfigurationType & tct, const AnalysisRuleType & art)
+{
+    if (art.getActivation())
+    {
+        std::wstring pattern;
+        int min = -1;
+        int max = -1;
+
+        CNESConfig::getWString(art, "namePattern", pattern);
+        CNESConfig::getInt(art, "length", min, max);
+
+        return new VariableNameChecker(CNESConfig::getId(tct, art), pattern, min, max);
+    }
+
+    return nullptr;
+}
+
+template<>
+SLintChecker * CNESConfig::create<McCabeChecker>(const ToolConfigurationType & tct, const AnalysisRuleType & art)
+{
+    if (art.getActivation())
+    {
+        int max = -1;
+        CNESConfig::getInt(art, "max", max);
+
+        return new McCabeChecker(CNESConfig::getId(tct, art), max);
+    }
+
+    return nullptr;
+}
+
+template<>
+SLintChecker * CNESConfig::create<DecimalChecker>(const ToolConfigurationType & tct, const AnalysisRuleType & art)
+{
+    if (art.getActivation())
+    {
+        std::wstring character;
+        bool checkDot = false;
+
+        CNESConfig::getWString(art, "character", character);
+        CNESConfig::getBool(art, "checkDot", checkDot);
+
+        return new DecimalChecker(CNESConfig::getId(tct, art), character, checkDot);
+    }
+
+    return nullptr;
+}
+
+template<>
+SLintChecker * CNESConfig::create<LineLengthChecker>(const ToolConfigurationType & tct, const AnalysisRuleType & art)
+{
+    if (art.getActivation())
+    {
+        int max = -1;
+        CNESConfig::getInt(art, "max", max);
+
+        return new LineLengthChecker(CNESConfig::getId(tct, art), max);
+    }
+
+    return nullptr;
+}
+
+template<>
+SLintChecker * CNESConfig::create<LinesCountChecker>(const ToolConfigurationType & tct, const AnalysisRuleType & art)
+{
+    if (art.getActivation())
+    {
+        int max = -1;
+        CNESConfig::getInt(art, "max", max);
+
+        return new LinesCountChecker(CNESConfig::getId(tct, art), max);
+    }
+
+    return nullptr;
+}
+
+template<>
+SLintChecker * CNESConfig::create<StructChecker>(const ToolConfigurationType & tct, const AnalysisRuleType & art)
+{
+    if (art.getActivation())
+    {
+        std::wstring pattern;
+        int min = -1;
+        int max = -1;
+
+        CNESConfig::getWString(art, "fieldPattern", pattern);
+        CNESConfig::getInt(art, "length", min, max);
+
+        return new StructChecker(CNESConfig::getId(tct, art), pattern, min, max);
+    }
+
+    return nullptr;
+}
+
+template<>
+SLintChecker * CNESConfig::create<BreaksInLoopChecker>(const ToolConfigurationType & tct, const AnalysisRuleType & art)
+{
+    if (art.getActivation())
+    {
+        int maxBreaks = -1;
+        int maxContinues = -1;
+
+        CNESConfig::getInt(art, "maxBreaks", maxBreaks);
+        CNESConfig::getInt(art, "maxContinues", maxContinues);
+
+        return new BreaksInLoopChecker(CNESConfig::getId(tct, art), maxBreaks, maxContinues);
+    }
+
+    return nullptr;
+}
+
+template<>
+SLintChecker * CNESConfig::create<NestedBlocksChecker>(const ToolConfigurationType & tct, const AnalysisRuleType & art)
+{
+    if (art.getActivation())
+    {
+        int max = -1;
+        CNESConfig::getInt(art, "max", max);
+
+        return new NestedBlocksChecker(CNESConfig::getId(tct, art), max);
+    }
+
+    return nullptr;
+}
+
+template<>
+SLintChecker * CNESConfig::create<ReturnsCountChecker>(const ToolConfigurationType & tct, const AnalysisRuleType & art)
+{
+    if (art.getActivation())
+    {
+        int max = -1;
+        CNESConfig::getInt(art, "max", max);
+
+        return new ReturnsCountChecker(CNESConfig::getId(tct, art), max);
+    }
+
+    return nullptr;
+}
+
+template<>
+SLintChecker * CNESConfig::create<ExpInCondChecker>(const ToolConfigurationType & tct, const AnalysisRuleType & art)
+{
+    if (art.getActivation())
+    {
+        int max = -1;
+        CNESConfig::getInt(art, "max", max);
+
+        return new ExpInCondChecker(CNESConfig::getId(tct, art), max);
+    }
+
+    return nullptr;
+}
+
+template<>
+SLintChecker * CNESConfig::create<IllegalCallsChecker>(const ToolConfigurationType & tct, const AnalysisRuleType & art)
+{
+    if (art.getActivation())
+    {
+        std::vector<std::wstring> names;
+        const auto & p = art.getAnalysisRuleParameter().equal_range("keyword");
+        for (auto i = p.first; i != p.second; ++i)
+        {
+            const AnalysisRuleParameterType & arpt = i->second;
+            names.emplace_back(scilab::UTF8::toWide(arpt.getTextValue()));
+        }
+
+        return new IllegalCallsChecker(CNESConfig::getId(tct, art), names);
+    }
+
+    return nullptr;
+}
+
+template<>
+SLintChecker * CNESConfig::create<FunctionTestReturnChecker>(const ToolConfigurationType & tct, const AnalysisRuleType & art)
+{
+    if (art.getActivation())
+    {
+        std::unordered_map<std::wstring, std::vector<unsigned int>> namesArgs;
+        const auto & p = art.getAnalysisRuleParameter().equal_range("keyword");
+        for (auto i = p.first; i != p.second; ++i)
+        {
+            const AnalysisRuleParameterType & arpt = i->second;
+            const std::wstring name = scilab::UTF8::toWide(arpt.getTextValue());
+            const double x = arpt.getNumericalValue();
+            if (x > 0 && !name.empty())
+            {
+                const std::vector<unsigned int> arg = { (unsigned int)x };
+                namesArgs.emplace(name, arg);
+            }
+        }
+
+        return new FunctionTestReturnChecker(CNESConfig::getId(tct, art), namesArgs);
+    }
+
+    return nullptr;
+}
+
+template<>
+SLintChecker * CNESConfig::create<SelectChecker>(const ToolConfigurationType & tct, const AnalysisRuleType & art)
+{
+    if (art.getActivation())
+    {
+        bool checkDefault = false;
+        bool checkHomogeneity = false;
+        bool checkEmpty = false;
+        bool checkOneCase = false;
+
+        CNESConfig::getBool(art, "default", checkDefault);
+        CNESConfig::getBool(art, "homogeneity", checkHomogeneity);
+        CNESConfig::getBool(art, "empty", checkEmpty);
+        CNESConfig::getBool(art, "oneCase", checkOneCase);
+
+        return new SelectChecker(CNESConfig::getId(tct, art), checkDefault, checkHomogeneity, checkEmpty, checkOneCase);
+    }
+
+    return nullptr;
+}
+
+template<>
+SLintChecker * CNESConfig::create<CommentRatioChecker>(const ToolConfigurationType & tct, const AnalysisRuleType & art)
+{
+    if (art.getActivation())
+    {
+        double ratio = 0;
+
+        CNESConfig::getDouble(art, "ratioMin", ratio);
+        if (ratio < 0)
+        {
+            ratio = 0;
+        }
+        else if (ratio > 1)
+        {
+            ratio = 1;
+        }
+
+        return new CommentRatioChecker(CNESConfig::getId(tct, art), ratio);
+    }
+
+    return nullptr;
+}
+
+std::unordered_map<std::string, CNESConfig::CBType> CNESConfig::initCallbacks()
+{
+    std::unordered_map<std::string, CBType> callbacks;
+
+    SLINT_INSERT_IN_MAP(GlobalKeyword);
+    SLINT_INSERT_IN_MAP(Redefinition);
+    SLINT_INSERT_IN_MAP(Variables);
+    SLINT_INSERT_IN_MAP(FunctionName);
+    SLINT_INSERT_IN_MAP(FunctionArgs);
+    SLINT_INSERT_IN_MAP(UselessArg);
+    SLINT_INSERT_IN_MAP(UselessRet);
+    SLINT_INSERT_IN_MAP(VariableName);
+    SLINT_INSERT_IN_MAP(SingleInstr);
+    SLINT_INSERT_IN_MAP(EmptyBlock);
+    SLINT_INSERT_IN_MAP(SemicolonAtEOL);
+    SLINT_INSERT_IN_MAP(MopenMclose);
+    SLINT_INSERT_IN_MAP(McCabe);
+    SLINT_INSERT_IN_MAP(Decimal);
+    SLINT_INSERT_IN_MAP(Printf);
+    SLINT_INSERT_IN_MAP(LineLength);
+    SLINT_INSERT_IN_MAP(LinesCount);
+    SLINT_INSERT_IN_MAP(Todo);
+    SLINT_INSERT_IN_MAP(NaN);
+    SLINT_INSERT_IN_MAP(EqEq);
+    SLINT_INSERT_IN_MAP(UselessOp);
+    SLINT_INSERT_IN_MAP(UnreachableCode);
+    SLINT_INSERT_IN_MAP(Deprecated);
+    SLINT_INSERT_IN_MAP(Select);
+    SLINT_INSERT_IN_MAP(ImplicitList);
+    SLINT_INSERT_IN_MAP(Struct);
+    SLINT_INSERT_IN_MAP(LoadSave);
+    SLINT_INSERT_IN_MAP(OldNot);
+    SLINT_INSERT_IN_MAP(SpacesAroundOp);
+    SLINT_INSERT_IN_MAP(SpacesInArgs);
+    SLINT_INSERT_IN_MAP(BreaksInLoop);
+    SLINT_INSERT_IN_MAP(NestedBlocks);
+    SLINT_INSERT_IN_MAP(BracketedExp);
+    SLINT_INSERT_IN_MAP(NotNot);
+    SLINT_INSERT_IN_MAP(IllegalCalls);
+    SLINT_INSERT_IN_MAP(ExpInCond);
+    SLINT_INSERT_IN_MAP(CommentRatio);
+    SLINT_INSERT_IN_MAP(FunctionArgsOrder);
+    SLINT_INSERT_IN_MAP(FunctionTestReturn);
+    SLINT_INSERT_IN_MAP(ReturnsCount);
+
+    return callbacks;
+}
+
+} // namspace CNES
+} // namespace slint
+
+#undef SLINT_INSERT_IN_MAP
diff --git a/scilab/modules/slint/src/cpp/CNESCsvResult.cpp b/scilab/modules/slint/src/cpp/CNESCsvResult.cpp
new file mode 100644 (file)
index 0000000..4f15fe2
--- /dev/null
@@ -0,0 +1,198 @@
+/*
+ *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ *  Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ *  This file must be used under the terms of the CeCILL.
+ *  This source file is licensed as described in the file COPYING, which
+ *  you should have received as part of this distribution.  The terms
+ *  are also available at
+ *  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#include <chrono>
+#include <ctime>
+#include <string>
+
+#include "output/cnes/CNESCsvResult.hxx"
+#include "checkers/SLintChecker.hxx"
+#include "FileException.hxx"
+#include "SLint.hxx"
+#include "SciFile.hxx"
+#include "UTF8.hxx"
+
+extern "C"
+{
+#include "sci_malloc.h"
+#include "charEncoding.h"
+#include "localization.h"
+}
+
+namespace slint
+{
+
+namespace CNES
+{
+
+CNESCsvResult::CNESCsvResult(const ToolConfiguration & tc, types::String * conf, const std::wstring & id, const std::wstring & _path) : tct(tc.getToolConfiguration()), current(nullptr), path(_path)
+{
+    std::string projectName;
+    std::string projectVersion;
+    std::string projectAuthor;
+    if (conf)
+    {
+        if (conf->getSize() >= 4)
+        {
+            projectName = getStr(conf->get(3));
+        }
+        if (conf->getSize() >= 5)
+        {
+            projectVersion = getStr(conf->get(4));
+        }
+        if (conf->getSize() >= 6)
+        {
+            projectAuthor = getStr(conf->get(5));
+        }
+    }
+    const std::wstring fullpath = SLint::getFullPath(path);
+    out = new std::ofstream(scilab::UTF8::toUTF8(fullpath), std::ios::out);
+    if (!out->is_open())
+    {
+        delete out;
+        out = nullptr;
+        throw slint::FileException(fullpath, _("Cannot open the file"));
+    }
+    else
+    {
+        (*out) << projectName << ',';
+        (*out) << projectVersion << ',';
+        (*out) << projectAuthor << ',';
+        (*out) << "scilab,";
+
+        std::chrono::time_point<std::chrono::system_clock> point = std::chrono::system_clock::now();;
+        std::time_t time = std::chrono::system_clock::to_time_t(point);
+        std::string date(std::ctime(&time));
+        if (date.back() == '\n')
+        {
+            date = std::string(date.begin(), std::prev(date.end()));
+        }
+        (*out) << getStr(date) << ",\n";
+    }
+}
+
+CNESCsvResult::~CNESCsvResult()
+{
+    if (out)
+    {
+        out->close();
+        delete out;
+    }
+}
+
+void CNESCsvResult::finalize()
+{
+    printRes();
+    out->close();
+    delete out;
+    out = nullptr;
+}
+
+void CNESCsvResult::handleFiles(const std::vector<SciFilePtr> & files)
+{
+}
+
+void CNESCsvResult::handleMessage(SLintContext & context, const Location & loc, const SLintChecker & checker, const unsigned sub, const std::wstring & msg)
+{
+    if (context.getSciFile().get() != current.get())
+    {
+        printRes();
+        current = context.getSciFile();
+    }
+    if (const ast::FunctionDec * fd = context.topFn())
+    {
+        res[checker.getId(sub)].emplace_back(loc, msg, fd->getSymbol().getName());
+    }
+    else
+    {
+        res[checker.getId(sub)].emplace_back(loc, msg, L"");
+    }
+}
+
+void CNESCsvResult::printRes()
+{
+    if (current.get())
+    {
+        for (const auto & r : res)
+        {
+            const std::string name = scilab::UTF8::toUTF8(r.first);
+            std::string ruleName;
+            auto i = tct.getRuleLink().find(name);
+            if (i == tct.getRuleLink().end())
+            {
+                ruleName = getStr(r.first);
+            }
+            else
+            {
+                ruleName = getStr(scilab::UTF8::toWide(i->second.getStandardRuleId()));
+            }
+            for (const auto & info : r.second)
+            {
+                (*out) << ruleName << ','
+                       << getStr(current->getFilename()) << ','
+                       << getStr(info.funName) << ','
+                       << getStr(info.msg) << ','
+                       << info.loc.first_line << ','
+                       << info.loc.first_column << '\n';
+            }
+        }
+    }
+    res.clear();
+}
+
+const std::string CNESCsvResult::getStr(const std::wstring & str)
+{
+    std::vector<wchar_t> buf;
+    buf.reserve(str.size() + 2);
+    buf.push_back(L'\"');
+    for (auto c : str)
+    {
+        if (c == L'\"')
+        {
+            buf.push_back(L'\\');
+            buf.push_back(L'\"');
+        }
+        else
+        {
+            buf.push_back(c);
+        }
+    }
+    buf.push_back(L'\"');
+
+    return scilab::UTF8::toUTF8(std::wstring(buf.begin(), buf.end()));
+}
+
+const std::string CNESCsvResult::getStr(const std::string & str)
+{
+    std::vector<char> buf;
+    buf.reserve(str.size() + 2);
+    buf.push_back('\"');
+    for (auto c : str)
+    {
+        if (c == '\"')
+        {
+            buf.push_back('\\');
+            buf.push_back('\"');
+        }
+        else
+        {
+            buf.push_back(c);
+        }
+    }
+    buf.push_back('\"');
+
+    return std::string(buf.begin(), buf.end());
+}
+
+} // namespace CNES
+
+} // namespace slint
diff --git a/scilab/modules/slint/src/cpp/CNESException.cpp b/scilab/modules/slint/src/cpp/CNESException.cpp
new file mode 100644 (file)
index 0000000..756ae99
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+ *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ *  Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ *  This file must be used under the terms of the CeCILL.
+ *  This source file is licensed as described in the file COPYING, which
+ *  you should have received as part of this distribution.  The terms
+ *  are also available at
+ *  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#include "config/cnes/CNESException.hxx"
+#include "UTF8.hxx"
+
+namespace slint
+{
+
+namespace CNES
+{
+CNESException::CNESException(const std::wstring & error)
+{
+    msg = scilab::UTF8::toUTF8(error);
+}
+
+#ifdef _MSC_VER
+const char * CNESException::what() const
+#else
+const char * CNESException::what() const noexcept
+#endif
+{
+    return msg.c_str();
+}
+
+} // namespace CNES
+
+} // namespace slint
diff --git a/scilab/modules/slint/src/cpp/CNESXmlResult.cpp b/scilab/modules/slint/src/cpp/CNESXmlResult.cpp
new file mode 100644 (file)
index 0000000..56387ae
--- /dev/null
@@ -0,0 +1,174 @@
+/*
+ *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ *  Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ *  This file must be used under the terms of the CeCILL.
+ *  This source file is licensed as described in the file COPYING, which
+ *  you should have received as part of this distribution.  The terms
+ *  are also available at
+ *  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#include <chrono>
+#include <ctime>
+#include <string>
+
+#include "output/SLintXmlResult.hxx"
+#include "output/cnes/CNESXmlResult.hxx"
+#include "checkers/SLintChecker.hxx"
+#include "FileException.hxx"
+#include "SLint.hxx"
+#include "SciFile.hxx"
+#include "UTF8.hxx"
+
+extern "C"
+{
+#include "sci_malloc.h"
+#include "charEncoding.h"
+#include "localization.h"
+}
+
+namespace slint
+{
+
+namespace CNES
+{
+
+CNESXmlResult::CNESXmlResult(const ToolConfiguration & tc, types::String * conf, const std::wstring & id, const std::wstring & _path) : tct(tc.getToolConfiguration()), current(nullptr), path(_path)
+{
+    std::string projectName;
+    std::string projectVersion;
+    std::string projectAuthor;
+    if (conf)
+    {
+        if (conf->getSize() >= 4)
+        {
+            projectName = SLintXmlResult::getStr(conf->get(3));
+        }
+        if (conf->getSize() >= 5)
+        {
+            projectVersion = SLintXmlResult::getStr(conf->get(4));
+        }
+        if (conf->getSize() >= 6)
+        {
+            projectAuthor = SLintXmlResult::getStr(conf->get(5));
+        }
+    }
+    const std::wstring fullpath = SLint::getFullPath(path);
+    out = new std::ofstream(scilab::UTF8::toUTF8(fullpath), std::ios::out);
+    if (!out->is_open())
+    {
+        delete out;
+        out = nullptr;
+        throw slint::FileException(fullpath, _("Cannot open the file"));
+    }
+    else
+    {
+        (*out) << "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"
+               << "<analysisProject";
+        if (!projectName.empty())
+        {
+            (*out) << " analysisProjectName=\"" << projectName << "\"";
+        }
+        if (!projectVersion.empty())
+        {
+            (*out) << " analysisProjectVersion=\"" << projectVersion << "\"";
+        }
+        (*out) << ">\n"
+               << "  <analysisInformations analysisConfigurationId=\"" << SLintXmlResult::getStr(id) << "\"";
+        if (!projectAuthor.empty())
+        {
+            (*out) << " author=\"" << projectAuthor << "\"";
+        }
+
+        std::chrono::time_point<std::chrono::system_clock> point = std::chrono::system_clock::now();;
+        std::time_t time = std::chrono::system_clock::to_time_t(point);
+        std::string date(std::ctime(&time));
+        if (date.back() == '\n')
+        {
+            date = std::string(date.begin(), std::prev(date.end()));
+        }
+        (*out) << " analysisDate=\"" << date << "\" />\n";
+    }
+}
+
+CNESXmlResult::~CNESXmlResult()
+{
+    if (out)
+    {
+        out->close();
+        delete out;
+    }
+}
+
+void CNESXmlResult::finalize()
+{
+    printRes();
+    (*out) << "</analysisProject>\n";
+    out->close();
+    delete out;
+    out = nullptr;
+}
+
+void CNESXmlResult::handleFiles(const std::vector<SciFilePtr> & files)
+{
+    for (const auto & file : files)
+    {
+        (*out) << "  <analysisFile filename=\"" << SLintXmlResult::getStr(file->getFilename()) << "\""
+               << " language=\"scilab\" />\n";
+    }
+}
+
+void CNESXmlResult::handleMessage(SLintContext & context, const Location & loc, const SLintChecker & checker, const unsigned sub, const std::wstring & msg)
+{
+    if (context.getSciFile().get() != current.get())
+    {
+        printRes();
+        current = context.getSciFile();
+    }
+    if (const ast::FunctionDec * fd = context.topFn())
+    {
+        res[checker.getId(sub)].emplace_back(loc, msg, fd->getSymbol().getName());
+    }
+    else
+    {
+        res[checker.getId(sub)].emplace_back(loc, msg, L"");
+    }
+}
+
+void CNESXmlResult::printRes()
+{
+    if (current.get())
+    {
+        for (const auto & r : res)
+        {
+            const std::string name = scilab::UTF8::toUTF8(r.first);
+            std::string ruleName;
+            auto i = tct.getRuleLink().find(name);
+            if (i == tct.getRuleLink().end())
+            {
+                ruleName = SLintXmlResult::getStr(r.first);
+            }
+            else
+            {
+                ruleName = SLintXmlResult::getStr(scilab::UTF8::toWide(i->second.getStandardRuleId()));
+            }
+            (*out) << "  <analysisRule analysisRuleId=\"" << ruleName << "\">\n";
+            for (const auto & info : r.second)
+            {
+                (*out) << "    <result fileName=\"" << SLintXmlResult::getStr(current->getFilename()) << "\""
+                       << " resultNamePlace=\"" << SLintXmlResult::getStr(info.funName) << "\""
+                       << " resultMessage=\"" << SLintXmlResult::getStr(info.msg) << "\""
+                       << " resultLine=\"" << info.loc.first_line << "\""
+                       << " resultColumn=\"" << info.loc.first_column << "\" />\n";
+            }
+            (*out) << "  </analysisRule>\n";
+        }
+    }
+    res.clear();
+}
+
+} // namespace CNES
+
+} // namespace slint
index 38f16ea..4294d4d 100644 (file)
@@ -25,13 +25,25 @@ void DecimalChecker::preCheckNode(const ast::Exp & e, SLintContext & context, SL
     if (context.getPosition(de.getLocation(), out))
     {
         const wchar_t * const code = context.getCode();
-        if (character != L'\0')
+        if (!character.empty())
         {
             for (const wchar_t * c = code + out.first; c < code + out.second; ++c)
             {
-                if ((*c == L'e' || *c == L'E' || *c == L'd' || *c == L'D') && *c != character)
+                if (*c == L'e' || *c == L'E' || *c == L'd' || *c == L'D')
                 {
-                    result.report(context, e.getLocation(), *this, _("Bad decimal exponent: %s was expected and %s was found."), character, *c);
+                    bool ok = false;
+                    for (const wchar_t _c : character)
+                    {
+                        if (_c == *c)
+                        {
+                            ok = true;
+                            break;
+                        }
+                    }
+                    if (!ok)
+                    {
+                        result.report(context, e.getLocation(), *this, _("Bad decimal exponent: %s was expected and %s was found."), character, *c);
+                    }
                 }
             }
         }
@@ -39,7 +51,7 @@ void DecimalChecker::preCheckNode(const ast::Exp & e, SLintContext & context, SL
         {
             if (*(code + out.first) == L'.')
             {
-                result.report(context, e.getLocation(), *this, _("Decimal numbers musn\'t begin by a dot."));
+                result.report(context, e.getLocation(), *this, _("Decimal numbers must not begin by a dot."));
             }
         }
     }
diff --git a/scilab/modules/slint/src/cpp/ExcludedProjectFileType.cpp b/scilab/modules/slint/src/cpp/ExcludedProjectFileType.cpp
new file mode 100644 (file)
index 0000000..d8d8302
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+ *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ *  Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ *  This file must be used under the terms of the CeCILL.
+ *  This source file is licensed as described in the file COPYING, which
+ *  you should have received as part of this distribution.  The terms
+ *  are also available at
+ *  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#include "config/cnes/ExcludedProjectFileType.hxx"
+#include "XMLtools.hxx"
+
+namespace slint
+{
+
+namespace CNES
+{
+
+ExcludedProjectFileType ExcludedProjectFileType::createFromXmlNode(xmlNode * node)
+{
+    std::string filename;
+    slint::XMLtools::getString(node, "excludedProjectFileName", filename);
+
+    return ExcludedProjectFileType(filename);
+}
+
+} // namespace CNES
+
+} // namespace slint
  *
  */
 
-#include "checkers/StatInCondChecker.hxx"
+#include "checkers/ExpInCondChecker.hxx"
 
 namespace slint
 {
-void StatInCondChecker::preCheckNode(const ast::Exp & e, SLintContext & context, SLintResult & result)
+void ExpInCondChecker::preCheckNode(const ast::Exp & e, SLintContext & context, SLintResult & result)
 {
     unsigned int num = 0;
     if (e.isIfExp())
@@ -31,20 +31,20 @@ void StatInCondChecker::preCheckNode(const ast::Exp & e, SLintContext & context,
 
     if (num && num >= max)
     {
-        result.report(context, e.getLocation(), *this, _("Number of statements is limited: %d max."), max);
+        result.report(context, e.getLocation(), *this, _("Number of expressions in condition is limited: %d max."), max);
     }
 }
 
-void StatInCondChecker::postCheckNode(const ast::Exp & e, SLintContext & context, SLintResult & result)
+void ExpInCondChecker::postCheckNode(const ast::Exp & e, SLintContext & context, SLintResult & result)
 {
 }
 
-const std::string StatInCondChecker::getName() const
+const std::string ExpInCondChecker::getName() const
 {
-    return "StatInCondChecker";
+    return "ExpInCondChecker";
 }
 
-unsigned int StatInCondChecker::checkCond(const ast::Exp & e) const
+unsigned int ExpInCondChecker::checkCond(const ast::Exp & e) const
 {
     if (e.isOpExp())
     {
index 8e9b811..4e67b4e 100644 (file)
@@ -29,6 +29,12 @@ FileException::FileException(const std::wstring & filename, const std::wstring &
     msg = std::string("Error with file ") + scilab::UTF8::toUTF8(filename) + ":\n" + scilab::UTF8::toUTF8(error);
 }
 
+FileException::FileException(const std::wstring & filename, const std::string & error)
+{
+    msg = std::string("Error with file ") + scilab::UTF8::toUTF8(filename) + ":\n" + error;
+}
+
+    
 #ifdef _MSC_VER
 const char * FileException::what() const
 #else
index 18cbc4f..ae2a03e 100644 (file)
@@ -48,7 +48,7 @@ void FunctionTestReturnChecker::preCheckNode(const ast::Exp & e, SLintContext &
                         {
                             if (pos > exps.size())
                             {
-                                result.report(context, e.getLocation(), *this, _("Function %s requires an error checking just after call."), name);
+                                result.report(context, e.getLocation(), *this, _("Function %s requires an error checking just after the call."), name);
                                 return;
                             }
                             else
@@ -64,7 +64,7 @@ void FunctionTestReturnChecker::preCheckNode(const ast::Exp & e, SLintContext &
                     {
                         if (positions.size() > 1 || positions.back() != 1)
                         {
-                            result.report(context, e.getLocation(), *this, _("Function %s requires an error checking just after call."), name);
+                            result.report(context, e.getLocation(), *this, _("Function %s requires an error checking just after the call."), name);
                             return;
                         }
                         syms.emplace(static_cast<ast::SimpleVar &>(ae->getLeftExp()).getSymbol());
@@ -78,7 +78,7 @@ void FunctionTestReturnChecker::preCheckNode(const ast::Exp & e, SLintContext &
                             FindSymVisitor(syms, ie->getTest());
                             if (!syms.empty())
                             {
-                                result.report(context, e.getLocation(), *this, _("Function %s requires an error checking just after call."), name);
+                                result.report(context, e.getLocation(), *this, _("Function %s requires an error checking just after the call."), name);
                                 return;
                             }
                         }
@@ -86,7 +86,7 @@ void FunctionTestReturnChecker::preCheckNode(const ast::Exp & e, SLintContext &
                 }
                 else
                 {
-                    result.report(context, e.getLocation(), *this, _("Function %s requires an error checking just after call."), name);
+                    result.report(context, e.getLocation(), *this, _("Function %s requires an error checking just after the call."), name);
                     return;
                 }
             }
index 3ed0572..510320c 100644 (file)
@@ -23,32 +23,61 @@ namespace slint
 void ImplicitListChecker::preCheckNode(const ast::Exp & e, SLintContext & context, SLintResult & result)
 {
     const ast::ListExp & le = static_cast<const ast::ListExp &>(e);
-    if (le.getStart().isDoubleExp() && le.getStep().isDoubleExp() && le.getEnd().isDoubleExp())
+    if (le.getStart().isDoubleExp())
     {
         const double start = static_cast<const ast::DoubleExp &>(le.getStart()).getValue();
+        if (ISNAN(start) || !finite(start))
+        {
+            result.report(context, e.getLocation(), *this, _("Invalid list, it contains NaN or Inf."));
+        }
+    }
+
+    if (le.getStart().isSimpleVar())
+    {
+        const std::wstring start = static_cast<const ast::SimpleVar &>(le.getStart()).getSymbol().getName();
+        if (start == L"%nan" || start == L"%inf")
+        {
+            result.report(context, e.getLocation(), *this, _("Invalid list, it contains NaN or Inf."));
+        }
+    }
+
+    if (le.getStep().isDoubleExp())
+    {
         const double step = static_cast<const ast::DoubleExp &>(le.getStep()).getValue();
+        if (ISNAN(step) || !finite(step))
+        {
+            result.report(context, e.getLocation(), *this, _("Invalid list, it contains NaN or Inf."));
+        }
+    }
+
+    if (le.getStep().isSimpleVar())
+    {
+        const std::wstring step = static_cast<const ast::SimpleVar &>(le.getStep()).getSymbol().getName();
+        if (step == L"%nan" || step == L"%inf")
+        {
+            result.report(context, e.getLocation(), *this, _("Invalid list, it contains NaN or Inf."));
+        }
+    }
+
+    if (le.getEnd().isDoubleExp())
+    {
         const double end = static_cast<const ast::DoubleExp &>(le.getEnd()).getValue();
-        if (ISNAN(start) || ISNAN(step) || ISNAN(end) || !finite(start) || !finite(step) || !finite(end))
+        if (ISNAN(end) || !finite(end))
         {
             result.report(context, e.getLocation(), *this, _("Invalid list, it contains NaN or Inf."));
         }
-        else
+    }
+
+    if (le.getEnd().isSimpleVar())
+    {
+        const std::wstring end = static_cast<const ast::SimpleVar &>(le.getEnd()).getSymbol().getName();
+        if (end == L"%nan" || end == L"%inf")
         {
-            if (start == end)
-            {
-                result.report(context, e.getLocation(), *this, _("List has the same start and end."));
-            }
-            if (step == 0)
-            {
-                result.report(context, e.getLocation(), *this, _("List has a null step."));
-            }
-            if ((start > end && step > 0) || (start < end && step < 0))
-            {
-                result.report(context, e.getLocation(), *this, _("List is empty."));
-            }
+            result.report(context, e.getLocation(), *this, _("Invalid list, it contains NaN or Inf."));
         }
     }
-    else if (le.getStart().isListExp() || le.getStep().isListExp() || le.getEnd().isListExp())
+
+    if (le.getStart().isListExp() || le.getStep().isListExp() || le.getEnd().isListExp())
     {
         result.report(context, e.getLocation(), *this, _("Bad use of ':' operator."));
     }
index 796cba3..18ecadf 100644 (file)
@@ -22,27 +22,38 @@ namespace slint
 {
 void LineLengthChecker::preCheckNode(const ast::Exp & e, SLintContext & context, SLintResult & result)
 {
+}
+
+void LineLengthChecker::postCheckNode(const ast::Exp & e, SLintContext & context, SLintResult & result)
+{
+}
+
+bool LineLengthChecker::isFileChecker() const
+{
+    return true;
+}
+
+void LineLengthChecker::preCheckFile(SLintContext & context, SLintResult & result)
+{
     if (max > 0)
     {
-        if (context.isFirstLevelFn())
+        std::vector<unsigned int> out;
+        if (!context.checkLineLength((unsigned int)max, out))
         {
-            std::vector<unsigned int> out;
-            if (!context.checkLineLength((unsigned int)max, out))
+            std::wostringstream wos;
+            for (std::vector<unsigned int>::const_iterator i = out.begin(), end = std::prev(out.end()); i != end; ++i)
             {
-                std::wostringstream wos;
-                for (std::vector<unsigned int>::const_iterator i = out.begin(), end = std::prev(out.end()); i != end; ++i)
-                {
-                    wos << *i << L", ";
-                }
-                wos << *std::prev(out.end());
-                result.report(context, e.getLocation(), *this, _("Maximum line length exceeded at lines: %s."), wos.str());
+                wos << *i << L", ";
             }
+            wos << *std::prev(out.end());
+            result.report(context, Location(), *this, _("Maximum line length exceeded at lines: %s."), wos.str());
         }
     }
 }
 
-void LineLengthChecker::postCheckNode(const ast::Exp & e, SLintContext & context, SLintResult & result)
+void LineLengthChecker::postCheckFile(SLintContext & context, SLintResult & result)
 {
+
 }
 
 const std::string LineLengthChecker::getName() const
index ab32fc3..d5ce1ed 100644 (file)
@@ -36,7 +36,7 @@ void LoadSaveChecker::preCheckNode(const ast::Exp & e, SLintContext & context, S
                 }
                 else if (args.size() == 1)
                 {
-                    result.report(context, e.getLocation(), *this, _("Function %s should be called with variable name arguments."), name);
+                    result.report(context, e.getLocation(), *this, _("Function %s should be called with names of variables."), name);
                 }
                 else
                 {
index 67c1057..9445a1c 100644 (file)
@@ -22,6 +22,20 @@ void NestedBlocksChecker::preCheckNode(const ast::Exp & e, SLintContext & contex
 {
     if (max >= 0)
     {
+        if (e.isIfExp() && !stack.empty())
+        {
+            std::pair<unsigned int, unsigned int> pos;
+            if (context.getPosition(e.getLocation(), pos))
+            {
+                const wchar_t * kw = context.getCode() + pos.first;
+                if (*kw == L'e')
+                {
+                    // we are in a elseif
+                    stack.erase(std::prev(stack.end()));
+                }
+            }
+        }
+
         stack.emplace_back(&e);
         if (stack.size() == (1 + (unsigned int)max))
         {
diff --git a/scilab/modules/slint/src/cpp/NotEqualChecker.cpp b/scilab/modules/slint/src/cpp/NotEqualChecker.cpp
new file mode 100644 (file)
index 0000000..2101969
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+ *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ *  Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ *  This file must be used under the terms of the CeCILL.
+ *  This source file is licensed as described in the file COPYING, which
+ *  you should have received as part of this distribution.  The terms
+ *  are also available at
+ *  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#include "checkers/NotEqualChecker.hxx"
+
+namespace slint
+{
+
+void NotEqualChecker::preCheckNode(const ast::Exp & e, SLintContext & context, SLintResult & result)
+{
+    const ast::OpExp & oe = static_cast<const ast::OpExp &>(e);
+    if (oe.getOper() == ast::OpExp::ne)
+    {
+        std::pair<unsigned int, unsigned int> pos;
+        const Location & lloc = oe.getLeft().getLocation();
+        const Location & rloc = oe.getRight().getLocation();
+        Location loc(lloc.last_line, rloc.first_line, lloc.last_column, rloc.first_column - 1);
+        if (context.getPosition(loc, pos))
+        {
+            const wchar_t * code = context.getCode();
+            while (code[pos.first] == L' ' || code[pos.first] == L'\t')
+            {
+                ++pos.first;
+            }
+            while (code[pos.second] == L' ' || code[pos.second] == L'\t')
+            {
+                --pos.second;
+            }
+            const std::wstring _op(code + pos.first, code + pos.second + 1);
+            if (pos.first < pos.second && _op != op)
+            {
+                result.report(context, e.getLocation(), *this, _("Operator \'%s\' should be used rather than \'%s\'."), op, _op);
+            }
+        }
+    }
+}
+
+void NotEqualChecker::postCheckNode(const ast::Exp & e, SLintContext & context, SLintResult & result)
+{
+}
+
+const std::string NotEqualChecker::getName() const
+{
+    return "NotEqualChecker";
+}
+}
diff --git a/scilab/modules/slint/src/cpp/RuleLinkType.cpp b/scilab/modules/slint/src/cpp/RuleLinkType.cpp
new file mode 100644 (file)
index 0000000..1c8c8f6
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+ *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ *  Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ *  This file must be used under the terms of the CeCILL.
+ *  This source file is licensed as described in the file COPYING, which
+ *  you should have received as part of this distribution.  The terms
+ *  are also available at
+ *  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#include "config/cnes/RuleLinkType.hxx"
+#include "XMLtools.hxx"
+
+namespace slint
+{
+
+namespace CNES
+{
+
+RuleLinkType RuleLinkType::createFromXmlNode(xmlNode * node)
+{
+    std::string standardRuleId;
+    std::string analysisRuleId;
+    std::string ruleCoverage;
+    std::string standardId;
+
+    slint::XMLtools::getString(node, "standardRuleId", standardRuleId);
+    slint::XMLtools::getString(node, "analysisRuleId", analysisRuleId);
+    slint::XMLtools::getString(node, "ruleCoverage", ruleCoverage);
+    slint::XMLtools::getString(node, "standardId", standardId);
+
+    return RuleLinkType(standardRuleId, analysisRuleId, ruleCoverage, standardId);
+}
+
+} // namespace CNES
+
+} // namespace slint
index 9a4704f..a8b4c34 100644 (file)
@@ -17,6 +17,7 @@
 #include <iostream>
 
 #include "parser.hxx"
+#include "prettyprintvisitor.hxx"
 #include "SLint.hxx"
 #include "threadmanagement.hxx"
 #include "UTF8.hxx"
@@ -40,6 +41,11 @@ extern "C"
 #define DEFAULT_FILESPEC L"*"
 #endif
 
+//#define SLINT_PRINT_AST
+#ifdef SLINT_PRINT_AST
+#include "prettyprintvisitor.hxx"
+#endif
+
 namespace slint
 {
 
@@ -60,6 +66,13 @@ void SLint::check()
     {
         context.setSciFile(scifile);
         visitor.preCheckFile();
+
+#ifdef SLINT_PRINT_AST
+        ast::PrettyPrintVisitor ppv(std::wcerr, false, true);
+        scifile->getTree()->accept(ppv);
+#undef SLINT_PRINT_AST
+#endif
+
         scifile->getTree()->accept(visitor);
         visitor.postCheckFile();
     }
@@ -101,6 +114,7 @@ void SLint::setFiles(const std::vector<std::wstring> & files)
                 if (sf.get())
                 {
                     scifiles.emplace_back(sf);
+                    context.addPublicFunction(sf->getMain());
                 }
             }
         }
index ba30e19..bc62ccc 100644 (file)
@@ -74,4 +74,10 @@ const std::wstring & SLintChecker::getId() const
 {
     return checkerId;
 }
+
+const std::wstring SLintChecker::getId(const unsigned sub) const
+{
+    return sub ? L"" : getId();
+}
+    
 }
index 9435048..7f15bdc 100644 (file)
@@ -28,10 +28,10 @@ namespace slint
 SLintScilabResult::SLintScilabResult() { }
 SLintScilabResult::~SLintScilabResult() { }
 
-void SLintScilabResult::handleMessage(SLintContext & context, const Location & loc, const SLintChecker & checker, const std::wstring & msg)
+void SLintScilabResult::handleMessage(SLintContext & context, const Location & loc, const SLintChecker & checker, const unsigned sub, const std::wstring & msg)
 {
     auto & mmap = results[context.getFilename()];
-    mmap.emplace(loc, checker.getId() + L": " + msg);
+    mmap.emplace(loc, checker.getId(sub) + L": " + msg);
 }
 
 void SLintScilabResult::finalize()
@@ -42,7 +42,7 @@ void SLintScilabResult::finalize()
         scilabWriteW(str.c_str());
         for (const auto & p2 : p1.second)
         {
-            std::wstring str = L"  At line " + std::to_wstring(p2.first.first_line) + L": " + p2.second + L"\n";
+            std::wstring str = L"  At l. " + std::to_wstring(p2.first.first_line) + L", c. " +  std::to_wstring(p2.first.first_column) + L": " + p2.second + L"\n";
             scilabWriteW(str.c_str());
         }
     }
@@ -51,9 +51,9 @@ void SLintScilabResult::finalize()
 SLintScilabOut::SLintScilabOut() { }
 SLintScilabOut::~SLintScilabOut() { }
 
-void SLintScilabOut::handleMessage(SLintContext & context, const Location & loc, const SLintChecker & checker, const std::wstring & msg)
+void SLintScilabOut::handleMessage(SLintContext & context, const Location & loc, const SLintChecker & checker, const unsigned sub, const std::wstring & msg)
 {
-    results[context.getFilename()][checker.getId()].emplace_back(loc, msg);
+    results[context.getFilename()][checker.getId(sub)].emplace_back(loc, msg);
 }
 
 void SLintScilabOut::finalize()
index 0205498..9287951 100644 (file)
@@ -222,7 +222,10 @@ void SLintVisitor::visit(const ast::CellExp & e)
 void SLintVisitor::visit(const ast::OpExp & e)
 {
     auto range = preCheck(e);
-    e.getLeft().accept(*this);
+    if (e.getOper() != ast::OpExp::unaryMinus)
+    {
+       e.getLeft().accept(*this);
+    }
     e.getRight().accept(*this);
     postCheck(e, range);
 }
@@ -325,6 +328,7 @@ void SLintVisitor::visit(const ast::AssignExp & e)
     context.setLHSExp(&e.getLeftExp());
     auto range = preCheck(e);
     e.getRightExp().accept(*this);
+    context.setLHSExp(&e.getLeftExp());
     e.getLeftExp().accept(*this);
     postCheck(e, range);
     context.setLHSExp(nullptr);
index a6ef7a8..2b59ae2 100644 (file)
@@ -45,7 +45,7 @@ SLintXmlResult::SLintXmlResult(const std::wstring & _path) : current(nullptr), p
     else
     {
         (*out) << "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"
-               << "<SLintResult>\n";
+            << "<SLintResult>\n";
     }
 }
 
@@ -60,6 +60,11 @@ SLintXmlResult::~SLintXmlResult()
 
 void SLintXmlResult::finalize()
 {
+    if (current.get())
+    {
+        (*out) << "  </File>\n";
+    }
+
     (*out) << "</SLintResult>\n";
     out->close();
     delete out;
@@ -71,7 +76,7 @@ const std::string SLintXmlResult::getStr(const std::wstring & str)
     return scilab::UTF8::toUTF8(replaceByEntities(str));
 }
 
-void SLintXmlResult::handleMessage(SLintContext & context, const Location & loc, const SLintChecker & checker, const std::wstring & msg)
+void SLintXmlResult::handleMessage(SLintContext & context, const Location & loc, const SLintChecker & checker, const unsigned sub, const std::wstring & msg)
 {
     if (context.getSciFile().get() != current.get())
     {
@@ -82,7 +87,7 @@ void SLintXmlResult::handleMessage(SLintContext & context, const Location & loc,
         current = context.getSciFile();
         print(current);
     }
-    print(loc, checker, msg);
+    print(loc, checker, sub, msg);
 }
 
 void SLintXmlResult::print(const SciFilePtr & file)
@@ -90,11 +95,11 @@ void SLintXmlResult::print(const SciFilePtr & file)
     (*out) << "  <File name=\"" << getStr(file->getFilename()) << "\">\n";
 }
 
-void SLintXmlResult::print(const Location & loc, const SLintChecker & checker, const std::wstring & msg)
+void SLintXmlResult::print(const Location & loc, const SLintChecker & checker, const unsigned sub, const std::wstring & msg)
 {
     (*out) << "    <Result>\n";
     print(loc);
-    print(checker);
+    print(checker, sub);
     print(msg);
     (*out) << "    </Result>\n";
 }
@@ -102,23 +107,23 @@ void SLintXmlResult::print(const Location & loc, const SLintChecker & checker, c
 void SLintXmlResult::print(const Location & loc)
 {
     (*out) << "      <Location first_line=\"" << loc.first_line
-           << "\" first_column=\"" << loc.first_column
-           << "\" last_line=\"" << loc.last_line
-           << "\" last_column=\"" << loc.last_column
-           << "\"/>\n";
+        << "\" first_column=\"" << loc.first_column
+        << "\" last_line=\"" << loc.last_line
+        << "\" last_column=\"" << loc.last_column
+        << "\"/>\n";
 }
 
-void SLintXmlResult::print(const SLintChecker & checker)
+void SLintXmlResult::print(const SLintChecker & checker, const unsigned sub)
 {
     (*out) << "      <Checker name=\"" << checker.getName()
-           << "\" id=\"" << getStr(checker.getId())
-           << "\"/>\n";
+        << "\" id=\"" << getStr(checker.getId(sub))
+        << "\"/>\n";
 }
 
 void SLintXmlResult::print(const std::wstring & msg)
 {
     (*out) << "      <Message text=\"" << getStr(msg)
-           << "\"/>\n";
+        << "\"/>\n";
 }
 
 std::wstring SLintXmlResult::replaceByEntities(const std::wstring & seq)
@@ -128,23 +133,23 @@ std::wstring SLintXmlResult::replaceByEntities(const std::wstring & seq)
     {
         if (c == L'<')
         {
-            pushEntity(buf, L"&#0060;", 7);
+            pushEntity(buf, L"&lt;", 4);
         }
         else if (c == L'>')
         {
-            pushEntity(buf, L"&#0062;", 7);
+            pushEntity(buf, L"&gt;", 4);
         }
         else if (c == L'\'')
         {
-            pushEntity(buf, L"&#0039;", 7);
+            pushEntity(buf, L"&apos;", 6);
         }
         else if (c == L'\"')
         {
-            pushEntity(buf, L"&#0034;", 7);
+            pushEntity(buf, L"&quot;", 6);
         }
         else if (c == L'&')
         {
-            pushEntity(buf, L"&#0038;", 7);
+            pushEntity(buf, L"&amp;", 5);
         }
         else
         {
index 57973c7..fd6f691 100644 (file)
@@ -25,7 +25,7 @@ namespace slint
 
 SciFile::SciFile() : code(nullptr), tree(nullptr), main(nullptr) { }
 
-SciFile::SciFile(const std::wstring & _filename, const wchar_t * _code, const ast::Exp * _tree) : filename(_filename), code(_code), tree(_tree)
+SciFile::SciFile(const std::wstring & _filename, const wchar_t * _code, const ast::Exp * _tree) : filename(_filename), code(_code), tree(_tree), main(nullptr)
 {
     initLines();
     analyzeTree();
index 23e6928..966cf02 100644 (file)
@@ -2,14 +2,11 @@
  *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
  *  Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
  *
- * Copyright (C) 2012 - 2016 - Scilab Enterprises
- *
- * This file is hereby licensed under the terms of the GNU GPL v2.0,
- * pursuant to article 5.3.4 of the CeCILL v.2.1.
- * This file was originally licensed under the terms of the CeCILL v2.1,
- * and continues to be available under such terms.
- * For more information, see the COPYING file which you should have received
- * along with this program.
+ *  This file must be used under the terms of the CeCILL.
+ *  This source file is licensed as described in the file COPYING, which
+ *  you should have received as part of this distribution.  The terms
+ *  are also available at
+ *  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
  *
  */
 
@@ -19,25 +16,31 @@ namespace slint
 {
 void SemicolonAtEOLChecker::preCheckNode(const ast::Exp & e, SLintContext & context, SLintResult & result)
 {
-    if (e.isSeqExp())
+    if (context.isFirstLevelFn())
     {
-        const ast::exps_t & exps = static_cast<const ast::SeqExp &>(e).getExps();
-        if (!exps.empty())
-        {
-            int prevline = exps.front()->getLocation().last_line;
-            ast::Exp * prevexp = exps.front();
-            for (ast::exps_t::const_iterator i = std::next(exps.begin()), end = exps.end(); i != end; ++i)
+        checkSeqExp(static_cast<const ast::SeqExp &>(static_cast<const ast::FunctionDec &>(e).getBody()), context, result);
+    }
+
+    /*        if (e.isSeqExp())
             {
-                if ((*i)->getLocation().first_line != prevline)
+                const ast::exps_t & exps = static_cast<const ast::SeqExp &>(e).getExps();
+                if (!exps.empty())
                 {
+                    int prevline = exps.front()->getLocation().last_line;
+                    ast::Exp * prevexp = exps.front();
+                    for (ast::exps_t::const_iterator i = std::next(exps.begin()), end = exps.end(); i != end; ++i)
+                    {
+                        if ((*i)->getLocation().first_line != prevline)
+                        {
+                            check(prevexp, context, result);
+                        }
+                        prevexp = *i;
+                        prevline = prevexp->getLocation().last_line;
+                    }
                     check(prevexp, context, result);
                 }
-                prevexp = *i;
-                prevline = prevexp->getLocation().last_line;
             }
-            check(prevexp, context, result);
-        }
-    }
+    */
 }
 
 void SemicolonAtEOLChecker::postCheckNode(const ast::Exp & e, SLintContext & context, SLintResult & result)
@@ -49,6 +52,34 @@ const std::string SemicolonAtEOLChecker::getName() const
     return "SemicolonAtEOLChecker";
 }
 
+void SemicolonAtEOLChecker::checkSeqExp(const ast::SeqExp & e, SLintContext & context, SLintResult & result) const
+{
+    const ast::exps_t & exps = e.getExps();
+    if (!exps.empty())
+    {
+        int prevline = exps.front()->getLocation().last_line;
+        ast::Exp * prevexp = exps.front();
+        for (ast::exps_t::const_iterator i = std::next(exps.begin()), end = exps.end(); i != end; ++i)
+        {
+            if ((*i)->getLocation().first_line != prevline)
+            {
+                check(prevexp, context, result);
+            }
+            prevexp = *i;
+            prevline = prevexp->getLocation().last_line;
+            if (prevexp->isSeqExp())
+            {
+                checkSeqExp(static_cast<ast::SeqExp &>(*prevexp), context, result);
+            }
+            else if (prevexp->isFunctionDec())
+            {
+                checkSeqExp(static_cast<ast::SeqExp &>(static_cast<ast::FunctionDec *>(prevexp)->getBody()), context, result);
+            }
+        }
+        check(prevexp, context, result);
+    }
+}
+
 void SemicolonAtEOLChecker::check(const ast::Exp * e, SLintContext & context, SLintResult & result) const
 {
     ast::Exp::ExpType ty = e->getType();
diff --git a/scilab/modules/slint/src/cpp/Standard.cpp b/scilab/modules/slint/src/cpp/Standard.cpp
new file mode 100644 (file)
index 0000000..d7a1755
--- /dev/null
@@ -0,0 +1,35 @@
+/*
+ *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ *  Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ *  This file must be used under the terms of the CeCILL.
+ *  This source file is licensed as described in the file COPYING, which
+ *  you should have received as part of this distribution.  The terms
+ *  are also available at
+ *  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#include "config/cnes/Standard.hxx"
+#include "XMLtools.hxx"
+
+namespace slint
+{
+
+namespace CNES
+{
+
+Standard Standard::createFromXml(const std::wstring & path)
+{
+    xmlDoc * doc = slint::XMLtools::readXML(path);
+    xmlNode * root = xmlDocGetRootElement(doc);
+
+    Standard standard(StandardType::createFromXmlNode(root));
+    xmlFreeDoc(doc);
+
+    return standard;
+}
+
+} // namespace CNES
+
+} // namespace slint
diff --git a/scilab/modules/slint/src/cpp/StandardRuleParameterType.cpp b/scilab/modules/slint/src/cpp/StandardRuleParameterType.cpp
new file mode 100644 (file)
index 0000000..869c458
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+ *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ *  Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ *  This file must be used under the terms of the CeCILL.
+ *  This source file is licensed as described in the file COPYING, which
+ *  you should have received as part of this distribution.  The terms
+ *  are also available at
+ *  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#include "config/cnes/StandardRuleParameterType.hxx"
+#include "XMLtools.hxx"
+
+namespace slint
+{
+
+namespace CNES
+{
+
+StandardRuleParameterType StandardRuleParameterType::createFromXmlNode(xmlNode * node)
+{
+    std::string name;
+    slint::XMLtools::getString(node, "standardRuleParameterName", name);
+
+    StandardRuleParameterType srpt(name);
+    for (xmlNode * child = node->children; child; child = child->next)
+    {
+        srpt.add(StandardRuleParameterValueType::createFromXmlNode(child));
+    }
+
+    return srpt;
+}
+
+} // namespace CNES
+
+} // namespace slint
diff --git a/scilab/modules/slint/src/cpp/StandardRuleParameterValueType.cpp b/scilab/modules/slint/src/cpp/StandardRuleParameterValueType.cpp
new file mode 100644 (file)
index 0000000..aad48ab
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ *  Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ *  This file must be used under the terms of the CeCILL.
+ *  This source file is licensed as described in the file COPYING, which
+ *  you should have received as part of this distribution.  The terms
+ *  are also available at
+ *  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#include "config/cnes/StandardRuleParameterValueType.hxx"
+#include "XMLtools.hxx"
+
+namespace slint
+{
+
+namespace CNES
+{
+
+StandardRuleParameterValueType StandardRuleParameterValueType::createFromXmlNode(xmlNode * node)
+{
+    double numericalValue = 0;
+    std::string textValue;
+    double valueMin = 0;
+    double valueMax = 0;
+    std::string devLevel;
+
+    slint::XMLtools::getDouble(node, "standardRuleNumericalValue", numericalValue);
+    slint::XMLtools::getString(node, "standardRuleTextValue", textValue);
+    slint::XMLtools::getDouble(node, "standardRuleValueMin", valueMin);
+    slint::XMLtools::getDouble(node, "standardRuleValueMax", valueMax);
+    slint::XMLtools::getString(node, "standardRuleDevLevel", devLevel);
+
+    return StandardRuleParameterValueType(numericalValue, textValue, valueMin, valueMax, devLevel);
+}
+
+} // namespace CNES
+
+} // namespace slint
+
diff --git a/scilab/modules/slint/src/cpp/StandardRuleType.cpp b/scilab/modules/slint/src/cpp/StandardRuleType.cpp
new file mode 100644 (file)
index 0000000..fcf10a6
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ *  Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ *  This file must be used under the terms of the CeCILL.
+ *  This source file is licensed as described in the file COPYING, which
+ *  you should have received as part of this distribution.  The terms
+ *  are also available at
+ *  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#include "config/cnes/StandardRuleType.hxx"
+#include "config/cnes/StandardRuleParameterType.hxx"
+#include "XMLtools.hxx"
+
+namespace slint
+{
+
+namespace CNES
+{
+
+StandardRuleType StandardRuleType::createFromXmlNode(xmlNode * node)
+{
+    std::string standardRuleId;
+    std::string category;
+    std::string entitled;
+    std::string desc;
+    std::string classification;
+    int maintainability = 0;
+    int reliability = 0;
+    int portability = 0;
+    std::string justification;
+    std::string example;
+    std::string counterExample;
+
+    slint::XMLtools::getString(node, "standardRuleId", standardRuleId);
+    slint::XMLtools::getString(node, "category", category);
+    slint::XMLtools::getString(node, "entitled", entitled);
+    slint::XMLtools::getString(node, "desc", desc);
+    slint::XMLtools::getString(node, "classification", classification);
+    slint::XMLtools::getInt(node, "maintainability", maintainability);
+    slint::XMLtools::getInt(node, "reliability", reliability);
+    slint::XMLtools::getInt(node, "portability", portability);
+    slint::XMLtools::getString(node, "justification", justification);
+    slint::XMLtools::getString(node, "example", example);
+    slint::XMLtools::getString(node, "counterExample", counterExample);
+
+    StandardRuleType srt(standardRuleId, category, entitled, desc, classification, maintainability, reliability, portability, justification, example, counterExample);
+    for (xmlNode * child = node->children; child; child = child->next)
+    {
+        srt.add(StandardRuleParameterType::createFromXmlNode(child));
+    }
+
+    return srt;
+}
+
+} // namespace CNES
+
+} // namespace slint
diff --git a/scilab/modules/slint/src/cpp/StandardType.cpp b/scilab/modules/slint/src/cpp/StandardType.cpp
new file mode 100644 (file)
index 0000000..fea34e3
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ *  Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ *  This file must be used under the terms of the CeCILL.
+ *  This source file is licensed as described in the file COPYING, which
+ *  you should have received as part of this distribution.  The terms
+ *  are also available at
+ *  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#include "config/cnes/StandardType.hxx"
+#include "config/cnes/StandardRuleType.hxx"
+#include "XMLtools.hxx"
+
+namespace slint
+{
+
+namespace CNES
+{
+
+StandardType StandardType::createFromXmlNode(xmlNode * node)
+{
+    std::string reference;
+    std::string type;
+    std::string version;
+    std::string date;
+
+    slint::XMLtools::getString(node, "standardReference", reference);
+    slint::XMLtools::getString(node, "standardType", type);
+    slint::XMLtools::getString(node, "standardVersion", version);
+    slint::XMLtools::getString(node, "standardDate", date);
+
+    StandardType st(reference, type, version, date);
+    for (xmlNode * child = node->children; child; child = child->next)
+    {
+        st.add(StandardRuleType::createFromXmlNode(child));
+    }
+
+    return st;
+}
+
+} // namespace CNES
+
+} // namespace slint
diff --git a/scilab/modules/slint/src/cpp/ToolConfiguration.cpp b/scilab/modules/slint/src/cpp/ToolConfiguration.cpp
new file mode 100644 (file)
index 0000000..687c964
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ *  Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ *  This file must be used under the terms of the CeCILL.
+ *  This source file is licensed as described in the file COPYING, which
+ *  you should have received as part of this distribution.  The terms
+ *  are also available at
+ *  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#include <string>
+
+#include "config/cnes/CNESException.hxx"
+#include "config/cnes/ToolConfiguration.hxx"
+#include "XMLtools.hxx"
+
+namespace slint
+{
+
+namespace CNES
+{
+
+ToolConfiguration ToolConfiguration::createFromXml(const std::wstring & path)
+{
+    xmlDoc * doc = slint::XMLtools::readXML(path);
+    xmlNode * root = xmlDocGetRootElement(doc);
+
+    std::string name((const char *)root->name);
+    if (name == "toolConfiguration")
+    {
+        ToolConfiguration toolConfiguration(ToolConfigurationType::createFromXmlNode(root));
+        xmlFreeDoc(doc);
+
+        return toolConfiguration;
+    }
+    else
+    {
+        xmlFreeDoc(doc);
+        throw CNESException(L"Invalid tool configuration file");
+    }
+}
+
+} // namespace CNES
+
+} // namespace slint
diff --git a/scilab/modules/slint/src/cpp/ToolConfigurationType.cpp b/scilab/modules/slint/src/cpp/ToolConfigurationType.cpp
new file mode 100644 (file)
index 0000000..3a44ce6
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+ *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ *  Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ *  This file must be used under the terms of the CeCILL.
+ *  This source file is licensed as described in the file COPYING, which
+ *  you should have received as part of this distribution.  The terms
+ *  are also available at
+ *  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#include "config/cnes/ToolConfigurationType.hxx"
+#include "XMLtools.hxx"
+
+namespace slint
+{
+
+namespace CNES
+{
+
+ToolConfigurationType ToolConfigurationType::createFromXmlNode(xmlNode * node)
+{
+    std::string id;
+    std::string name;
+    std::string version;
+
+    slint::XMLtools::getString(node, "toolConfigurationId", id);
+    slint::XMLtools::getString(node, "toolName", name);
+    slint::XMLtools::getString(node, "toolVersion", version);
+
+    ToolConfigurationType tct(id, name, version);
+    for (xmlNode * child = node->children; child; child = child->next)
+    {
+        tct.add(RuleLinkType::createFromXmlNode(child));
+    }
+
+    return tct;
+}
+
+} // namespace CNES
+
+} // namespace slint
index d4a7dc9..9912e50 100644 (file)
@@ -25,16 +25,14 @@ void VariablesChecker::preCheckNode(const ast::Exp & e, SLintContext & context,
         if (!assigned.empty())
         {
             // we declare the function in the current scope
-            std::pair<Location, ast::AssignListExp *> p = { e.getLocation(), nullptr };
-            assigned.top().emplace(fd.getSymbol().getName(), p);
+            assigned.top().emplace(fd.getSymbol().getName(), std::make_tuple(e.getLocation(), false, nullptr));
         }
 
-        assigned.emplace(std::unordered_map<std::wstring, std::pair<Location, ast::AssignListExp *>>());
+        assigned.emplace(std::unordered_map<std::wstring, std::tuple<Location, bool, ast::AssignListExp *>>());
         used.emplace(std::unordered_map<std::wstring, const ast::Exp *>());
 
         // a function cans refer to itself
-        std::pair<Location, ast::AssignListExp *> p = { e.getLocation(), nullptr };
-        assigned.top().emplace(fd.getSymbol().getName(), p);
+        assigned.top().emplace(fd.getSymbol().getName(), std::make_tuple(e.getLocation(), false, nullptr));
     }
     else
     {
@@ -43,6 +41,8 @@ void VariablesChecker::preCheckNode(const ast::Exp & e, SLintContext & context,
             if (e.isSimpleVar())
             {
                 const ast::SimpleVar & var = static_cast<const ast::SimpleVar &>(e);
+
+                const std::wstring & Name = var.getSymbol().getName();
                 if (context.isAssignedVar(var))
                 {
                     // if we are not in the context on a nested assignment in a function call (foo(a,b=2))
@@ -63,13 +63,11 @@ void VariablesChecker::preCheckNode(const ast::Exp & e, SLintContext & context,
                                 // if rhs is used and lhs is not used then this not an "error":
                                 // we are obliged to define lhs just to get rhs.
                                 // So when rhs is used lhs is "used" too.
-                                std::pair<Location, ast::AssignListExp *> p = { var.getLocation(), static_cast<ast::AssignListExp *>(var.getParent()) };
-                                assigned.top().emplace(name, p);
+                                assigned.top().emplace(name, std::make_tuple(var.getLocation(), false, static_cast<ast::AssignListExp *>(var.getParent())));
                             }
                             else
                             {
-                                std::pair<Location, ast::AssignListExp *> p = { var.getLocation(), nullptr };
-                                assigned.top().emplace(name, p);
+                                assigned.top().emplace(name, std::make_tuple(var.getLocation(), false, nullptr));
                             }
                         }
                         else /*if (context.topLoop() && i != used.top.end() && isParentOf(context.topLoop(), i->second))*/
@@ -104,7 +102,7 @@ void VariablesChecker::preCheckNode(const ast::Exp & e, SLintContext & context,
                                 {
                                     if (!pIT->isFunction() && !pIT->isMacroFile() && !pIT->isMacro())
                                     {
-                                        result.report(context, e.getLocation(), *this, _("Use of non-initialized variable \'%s\' may have any side-effects."), name);
+                                        result.report(context, e.getLocation(), *this, 1, _("Use of non-initialized variable \'%s\' may have any side-effects."), name);
                                     }
                                 }
                                 else if (!context.isPrivateFunction(sym))
@@ -123,19 +121,19 @@ void VariablesChecker::preCheckNode(const ast::Exp & e, SLintContext & context,
                                     std::wstring fname;
                                     if (context.isExternPrivateFunction(sym, fname))
                                     {
-                                        result.report(context, e.getLocation(), *this, _("Use of a private macro \'%s\' defined in an other file %s."), name, fname);
+                                        result.report(context, e.getLocation(), *this, 3, _("Use of a private macro \'%s\' defined in an other file %s."), name, fname);
                                     }
-                                    else if (!context.getPublicFunction(fname))
+                                    else if (!context.getPublicFunction(sym.getName()))
                                     {
                                         // The macro has not been declared somewhere in the project
-                                        result.report(context, e.getLocation(), *this, _("Use of non-initialized variable \'%s\' may have any side-effects."), name);
+                                        result.report(context, e.getLocation(), *this, 1, _("Use of non-initialized variable \'%s\' may have side effects."), name);
                                     }
                                 }
                             }
                         }
                         else
                         {
-                            if (ast::AssignListExp * ale = i->second.second)
+                            if (ast::AssignListExp * ale = std::get<2>(i->second))
                             {
                                 // the variable is in an AssignListExp
                                 // so we must "use" the variables which preceed it too
@@ -165,14 +163,13 @@ void VariablesChecker::preCheckNode(const ast::Exp & e, SLintContext & context,
                 }
             }
             // for i=1:10... end even if i is not used, i is useful to make the loop
-            /*else if (e.isVarDec())
+            else if (e.isVarDec())
             {
                 const ast::VarDec & vd = static_cast<const ast::VarDec &>(e);
                 const std::wstring & name = vd.getSymbol().getName();
-                std::pair<Location, ast::AssignListExp *> p = { vd.getLocation(), nullptr };
-                assigned.top().emplace(name, p);
+                assigned.top().emplace(name, std::make_tuple(vd.getLocation(), true, nullptr));
                 used.top().erase(name);
-            }*/
+            }
         }
     }
 }
@@ -191,7 +188,10 @@ void VariablesChecker::postCheckNode(const ast::Exp & e, SLintContext & context,
         map.erase(fd.getSymbol().getName());
         for (const auto & p : map)
         {
-            result.report(context, p.second.first, *this, _("Declared variable and might be unused: %s."), p.first);
+            if (!std::get<1>(p.second)) // the variable has an explicit assignment, i.e. we are not in the case for i=1:10...
+            {
+                result.report(context, std::get<0>(p.second), *this, 2, _("Declared variable and might be unused: %s."), p.first);
+            }
         }
         assigned.pop();
         used.pop();
@@ -213,4 +213,21 @@ const std::string VariablesChecker::getName() const
 {
     return "VariablesChecker";
 }
+
+const std::wstring VariablesChecker::getId(const unsigned sub) const
+{
+    switch (sub)
+    {
+    case 0:
+       return SLintChecker::getId();
+    case 1:
+       return SLintChecker::getId() + L".Uninitialized";
+    case 2:
+       return SLintChecker::getId() + L".Unused";
+    case 3:
+       return SLintChecker::getId() + L".PrivateMacro";
+    default:
+       return L"";
+    }
+}
 }
index ac13126..08b915b 100644 (file)
@@ -18,6 +18,9 @@
 #include "string.hxx"
 #include "config/XMLConfig.hxx"
 #include "SLintOptions.hxx"
+#include "config/cnes/ToolConfiguration.hxx"
+#include "config/cnes/AnalysisConfiguration.hxx"
+#include "config/cnes/CNESConfig.hxx"
 
 #define SLINT_INSERT_IN_MAP(name) callbacks.emplace(#name, &createFromXmlNode<name##Checker>)
 
@@ -26,6 +29,23 @@ namespace slint
 
 std::unordered_map<std::string, XMLConfig::CBType> XMLConfig::callbacks = initCallbacks();
 
+void XMLConfig::getOptions(types::String & str, SLintOptions & options)
+{
+    const std::wstring customer(str.get(0));
+    if (customer == L"cnes")
+    {
+        const CNES::ToolConfiguration tc = CNES::ToolConfiguration::createFromXml(str.get(1));
+        const CNES::AnalysisConfiguration ac = CNES::AnalysisConfiguration::createFromXml(str.get(2));
+        const CNES::AnalysisConfigurationType & act = ac.getAnalysisConfiguration();
+        CNES::CNESConfig::getOptions(tc.getToolConfiguration(), act, options);
+        for (const CNES::ExcludedProjectFileType & epft : act.getExcludedProjectFile())
+        {
+            options.addExcludedFile(epft.getFilename());
+        }
+        options.setId(act.getId());
+    }
+}
+
 void XMLConfig::getOptions(const std::wstring & path, SLintOptions & options)
 {
     xmlDoc * doc = slint::XMLtools::readXML(path);
@@ -125,9 +145,8 @@ SLintChecker * XMLConfig::createFromXmlNode<DecimalChecker>(xmlNode * node)
         XMLtools::getWString(node, "id", id);
         XMLtools::getWString(node, "character", character);
         XMLtools::getBool(node, "checkDot", checkDot);
-        wchar_t c = character.empty() ? L'\0' : character.at(0);
 
-        return new DecimalChecker(id, c, checkDot);
+        return new DecimalChecker(id, character, checkDot);
     }
 
     return nullptr;
@@ -254,7 +273,7 @@ SLintChecker * XMLConfig::createFromXmlNode<ReturnsCountChecker>(xmlNode * node)
 }
 
 template<>
-SLintChecker * XMLConfig::createFromXmlNode<StatInCondChecker>(xmlNode * node)
+SLintChecker * XMLConfig::createFromXmlNode<ExpInCondChecker>(xmlNode * node)
 {
     bool enable = true;
     XMLtools::getBool(node, "enable", enable);
@@ -266,7 +285,7 @@ SLintChecker * XMLConfig::createFromXmlNode<StatInCondChecker>(xmlNode * node)
         XMLtools::getWString(node, "id", id);
         XMLtools::getInt(node, "max", max);
 
-        return new StatInCondChecker(id, max);
+        return new ExpInCondChecker(id, max);
     }
 
     return nullptr;
@@ -390,6 +409,27 @@ SLintChecker * XMLConfig::createFromXmlNode<CommentRatioChecker>(xmlNode * node)
     return nullptr;
 }
 
+template<>
+SLintChecker * XMLConfig::createFromXmlNode<NotEqualChecker>(xmlNode * node)
+{
+    bool enable = true;
+    XMLtools::getBool(node, "enable", enable);
+    if (enable)
+    {
+        std::wstring id;
+        std::wstring op;
+
+        XMLtools::getWString(node, "id", id);
+        XMLtools::getWString(node, "operator", op);
+        if (!op.empty() && (op == L"<>" || op == L"~=" || op == L"@="))
+        {
+            return new NotEqualChecker(id, op);
+        }
+    }
+
+    return nullptr;
+}
+
 std::unordered_map<std::string, XMLConfig::CBType> XMLConfig::initCallbacks()
 {
     std::unordered_map<std::string, CBType> callbacks;
@@ -429,11 +469,12 @@ std::unordered_map<std::string, XMLConfig::CBType> XMLConfig::initCallbacks()
     SLINT_INSERT_IN_MAP(BracketedExp);
     SLINT_INSERT_IN_MAP(NotNot);
     SLINT_INSERT_IN_MAP(IllegalCalls);
-    SLINT_INSERT_IN_MAP(StatInCond);
+    SLINT_INSERT_IN_MAP(ExpInCond);
     SLINT_INSERT_IN_MAP(CommentRatio);
     SLINT_INSERT_IN_MAP(FunctionArgsOrder);
     SLINT_INSERT_IN_MAP(FunctionTestReturn);
     SLINT_INSERT_IN_MAP(ReturnsCount);
+    SLINT_INSERT_IN_MAP(NotEqual);
 
     return callbacks;
 }