 This is Aniket from Remix Team and I'm going to talk about the Remix Analyzer. So I would like to share my screen. So basically just in the short introduction, Remix Analyzer is a tool which is used to perform code analysis on a Solidarity Smart Contract. So like usually code analysis tool, it also basically examines the Solidarity Smart Contract and tells about security vulnerabilities and bad development practices. So Remix Analyzer works underneath this Remix ID Solidarity Static Analysis plugin. So I'm going to elaborate the process using this plugin. So I'm sharing my screen here. So I think our Remix ID is visible now. Yes it is. Yeah, we can see it. So this is the Remix Browser when you load it very first time on your browser. So Solidarity Static Analysis plugin comes with the Solidarity Environment. So we have two environments here, Solidarity and Viper. So we can just select the Solidarity Environment and here on this analysis icon, you can see this is the Solidarity Static Analysis plugin. So we can just quickly move there and talk about its interface. So basically a Solidarity Static Analysis tool performs its analysis under some of the modules. Those modules are listed some category according to their uses and those categories are here. So you can see there are currently four categories. So one is the security. Another one is the gas and economy. Third one is the ERC and last one is some of the miscellaneous modules. So there are around 21 modules currently and using this we perform the analysis in this plugin. So I can quickly explain some of the plugins. So basically if you are using the tx.origin, we know that this is used to know the origin of the transaction. So basically originated address of a transaction. So this is basically should be used in the rare cases. So that is there is a module to track that in your code. So if there is something if you are using rth.origin in your code, so this analysis will throw a warning for that. And same for the check effects. So there is a check effects pattern in the Solidarity. So that suggests that before making internal function calls, we should make the state changes before of that. So it is about that then in the gas on economy, it is mostly concentrated on the modules which affects on your gas cost. So if there is a function for which our gas estimator is saying that there is infinite gas required. So it will throw warnings for that. And basically we should avoid using for loop on dynamic arrays and are transferring ethers in a loop. So basically you can get the complete information of each module on our documentation. So clicking this icon, you can just move the documentation and read about all the modules. So other quickly just go to the compiler contract. So this static analysis tool works with the Solidarity compiler plugin and whenever you compile a contract. So this analysis just run automatically and that is the courtesy of this auto run checkbox. So let's keep it checked for now and try to compile a contract. So these are the initial contracts that are provided by the remix itself. So let's select the first one and try to compile. This is very basic contract. And if we compile, so we get a green checkbox here. It means there are no warnings for this file. And yeah, so we don't have much to explain. So let's go to a second file. Let's compile this one and we see one warning here. So if we will go through the warning. So this warning basically explain the uses of assert and require. So this basically if you are using a require or assert in your code as we are using here in the line number 21. So this analysis suggests that you should be aware about the uses of assert and require and you should be using them accordingly. Okay, let's further go to our very familiar ballot contract. So let's compile this one. Okay, so we see nine warnings here. Let's discuss them. So basically this warning says that gas requirement of a function is infinite and there are almost four or five warning about that. So this is like our gas estimator sometimes so that infinite gas uses is required to execute the function that maybe right or maybe incorrect. So this is a good to know thing that if you are having this you should manually examine your your code and you should avoid the loops. So this is basically mentioned in the warning also that these avoid loops in your function or accents that modify that large areas of storage. So we know very well that gas estimates depends on the storage updates. So this warning basically tells about that. And if we scroll down so there is one warning, which is referring to us this line number 37, which is warning us using the loops. So it is saying loops that do not have a fixed number of iterations. For example, loops that depend on storage values has to be used carefully. So due to the block gas limit transactions can only consume a certain amount of gas. So because of some of our previous conversations, I think we are very, very well known about this block gas limit that we can spend a certain amount of gas in contract in a block. So this is warning about that. So if you will move to line number 37. So we see a fall loop here. And which is running on the dynamic area. So this basically suggest if you are using the if you are using a loop on an area, so you should ensure that the fixed number of iterations are getting done for that loop. So same warning is here for this line number 119. So if we will move there and we will see that there is again one loop here. And another warning we will go through about it. So this is saying that in this method give right to vote online number 52. So it is here. So there are a similar variable names, which are voter and voters. So this analysis basically suggest to avoid similar names, which can further be responsible for some of the typos and that can be a big blender in the deployment part. So that is the one suggestion and we will see the another warning there. So that warning is also about the similar variable names. So that is on the line number 98. So this is the method. So we show the method name here that vote and then the line number here so user can directly go to that code part and check if something needs to be updated. So in this method we are using a proposal and proposals both. So it is basically warning us about that. And then there is that same similar warning of assert and require. So this basically if you knew in your complete contract you are using require or assert. So this is a kind of a combined warning to ensure the users of a require and assert is getting done properly. So now if you if you are developing the contract and you see these infinite things and you are very experienced in the solidity development. So you can select the modules about which you want to see these warnings here. So if, for instance, we don't want to see this infinite gas users and we are sure that we can take care testing or in some other part. So we can go to this gas and economic category. And uncheck this gas cost section. So this basically throws the warning for that and we can just run the analysis directly from here for our last compilation result. So this analysis tool works on the last compilation result. So if you will run here this analysis so it will work for the last compilation of this contract. So I'm running it here and you will see that our warnings number are decreased to five and now those infinite gas users warnings are gone. Similarly, if you are thinking that you can take care about the loops you are using and you are very sure that they will be working fine. So you can basically uncheck this box for loop over dynamic array and then if we will run this so warnings will be decreased. So you can directly also select all the modules of all the categories directly from this box. You can select and deselect directly them from here. So you want to run the analysis again so you can run directly here. So as now all the modules are selected. So we are getting all those nine warnings again here. So this is the thing. So then if there are there may be chances that you are developing a contract using the ID and you are trying to compile it to check the compilation. You don't want to run the static analysis for that code. So you can just uncheck this auto run box and you will go to the contract and you can try to compile another contract event. So this contract is compiled but you will see that the result of last compilation is stored in this analysis. So this will basically keep showing you that a last result until you compile any another contract. And then if you are not compiling it, if you are not running the analysis along with the compilation. So you can just go when you are done with the development, you can go to this plugin and then run directly run the analysis from here. So this will be run for the last contract that we have compiled here. So this is the warning for our to underscore owner.sol here that is the same warning. And so this is the functionality of Solidity Static Analysis tool. And the remix analyzer tool is also an NDPM package. So you can just use that also. So the detail about that is there in our documentation. You can see it on your screens. So you will see in the bottom that there are some links referring to the uses of remix analyzer. You can use it as a library and can perform the analysis according to the currently available modules. So this is basically the explanation and uses of remix analyzer and for the future aspect of it. So we are in discussion to add more relevant modules for the users so that more security vulnerabilities can be cashed at the time of development itself.