From 7f927888780e293de0c70f417dc9ef416bf58fa0 Mon Sep 17 00:00:00 2001 From: davidsemakula Date: Mon, 18 Sep 2023 18:06:00 +0300 Subject: [PATCH] ink! analyzer (phase 2) - milestone 1 --- .../ink-analyzer-phase-2-milestone-1.md | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 deliveries/ink-analyzer-phase-2-milestone-1.md diff --git a/deliveries/ink-analyzer-phase-2-milestone-1.md b/deliveries/ink-analyzer-phase-2-milestone-1.md new file mode 100644 index 000000000..29c93365a --- /dev/null +++ b/deliveries/ink-analyzer-phase-2-milestone-1.md @@ -0,0 +1,27 @@ +# Milestone Delivery :mailbox: + +**The [invoice form :pencil:](https://docs.google.com/forms/d/e/1FAIpQLSfmNYaoCgrxyhzgoKQ0ynQvnNRoTmgApz9NrMp-hd8mhIiO0A/viewform) has been filled out correctly for this milestone and the delivery is according to the official [milestone delivery guidelines](https://github.com/w3f/Grants-Program/blob/master/docs/Support%20Docs/milestone-deliverables-guidelines.md).** + +* **Application Document:** [ink! Analyzer (Phase 2)](https://github.com/w3f/Grants-Program/blob/master/applications/ink-analyzer-phase-2.md) +* **Milestone Number:** 1 + +**Context** (optional) + +Please see the [README](https://github.com/ink-analyzer/ink-analyzer#readme) for additional architectural details. + +**Deliverables** + +| Number | Deliverable | Link | Notes | +|---------|------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| **0a.** | License | [MIT](https://github.com/ink-analyzer/ink-analyzer/blob/master/LICENSE-MIT) or [Apache 2.0](https://github.com/ink-analyzer/ink-analyzer/blob/master/LICENSE-APACHE). | Dual-licensed under either of MIT or Apache 2.0 licenses at the downstream user's option. | +| **0b.** | Documentation | [Project README](https://github.com/ink-analyzer/ink-analyzer#readme) and [semantic analyzer (ink-analyzer) crate README](https://github.com/ink-analyzer/ink-analyzer/tree/master/crates/analyzer#readme) on GitHub, [semantic analyzer crate (ink-analyzer) rustdoc](https://docs.rs/ink-analyzer/latest/ink_analyzer/) documentation on docs.rs and extensive inline source documentation. | The semantic analyzer crate's README is published on both [GitHub](https://github.com/ink-analyzer/ink-analyzer/tree/master/crates/analyzer#readme) and [crates.io](https://crates.io/crates/ink-analyzer). It contains instructions for installation and usage, and links to crate specific documentation on docs.rs. | +| **0c.** | Testing and Testing Guide | [Testing guide](https://github.com/ink-analyzer/ink-analyzer#testing). | See notes for each deliverable below for details about unit and integration tests. In general, unit tests are defined in related modules/submodules, while integration tests are found in the [tests directory of the semantic analyzer (ink-analyzer) crate](https://github.com/ink-analyzer/ink-analyzer/tree/master/crates/analyzer/tests) (e.g. [tests/diagnostics](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/analyzer/tests/diagnostics.rs)) with related fixtures found in [test-utils/fixtures](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/test-utils/src/fixtures.rs). Checking out the [parse_offset_at](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/test-utils/src/lib.rs#L55-L86) utility may be useful as it is extensively used in both the unit and integration tests. | +| **0d.** | Docker | [Dockerfile](https://github.com/ink-analyzer/ink-analyzer/blob/master/Dockerfile). | | +| 1. | Semantic Analyzer: Rust crate update: Quick fixes for all existing diagnostic errors and warnings | [GitHub repository](https://github.com/ink-analyzer/ink-analyzer), [diagnostics module](https://github.com/ink-analyzer/ink-analyzer/tree/master/crates/analyzer/src/analysis/diagnostics.rs), [diagnostics type with quickfixes field](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/analyzer/src/analysis/diagnostics.rs#L44-L55) and [extensive updates adding quickfixes to all diagnostics and related tests](https://github.com/search?q=repo%3Aink-analyzer%2Fink-analyzer+quickfixes&type=code). | [Extensive updates](https://github.com/search?q=repo%3Aink-analyzer%2Fink-analyzer+quickfixes&type=code) throughout the [diagnostics module](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/analyzer/src/analysis/diagnostics.rs) and its [entity-specific and generic submodules](https://github.com/ink-analyzer/ink-analyzer/tree/master/crates/analyzer/src/analysis/diagnostics) add quickfixes to all diagnostics and related tests. Unit tests are found throughout the [entity-specific and generic submodules](https://github.com/ink-analyzer/ink-analyzer/tree/master/crates/analyzer/src/analysis/diagnostics) of the [diagnostics module](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/analyzer/src/analysis/diagnostics.rs). [Integration tests](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/analyzer/tests/diagnostics.rs) are found in the `tests/diagnostics` module with related fixtures in [test-utils/fixtures](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/test-utils/src/fixtures.rs). Quick fixes for diagnostics can also be manually tested using the latest version of the [VS Code Extension](https://marketplace.visualstudio.com/items?itemName=ink-analyzer.ink-analyzer). | +| 2. | Semantic Analyzer: Rust crate update: ink_e2e macro support | [GitHub repository](https://github.com/ink-analyzer/ink-analyzer) and [updates across the semantic analyzer (ink-analyzer) and intermediate representation (ink-analyzer-ir) crates to support ink_e2e macro analysis](https://github.com/search?q=repo%3Aink-analyzer%2Fink-analyzer%20ink_e2e&type=code). | [Updates span the semantic analyzer (ink-analyzer) and intermediate representation (ink-analyzer-ir) crates](https://github.com/search?q=repo%3Aink-analyzer%2Fink-analyzer%20ink_e2e&type=code) and also include updates to related unit tests (found in each relevant module e.g. [completions](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/analyzer/src/analysis/completions.rs)) and integration tests (found in the relevant module in the [tests](https://github.com/ink-analyzer/ink-analyzer/tree/master/crates/analyzer/tests) directory e.g [completions](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/analyzer/tests/completions.rs) and related [fixtures](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/test-utils/src/fixtures.rs)). Support for the ink_e2e macro can also be manually tested using the latest version of the [VS Code Extension](https://marketplace.visualstudio.com/items?itemName=ink-analyzer.ink-analyzer). | +| 3. | Semantic Analyzer: Rust crate update: Command for creating a new ink! project with a contract stub | [GitHub repository](https://github.com/ink-analyzer/ink-analyzer), [new_project function](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/analyzer/src/codegen.rs#L42-L88) and [codegen module](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/analyzer/src/codegen.rs). | The [new_project](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/analyzer/src/codegen.rs#L42-L88) function is part of the [public interface](https://docs.rs/ink-analyzer/latest/ink_analyzer/#functions) for the semantic analyzer (ink-analyzer) crate via a [re-export](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/analyzer/src/lib.rs#L60). [Unit tests](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/analyzer/src/codegen.rs#L95-L127) can be found in the [codegen module](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/analyzer/src/codegen.rs). | +| 4. | Semantic Analyzer: Rust crate update: Code/intent actions for inserting code stubs/snippets for relevant ink! entities | [GitHub repository](https://github.com/ink-analyzer/ink-analyzer), [codegen/snippets submodule](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/analyzer/src/codegen/snippets.rs), and [actions/item](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/analyzer/src/analysis/actions/item.rs) and [actions/entity](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/analyzer/src/analysis/actions/entity.rs) actions submodules. | The highest level utilities are the [item::actions](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/analyzer/src/analysis/actions/item.rs#L71-L105), [item::item_ink_entity_actions](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/analyzer/src/analysis/actions/item.rs#L257-L425), [item::root_ink_entity_actions](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/analyzer/src/analysis/actions/item.rs#L427-L450) functions in the [actions/item submodule](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/analyzer/src/analysis/actions/item.rs). [Unit tests](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/analyzer/src/analysis/actions/item.rs#L488-L968) can be found in the `actions/item` submodule and [integration tests](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/analyzer/tests/actions.rs) are found in the `tests/actions` module with related fixtures in [test-utils/fixtures](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/test-utils/src/fixtures.rs). | + +**Additional Information** + +Please use the [master branch](https://github.com/ink-analyzer/ink-analyzer/tree/master) for testing, another branch will be used for continued work until the completion of the review.