Crates.io | ink-analyzer |
lib.rs | ink-analyzer |
version | 0.9.4 |
source | src |
created_at | 2023-03-16 08:16:16.018748 |
updated_at | 2024-05-03 15:58:03.766098 |
description | A library for semantic analysis of ink! smart contracts. |
homepage | https://github.com/ink-analyzer/ink-analyzer |
repository | https://github.com/ink-analyzer/ink-analyzer |
max_upload_size | |
id | 811313 |
size | 1,514,486 |
A library for semantic analysis of ink! smart contracts.
It implements utilities for performing semantic analysis of ink! smart contract code. It therefore implements the core functionality of ink! analyzer at a high level.
It currently implements an Analysis entry point that accepts a string representation (&str
) of ink! smart contract code as input and defines associated methods that compute:
u32 | _ | @
for ink! message selectors).Run the following Cargo command in your project directory
cargo add ink-analyzer
Analyzing ink! smart contract code.
use ink_analyzer::{Analysis, TextSize, TextRange, Version};
fn do_analysis() {
// Smart contract code.
let code = r#"
#[ink::contract]
mod my_contract {
#[ink(storage)]
pub struct MyContract {
value: bool,
}
// --snip--
}
"#;
// Creates analysis snapshot.
let analysis = Analysis::new(code, Version::V4);
// Computes diagnostics.
let diagnostics = analysis.diagnostics();
dbg!(&diagnostics);
// Sets the cursor position.
let position = TextSize::from(9);
// Computes completions.
let completions = analysis.completions(position);
dbg!(&completions);
// Sets the focus range.
let range = TextRange::new(position, TextSize::from(25));
// Computes code/intent actions.
let actions = analysis.actions(range);
dbg!(&actions);
// Gets hover content.
let hover = analysis.hover(range);
dbg!(&hover);
// Computes inlay hints.
let inlay_hints = analysis.inlay_hints(None);
dbg!(&inlay_hints);
// Computes signature help.
let signature_help = analysis.signature_help(TextSize::from(71));
dbg!(&signature_help);
}
fn project_code_stubs() {
// Generates ink! project code stubs/snippets.
let project = ink_analyzer::new_project(String::from("hello_world"), Version::V5);
dbg!(&project);
}
https://docs.rs/ink-analyzer/latest/ink_analyzer/
Or you can access documentation locally by running the following command from the project root
cargo doc -p ink-analyzer --open
You can run unit and integration tests for all the core functionality by running the following command from the project root
cargo test -p ink-analyzer
Licensed under either MIT or Apache-2.0 license at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.