Skip to content

Commit

Permalink
ink! analyzer (phase 2) - milestone 1
Browse files Browse the repository at this point in the history
  • Loading branch information
davidsemakula committed Sep 19, 2023
1 parent 08f142c commit 55f80a9
Showing 1 changed file with 27 additions and 0 deletions.
27 changes: 27 additions & 0 deletions deliveries/ink-analyzer-phase-2-milestone-1.md
Original file line number Diff line number Diff line change
@@ -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, 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) while unit tests are defined in related modules/submodules. 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 adding quickfixes to all diagnostics and related tests](https://github.com/search?q=repo%3Aink-analyzer%2Fink-analyzer+quickfixes&type=code) span the entire [diagnostics module](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/analyzer/src/analysis/diagnostics.rs) and [entity-specific and generic submodules](https://github.com/ink-analyzer/ink-analyzer/tree/master/crates/analyzer/src/analysis/diagnostics). 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 function](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.

0 comments on commit 55f80a9

Please sign in to comment.