Quality Gate

Add-ons are subject to in-depth quality control by SloopTools.

The Quality Gate is a separate instance of servers, which use the add-ons and lead them through various checks and tests to calculate a Quality Score at the end. This score will become an important valuation base in the store.

Process of the Quality Gate

Currently, checks and tests of the SloopTools Standard Quality Gate are carried out for each add-on *. Later, the provider can premium checks such as. Activate unit tests or security tests. The following checks, tests and steps are included in the SloopTools Standard Quality Gate:

  1. Naming - Subproject Name in the uploaded ZIP must match the "Technical Name". See HowTo "Create add-on" for details.
  2. AddonInformation - For further processing in the SCADA software, a separate file AddonInformation.json with all relevant data is created.
  3. Pictures check
  4. Script Check
  5. Library Check
  6. Panels Check
  7. Overloaded Files Check
  8. SloopTools Internal Check
  9. License Activation
  10. Syntax Check
  11. Encryption
  12. Feedback to Store - Finished Package and Quality Score will be sent to the SloopTools Store

Each check can return a score between 0 and 100. The sum of all performed checks gives the quality score. If at least one exam reaches a score of 0, the add-on can not be published. In this case, the add-on has to be improved and uploaded again. For this, however, no new version must be created. It is possible, with the existing version, to delete the existing ZIP package and upload the improved version.

In the case that in an add-on e.g. If no panels are supplied, a score of 1 will be returned for each exam. This makes it possible to publish add-ons without scripts or panels.

*If the tests for this add-on are available. For example, the panel check is not performed on add-ons without panels and rated with score = 1.

Details on the Quality Gate Checks

Each of the decrypted checks creates an entry in the Quality Gate table below the progress table. Each test has special tests, these are explained in this chapter. In order to see the detailed analysis in order to derive improvements, the report / log window can be opened by double-clicking or the "Info" button of a check. The window is divided into two parts:

Detailed evaluation of the test

Here are all the details of the check shown. In addition to the results of the special exams, the score is also broken down. In order to be able to identify errors more quickly, they are unfolded in the tree. Here are the following columns:

  • Source Tree
    • Score
      • "Total points" - all points possible in this check
      • "Error points" - all errors and thus deducted points
      • "%" - The calculated percentage of this check
    • Verified files as they were given in the ZIP file
  • Value
    • The calculated value of the single check
  • Good range
    • The specified permitted range, given by SloopTools based on international guidelines
  • Error points
    • "1" - The value of the check is not within the limits and has therefore resulted in a deduction
    • "(SUM)" - The deductions of the individual files are aggregated via the hierarchy of the files to provide a better overview
  • Reason
    • The Quality Gate gives in the line of the check also a justification of the deduction in order to be able to derive improvements

Log Messages

This window is collapsed by default. Here you can view all log messages generated by the test. Debug information is not shown here.

General static check

These checks give an initial assessment of the entire folder and its files and are therefore carried out for all folder checks.

Check per folder Good range Reason
is Empty - without folders & files FALSE An empty folder makes the overview more difficult
Count of sub directories - Number of subfolders <= 5 More than 5 subfolders make finding it difficult
Count of files recursive - Number of files recursively over all subfolders > = 0 in empty folder structures make the clarity
Count of files - number of files in this folder <= 10 More than 10 files make finding it difficult

Additional Information
Average CCN (Cyclomatic Complexity No. McCabe-Metric) - Average complexity
Average NLOC (No. Lines Of Code) Average number of lines of code
CCN (Cyclomatic Complexity No. McCabe-Metric) - Sum of the complexity of all files in this folder
NLOC (No. Lines Of Code) - Sum of all lines of code

Images Check - static (QgStaticCheck_Pictures)

Check per file Good range
Size - File size 1 MB
Extention file type bmp, xpm, jpg, png, svg, jpeg, gif, mng, ico, wmf

Script Check - static (QgStaticCheck_Scripts)

Check pro script Good range Reason
Is an example file - Ex. File FALSE Ex. Scripts (under the folder Examples) are not included in the calculation
Is calculated - is calculated TRUE It can not be calculated because it eg. is encrypted.
NLOC code lines 4-600 The entire script is difficult to analyze over 600 lines

Check per function Good range Reason
NLOC (No. Lines Of Code) - Code Lines 4-80 More than 80 lines of code are difficult to understand in one function
Count of Parameter - Transfer parameter of function <= 10 More than 10 parameters make a function difficult to read
Count of lines - total lines NA This number compared to the lines of code suggests the comment style
CCN (Cyclomatic Complexity No. McCabe-Metric) <= 15 Complexity greater than 15 makes a function difficult to analyze later

Library check - static (QgStaticCheck_Libs)

This check is similar to the script check, but refers to the library folder.

Panels Check - static (QgStaticCheck_Panels)

Check per panel Good range Reason
Is an example file - Ex. File FALSE Ex. Panels (under the folder examples) are not included in the calculation
Is calculated - is calculated TRUE It can not be calculated because it eg. is encrypted.
Is encrypted - encrypted FALSE Encrypted panels can not be calculated and therefore no quality statement can be made
Backup panel (.bak) - Backup panel available FALSE Backup Panel should be deleted before delivery
Properties NA Important properties of a panel are stored in order to provide a later function (comparison with old version)
Count of Shapes - Number of Graphic Elements <= 100 More than 100 elements complicate an analysis of the panel
Count of Properties - Number of Properties NA
Count of Events - Number of Events <= 100 More than 100 events complicate an analysis of the panel

Check per event Good range Reason
Count of functions - Number of functions 1-5 More than 5 functions in one event are difficult to analyze
NLOC (No. Lines Of Code) - Code Lines 4-600 More than 600 lines of code are difficult to survey in an event

Check per function Good range Reason
NLOC (No. Lines Of Code) - Code Lines 4-80 More than 80 lines of code are difficult to understand in one function
Count of Parameter - Transfer parameter of function <= 10 More than 10 parameters make a function difficult to read
Count of lines - total lines NA This number compared to the lines of code suggests the comment style
CCN (Cyclomatic Complexity No. McCabe-Metric) <= 15 Complexity greater than 15 makes a function difficult to analyze later

Overloaded Files Check - static (QgStaticCheck_OverloadedFiles)

The Check Overloaded Files checks if files from the product have been used in the add-on. This overloading of files is generally possible, but carries risks when upgrading the product and should therefore be carefully considered. However, there are some files that may or may be overloaded in certain cases. These exceptions were provided in the check and are therefore allowed. Allowed files are:

  • CONFIG_REL_PATH + "powerconfig"
  • DATA_REL_PATH + "RDBSetup / ora / RDB_config_template.sql"
  • SCRIPTS_REL_PATH + "userDrivers.ctl"
  • SCRIPTS_REL_PATH + "userPara.ctl"
  • LIBS_REL_PATH + "aesuser.ctl"
  • LIBS_REL_PATH + "asModifyDisplay.ctl"
  • LIBS_REL_PATH + "driverSettings_HOOK.ctl"
  • PANELS_REL_PATH + "vision / aes / _AS_propFilterExtended.pnl"
  • PANELS_REL_PATH + "vision / aes / _ES_propFilterExtended.pnl"
Check Good range
Is file overloaded - Overloaded File FALSE

SloopTools Internal Check - statisch (QgStaticCheck_Internal)

This check checks whether certain files, for SloopTools internal functions, eg. the installation completion of the add-on, are present.

Check Good range
File exists - File exists TRUE

License Activation (QgApplyLicense)

This check verifies that the license check has been included in the code. The provider must use the functions from the SLTLicenseCtrlExt independently and sensibly in his code. For licensing details for the add-on, please refer to License Information for Providers. Gladly we take the time to think together in which places which license function should be used.

If no license check has been installed in an add-on, this check is set to 0 and the add-on is locked before release. This is to prevent that by a mistake of the provider his add-ons without license check in the store is available. Exceptions are the following:

  • Add-ons without panels, scripts and libraries (eg .: EWOs, API Manager, Picture / Graphic libraries)
  • Add-ons of the category "Demo"
Check per file Good range
Count of implemented license check - number of license checks > = 1

Syntax Check (QgSyntaxCheck)

In the check syntax, all syntax errors of the files are listed in the add-on. Only the files with syntax errors are listed.

Check per file Good range
Syntax is valid - without syntax error TRUE

Encryption (QgEncryptSource)

This check verifies that all supplied panels, scripts and libraries can be encrypted. All files are automatically encrypted for reasons of know-how protection. Automatic encryption can be prevented by details on Prevent Encryption. However, if a file is not encrypted, but this contains a license check, this creates an entry in this check. The file is still encrypted to prevent misuse.

Prevent encryption

  • All panels and scripts stored under the folder /examples are not automatically encrypted.
  • With the help of the commentary
// SLT: NO_ENCRYPT

a panel or a script can be excluded from the automatic encryption of the Quality Gate.

  • The prevention mechanisms are ineffective as soon as one of the license check functions of SLTLicenseCtrlExt is used in this file.

results matching ""

    No results matching ""