---
# System prepended metadata

title: Solidity Metrics for 'CLI'

---


[<img width="200" alt="get in touch with Consensys Diligence" src="https://user-images.githubusercontent.com/2865694/56826101-91dcf380-685b-11e9-937c-af49c2510aa0.png">](https://diligence.consensys.net)<br/>
<sup>
[[  🌐  ](https://diligence.consensys.net)  [  📩  ](mailto:diligence@consensys.net)  [  🔥  ](https://consensys.github.io/diligence/)]
</sup><br/><br/>



# Solidity Metrics for 'CLI'

## Table of contents

- [Scope](#t-scope)
    - [Source Units in Scope](#t-source-Units-in-Scope)
    - [Out of Scope](#t-out-of-scope)
        - [Excluded Source Units](#t-out-of-scope-excluded-source-units)
        - [Duplicate Source Units](#t-out-of-scope-duplicate-source-units)
        - [Doppelganger Contracts](#t-out-of-scope-doppelganger-contracts)
- [Report Overview](#t-report)
    - [Risk Summary](#t-risk)
    - [Source Lines](#t-source-lines)
    - [Inline Documentation](#t-inline-documentation)
    - [Components](#t-components)
    - [Exposed Functions](#t-exposed-functions)
    - [StateVariables](#t-statevariables)
    - [Capabilities](#t-capabilities)
    - [Dependencies](#t-package-imports)
    - [Totals](#t-totals)

## <span id=t-scope>Scope</span>

This section lists files that are in scope for the metrics report. 

- **Project:** `'CLI'`
- **Included Files:** 
    - ``
- **Excluded Paths:** 
    - ``
- **File Limit:** `undefined`
    - **Exclude File list Limit:** `undefined`

- **Workspace Repository:** `unknown` (`undefined`@`undefined`)

### <span id=t-source-Units-in-Scope>Source Units in Scope</span>

Source Units Analyzed: **`4`**<br>
Source Units in Scope: **`4`** (**100%**)

| Type | File   | Logic Contracts | Interfaces | Lines | nLines | nSLOC | Comment Lines | Complex. Score | Capabilities |
| ---- | ------ | --------------- | ---------- | ----- | ------ | ----- | ------------- | -------------- | ------------ | 
| 📝 | contracts/Chats.sol | 1 | **** | 187 | 160 | 104 | 33 | 112 | **** |
| 📝 | contracts/Operations.sol | 1 | **** | 312 | 235 | 160 | 23 | 149 | **** |
| 📝 | contracts/chats-nft-factory.sol | 1 | **** | 74 | 65 | 33 | 24 | 41 | **<abbr title='create/create2'>🌀</abbr>** |
| 📝 | contracts/nft-chats.sol | 1 | **** | 76 | 74 | 42 | 28 | 35 | **<abbr title='Payable Functions'>💰</abbr>** |
| 📝 | **Totals** | **4** | **** | **649**  | **534** | **339** | **108** | **337** | **<abbr title='Payable Functions'>💰</abbr><abbr title='create/create2'>🌀</abbr>** |

<sub>
Legend: <a onclick="toggleVisibility('table-legend', this)">[➕]</a>
<div id="table-legend" style="display:none">

<ul>
<li> <b>Lines</b>: total lines of the source unit </li>
<li> <b>nLines</b>: normalized lines of the source unit (e.g. normalizes functions spanning multiple lines) </li>
<li> <b>nSLOC</b>: normalized source lines of code (only source-code lines; no comments, no blank lines) </li>
<li> <b>Comment Lines</b>: lines containing single or block comments </li>
<li> <b>Complexity Score</b>: a custom complexity score derived from code statements that are known to introduce code complexity (branches, loops, calls, external interfaces, ...) </li>
</ul>

</div>
</sub>


#### <span id=t-out-of-scope>Out of Scope</span>

##### <span id=t-out-of-scope-excluded-source-units>Excluded Source Units</span>

Source Units Excluded: **`0`**

<a onclick="toggleVisibility('excluded-files', this)">[➕]</a>
<div id="excluded-files" style="display:none">
| File   |
| ------ |
| None |

</div>


##### <span id=t-out-of-scope-duplicate-source-units>Duplicate Source Units</span>

Duplicate Source Units Excluded: **`0`** 

<a onclick="toggleVisibility('duplicate-files', this)">[➕]</a>
<div id="duplicate-files" style="display:none">
| File   |
| ------ |
| None |

</div>

##### <span id=t-out-of-scope-doppelganger-contracts>Doppelganger Contracts</span>

Doppelganger Contracts: **`0`** 

<a onclick="toggleVisibility('doppelganger-contracts', this)">[➕]</a>
<div id="doppelganger-contracts" style="display:none">
| File   | Contract | Doppelganger | 
| ------ | -------- | ------------ |


</div>


## <span id=t-report>Report</span>

### Overview

The analysis finished with **`0`** errors and **`0`** duplicate files.





#### <span id=t-risk>Risk</span>

<div class="wrapper" style="max-width: 512px; margin: auto">
			<canvas id="chart-risk-summary"></canvas>
</div>

#### <span id=t-source-lines>Source Lines (sloc vs. nsloc)</span>

<div class="wrapper" style="max-width: 512px; margin: auto">
    <canvas id="chart-nsloc-total"></canvas>
</div>

#### <span id=t-inline-documentation>Inline Documentation</span>

- **Comment-to-Source Ratio:** On average there are`4.2` code lines per comment (lower=better).
- **ToDo's:** `0` 

#### <span id=t-components>Components</span>

| 📝Contracts   | 📚Libraries | 🔍Interfaces | 🎨Abstract |
| ------------- | ----------- | ------------ | ---------- |
| 4 | 0  | 0  | 0 |

#### <span id=t-exposed-functions>Exposed Functions</span>

This section lists functions that are explicitly declared public or payable. Please note that getter methods for public stateVars are not included.  

| 🌐Public   | 💰Payable |
| ---------- | --------- |
| 33 | 1  | 

| External   | Internal | Private | Pure | View |
| ---------- | -------- | ------- | ---- | ---- |
| 0 | 31  | 1 | 1 | 10 |

#### <span id=t-statevariables>StateVariables</span>

| Total      | 🌐Public  |
| ---------- | --------- |
| 24  | 18 |

#### <span id=t-capabilities>Capabilities</span>

| Solidity Versions observed | 🧪 Experimental Features | 💰 Can Receive Funds | 🖥 Uses Assembly | 💣 Has Destroyable Contracts | 
| -------------------------- | ------------------------ | -------------------- | ---------------- | ---------------------------- |
| `^0.8.0`<br/>`^0.8.4` |  | `yes` | **** | **** | 

| 📤 Transfers ETH | ⚡ Low-Level Calls | 👥 DelegateCall | 🧮 Uses Hash Functions | 🔖 ECRecover | 🌀 New/Create/Create2 |
| ---------------- | ----------------- | --------------- | ---------------------- | ------------ | --------------------- |
| **** | **** | **** | **** | **** | `yes`<br>→ `NewContract:ERC1155Token` | 

| ♻️ TryCatch | Σ Unchecked |
| ---------- | ----------- |
| **** | **** |

#### <span id=t-package-imports>Dependencies / External Imports</span>

| Dependency / Import Path | Count  | 
| ------------------------ | ------ |
| @openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol | 2 |
| @openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol | 2 |
| @openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol | 2 |
| @openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol | 2 |
| @openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol | 1 |
| @openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol | 1 |
| @openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20BurnableUpgradeable.sol | 1 |
| @openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20SnapshotUpgradeable.sol | 1 |
| @openzeppelin/contracts/access/Ownable.sol | 1 |
| @openzeppelin/contracts/token/ERC1155/ERC1155.sol | 1 |
| @openzeppelin/contracts/utils/Strings.sol | 1 |
| @openzeppelin/contracts/utils/math/SafeMath.sol | 1 |

#### <span id=t-totals>Totals</span>

##### Summary

<div class="wrapper" style="max-width: 90%; margin: auto">
    <canvas id="chart-num-bar"></canvas>
</div>

##### AST Node Statistics

###### Function Calls

<div class="wrapper" style="max-width: 90%; margin: auto">
    <canvas id="chart-num-bar-ast-funccalls"></canvas>
</div>

###### Assembly Calls

<div class="wrapper" style="max-width: 90%; margin: auto">
    <canvas id="chart-num-bar-ast-asmcalls"></canvas>
</div>

###### AST Total

<div class="wrapper" style="max-width: 90%; margin: auto">
    <canvas id="chart-num-bar-ast"></canvas>
</div>

##### Inheritance Graph

<a onclick="toggleVisibility('surya-inherit', this)">[➕]</a>
<div id="surya-inherit" style="display:none">
<div class="wrapper" style="max-width: 512px; margin: auto">
    <div id="surya-inheritance" style="text-align: center;"></div> 
</div>
</div>

##### CallGraph

<a onclick="toggleVisibility('surya-call', this)">[➕]</a>
<div id="surya-call" style="display:none">
<div class="wrapper" style="max-width: 512px; margin: auto">
    <div id="surya-callgraph" style="text-align: center;"></div>
</div>
</div>

###### Contract Summary

<a onclick="toggleVisibility('surya-mdreport', this)">[➕]</a>
<div id="surya-mdreport" style="display:none">
 Sūrya's Description Report

 Files Description Table


|  File Name  |  SHA-1 Hash  |
|-------------|--------------|
| contracts/Chats.sol | 0020093b062efdc91bae649bd84618191545293c |
| contracts/Operations.sol | 912afe2e5425d52dd28fa9b3f309bbc3ad788359 |
| contracts/chats-nft-factory.sol | 6572cf5d56da12c7a97dbbdea21ecdafe0f2421c |
| contracts/nft-chats.sol | d2794a4b7f4ff92b4da6657e4082722c165f0795 |


 Contracts Description Table


|  Contract  |         Type        |       Bases      |                  |                 |
|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:|
|     └      |  **Function Name**  |  **Visibility**  |  **Mutability**  |  **Modifiers**  |
||||||
| **Chats** | Implementation | Initializable, ERC20Upgradeable, ERC20BurnableUpgradeable, ERC20SnapshotUpgradeable, OwnableUpgradeable, PausableUpgradeable, UUPSUpgradeable, ReentrancyGuardUpgradeable |||
| └ | <Constructor> | Public ❗️ | 🛑  |NO❗️ |
| └ | initialize | Public ❗️ | 🛑  | initializer |
| └ | snapshot | Public ❗️ | 🛑  | onlyOwner |
| └ | pause | Public ❗️ | 🛑  | onlyOwner |
| └ | unpause | Public ❗️ | 🛑  | onlyOwner |
| └ | decimals | Public ❗️ |   |NO❗️ |
| └ | mint | Public ❗️ | 🛑  | nonReentrant onlyOwner |
| └ | redeem | Public ❗️ | 🛑  |NO❗️ |
| └ | setParams | Public ❗️ | 🛑  | onlyOwner |
| └ | transfer | Public ❗️ | 🛑  |NO❗️ |
| └ | transferFrom | Public ❗️ | 🛑  |NO❗️ |
| └ | _beforeTokenTransfer | Internal 🔒 | 🛑  | whenNotPaused |
| └ | _authorizeUpgrade | Internal 🔒 | 🛑  | onlyOwner |
||||||
| **Operations** | Implementation | Initializable, OwnableUpgradeable, PausableUpgradeable, UUPSUpgradeable |||
| └ | <Constructor> | Public ❗️ | 🛑  |NO❗️ |
| └ | initialize | Public ❗️ | 🛑  | initializer |
| └ | AddAdmin | Public ❗️ | 🛑  | onlyOwner notAdmin checkUserList whenNotPaused |
| └ | RemoveAdmin | Public ❗️ | 🛑  | onlyOwner isAdminAddr |
| └ | GetAdminList | Public ❗️ |   | isAdminAddr |
| └ | AddAuthorizer | Public ❗️ | 🛑  | onlyOwner checkUserList notAuthorizer whenNotPaused |
| └ | RemoveAuthorizer | Public ❗️ | 🛑  | onlyOwner isAuthorizerAddr |
| └ | GetAuthorizerList | Public ❗️ |   | isAdminAddr |
| └ | SetUserList | Public ❗️ | 🛑  | isAdminAddr notNull whenNotPaused |
| └ | RemoveUserList | Public ❗️ | 🛑  | isAdminAddr notNull |
| └ | CheckUserList | Public ❗️ |   |NO❗️ |
| └ | GetUsersList | Public ❗️ |   | isAdminAddr |
| └ | AddBlackList | Public ❗️ | 🛑  | isAdminAddr checkUserList |
| └ | RemoveBlackList | Public ❗️ | 🛑  | isAdminAddr notNull |
| └ | isBlackListedAddress | Public ❗️ |   |NO❗️ |
| └ | GetBlackListed | Public ❗️ |   |NO❗️ |
| └ | _authorizeUpgrade | Internal 🔒 | 🛑  | onlyOwner |
||||||
| **FactoryERC1155** | Implementation |  |||
| └ | deployERC1155 | Public ❗️ | 🛑  |NO❗️ |
| └ | mintERC1155 | Public ❗️ | 🛑  |NO❗️ |
| └ | getCountERC1155byIndex | Public ❗️ |   |NO❗️ |
| └ | getIdByName | Public ❗️ |   |NO❗️ |
| └ | getERC1155byIndexAndId | Public ❗️ |   |NO❗️ |
||||||
| **ERC1155Token** | Implementation | ERC1155, Ownable |||
| └ | <Constructor> | Public ❗️ | 🛑  | ERC1155 |
| └ | createMapping | Private 🔐 | 🛑  | |
| └ | uri | Public ❗️ |   |NO❗️ |
| └ | setURI | Public ❗️ | 🛑  | onlyOwner |
| └ | mint | Public ❗️ |  💵 |NO❗️ |


 Legend

|  Symbol  |  Meaning  |
|:--------:|-----------|
|    🛑    | Function can modify state |
|    💵    | Function is payable |
 

</div>
____
<sub>
Thinking about smart contract security? We can provide training, ongoing advice, and smart contract auditing. [Contact us](https://diligence.consensys.net/contact/).
</sub>


