@appland/appmap 3.146.0 → 3.147.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/built/docs/CLA Instructions.pdf +0 -0
  3. package/built/docs/Code of Conduct for Contributors.pdf +0 -0
  4. package/built/docs/analysis/rules-reference.html +27 -0
  5. package/built/docs/appmap-docs.md +27 -0
  6. package/built/docs/community.md +28 -0
  7. package/built/docs/guides/exporting-appmap-diagrams.md +50 -0
  8. package/built/docs/guides/handling-large-appmap-diagrams.md +138 -0
  9. package/built/docs/guides/index.md +21 -0
  10. package/built/docs/guides/navigating-code-objects.md +67 -0
  11. package/built/docs/guides/openapi.md +105 -0
  12. package/built/docs/guides/reading-sql-in-appmap-diagrams.md +69 -0
  13. package/built/docs/guides/refine-appmap-data.md +186 -0
  14. package/built/docs/guides/reverse-engineering.md +377 -0
  15. package/built/docs/guides/runtime-code-review.md +111 -0
  16. package/built/docs/guides/using-appmap-analysis.md +206 -0
  17. package/built/docs/guides/using-appmap-diagrams.md +331 -0
  18. package/built/docs/integrations/atlassian-compass.md +25 -0
  19. package/built/docs/integrations/atlassian-confluence.md +51 -0
  20. package/built/docs/integrations/circle-ci.md +424 -0
  21. package/built/docs/integrations/docker.md +109 -0
  22. package/built/docs/integrations/github-actions.md +524 -0
  23. package/built/docs/integrations/index.md +20 -0
  24. package/built/docs/integrations/plantuml.md +66 -0
  25. package/built/docs/integrations/postman.md +30 -0
  26. package/built/docs/integrations/readme.md +39 -0
  27. package/built/docs/integrations/smartbear-swaggerhub.md +119 -0
  28. package/built/docs/reference/analysis-labels.md +49 -0
  29. package/built/docs/reference/analysis-rules.md +61 -0
  30. package/built/docs/reference/appmap-client-cli.md +628 -0
  31. package/built/docs/reference/appmap-gradle-plugin.md +141 -0
  32. package/built/docs/reference/appmap-java.md +311 -0
  33. package/built/docs/reference/appmap-maven-plugin.md +164 -0
  34. package/built/docs/reference/appmap-node.md +185 -0
  35. package/built/docs/reference/appmap-python.md +520 -0
  36. package/built/docs/reference/appmap-ruby.md +514 -0
  37. package/built/docs/reference/github-action.md +171 -0
  38. package/built/docs/reference/index.md +25 -0
  39. package/built/docs/reference/jetbrains.md +136 -0
  40. package/built/docs/reference/license-key-install.md +74 -0
  41. package/built/docs/reference/navie.md +261 -0
  42. package/built/docs/reference/remote-recording-api.md +97 -0
  43. package/built/docs/reference/uninstalling-appmap.md +119 -0
  44. package/built/docs/reference/vscode.md +122 -0
  45. package/built/docs/setup-appmap-in-ci/example-projects.md +21 -0
  46. package/built/docs/setup-appmap-in-ci/how-it-works.md +43 -0
  47. package/built/docs/setup-appmap-in-ci/in-circleci.md +423 -0
  48. package/built/docs/setup-appmap-in-ci/in-github-actions.md +177 -0
  49. package/built/docs/setup-appmap-in-ci/index.md +22 -0
  50. package/built/docs/setup-appmap-in-ci/matrix-builds.md +225 -0
  51. package/built/docs/setup-appmap-in-ci/troubleshooting.md +71 -0
  52. package/built/docs/setup-appmap-in-your-code-editor/add-appmap-to-your-code-editor.md +93 -0
  53. package/built/docs/setup-appmap-in-your-code-editor/appmap-analysis.md +77 -0
  54. package/built/docs/setup-appmap-in-your-code-editor/generate-appmap-data-from-tests.md +93 -0
  55. package/built/docs/setup-appmap-in-your-code-editor/generate-appmap-data-with-remote-recording.md +112 -0
  56. package/built/docs/setup-appmap-in-your-code-editor/generate-appmap-data-with-request-recording.md +77 -0
  57. package/built/docs/setup-appmap-in-your-code-editor/how-appmap-works.md +166 -0
  58. package/built/docs/setup-appmap-in-your-code-editor/index.md +25 -0
  59. package/built/docs/setup-appmap-in-your-code-editor/navigating-appmap-diagrams.md +59 -0
  60. package/built/docs/setup-appmap-in-your-code-editor/navigating-code-objects.md +67 -0
  61. package/built/docs/unused_for_now_index.html +11 -0
  62. package/package.json +2 -2
@@ -0,0 +1,112 @@
1
+ ---
2
+ layout: docs
3
+ title: Docs - AppMap in your Code Editor
4
+ description: "Generate AppMap Data through remote recording for detailed HTTP request sequences. Install AppMap agent and follow steps for remote recording in various languages."
5
+ name: Generate AppMap Data with Remote Recording
6
+ step: 4
7
+ setup-appmap-ide: true
8
+ redirect_from: [/docs/your-first-15-minutes-with-appmap/generate-appmaps-with-remote-recording, /docs/setup-appmap-in-your-code-editor/generate-appmaps-with-remote-recording]
9
+ ---
10
+
11
+ # Generate AppMap Data with Remote Recording
12
+
13
+ Remote recording enables you to create an AppMap while interacting directly with your app through the UI or API.
14
+
15
+ Some benefits of remote recording include:
16
+
17
+ * **Named by you** When you finish creating a remote recording, you give it a name that makes sense to you. For example, you can name it for the user flow, or the ID number of the issue that you are trying to reproduce.
18
+ * **Contains a sequence of requests** A remote recording AppMap contains the entire sequence of HTTP server requests that occur as you use the application.
19
+ * **Contains both foreground and background work** A remote recording AppMap contains all threads of execution, not just the web server. So you can see background jobs, message queue activity, and other threads of activity along with the main HTTP server request.
20
+ * **Ideal for sharing** When you reproduce a bug, security vulnerability, or performance problem in a remote recording AppMap, you can share it with colleagues so they can see exactly what the problem is. An AppMap contains much more information than the source code itself.
21
+
22
+ The steps for creating a remote recording are:
23
+
24
+ 1. Start your application server with remote recording enabled:
25
+
26
+ * [Remote recording - Ruby](/docs/reference/appmap-ruby#remote-recording)
27
+ * [Remote recording - Python](/docs/reference/appmap-python#remote-recording)
28
+ * [Remote recording - Java (IntelliJ)](/docs/reference/jetbrains#running-a-java-application-with-appmap)
29
+ * [Remote recording - Java (VS Code)](/docs/reference/vscode#remote-recording)
30
+ * [Remote recording - Java (command line)](/docs/reference/appmap-java#remote-recording)
31
+ * [Remote recording - Node.js](/docs/reference/appmap-node#remote-recording)
32
+
33
+ {% include vimeo.html id='916087968' %}
34
+
35
+ ---
36
+
37
+ **In this video**
38
+ We generate AppMap Data with a remote recording of our application. You can remote record your application if your app doesn’t have complete test cases, or when you want to dive into a specific user interaction such as an API call or specific product functionality in your app.
39
+
40
+ **Links mentioned**
41
+ [Rails Sample Application](https://github.com/land-of-apps/sample_app_6th_ed/tree/codespaces-devcontainer)
42
+ [Early Access to AppMap Analysis](/appmap-analysis)
43
+ [Detailed Remote Recording instructions for Rails](/docs/reference/appmap-ruby.html#remote-recording)
44
+ [Detailed Remote Recording instructions for Java](/docs/reference/appmap-java.html#remote-recording)
45
+
46
+ ---
47
+
48
+ ## Follow along
49
+
50
+ In this tutorial we are going to generate AppMap Data with a remote recording of our application. You can remote record your application if your app doesn’t have complete test cases, or when you want to dive into a specific user interaction such as an API call or specific product functionality in your app.
51
+
52
+ We are going to be using [a sample ruby on rails application](https://github.com/land-of-apps/sample_app_6th_ed/tree/codespaces-devcontainer), which is a basic Twitter clone. If you have followed the previous tutorials, you’ll have [AppMap installed, and have already generated AppMap Data for your test cases](/docs/setup-appmap-in-your-code-editor/generate-appmap-data-from-tests).
53
+
54
+ ## Install AppMap agent
55
+
56
+ **NOTE:** If you're using JetBrains IntelliJ IDEA with Java, [follow these instructions](/docs/reference/jetbrains#remote-recording) to create AppMap Data using remote recording.
57
+
58
+ We’re going to open the AppMap for Visual Studio Code extension and install the AppMap agent. Our installer will confirm that the project meets all the requirements necessary to create maps.
59
+
60
+ <img class="video-screenshot" src="/assets/img/appmap-install.webp"/>
61
+
62
+ We’ll run the AppMap installer, select `bundler`, since this is a Ruby on Rails project.
63
+
64
+ <img class="video-screenshot" src="/assets/img/docs/first-fifteen-minutes/select-bundler.webp"/>
65
+
66
+ You’ll see that the only changes thus far to our repository are the addition of an AppMap configuration file and the AppMap gem being added as a development dependency.
67
+
68
+ <img class="video-screenshot" src="/assets/img/docs/first-fifteen-minutes/project-config-diff.webp"/>
69
+
70
+ ## Recording AppMap Diagrams
71
+
72
+ Next, follow the on-screen instructions for recording AppMap Data. You'll receive one of the two following options.
73
+
74
+ First, you may be instructed to run your application as you normally would. In this scenario, AppMap will automatically be enabled and each web request will generate a new AppMap.
75
+
76
+ If you see this screen, follow along with [request recording AppMap Data](/docs/setup-appmap-in-your-code-editor/generate-appmap-data-with-request-recording).
77
+
78
+ <img class="video-screenshot" src="/assets/img/appmap-record.webp"/>
79
+
80
+ Otherwise, you'll be given a command to copy and paste into the terminal which will guide you through running your application with AppMap enabled.
81
+
82
+ `npx @appland/appmap record`
83
+
84
+ <img class="video-screenshot" src="/assets/img/docs/first-fifteen-minutes/record-command.webp"/>
85
+
86
+ Before I run that command, I’m going to want to start my application locally and make sure I can connect to it. I’m going to open another terminal window and run:
87
+
88
+ `bundle exec rails server`
89
+
90
+ If you are remote recording a Java application or other language, please refer to the [AppMap documentation](/docs/recording-methods.html) for the relevant tutorials for those languages. With my app now running you can see that I can login to my app, navigate around, post a tweet, see users.
91
+
92
+ We’ll now return to our console and run the `record` command. If I omit passing any options, I’ll be prompted to choose how to record the app. I’ll choose remote recording. AppMap will try to locate your running application locally, if your app is running in a container or elsewhere you may get an error. Simply follow the instructions to walk through the available configuration options to connect to your service.
93
+
94
+ <img class="video-screenshot" src="/assets/img/docs/first-fifteen-minutes/select-remote-recording.webp"/>
95
+
96
+ ## Interact with Application
97
+
98
+ Now that the agent is connected, we can hit enter to begin recording. Now, I can interact with my application, kick off a specific functional or integration test, or make any specific API calls to your application. I’m going to login and reset my password. It’s important to keep remote recordings focused on a specific function, and not include too many interactions in one single AppMap Data recording as they can grow large as recordings progress.
99
+
100
+ When I am done interacting, I return back to the terminal and hit enter again to stop the recording. We’ll give this recording a name and then this AppMap will be opened within VS Code.
101
+
102
+ <img class="video-screenshot" src="/assets/img/docs/first-fifteen-minutes/stop-remote-recording.webp"/>
103
+
104
+ ## Open AppMap Diagrams
105
+
106
+ We’ll also receive a runtime analysis scan of this code path as well, which has identified a performance issue with an N+1 SQL query generating the main list of tweets. For early access to our AppMap runtime analysis [reach out to us](/appmap-analysis).
107
+
108
+ <img class="video-screenshot" src="/assets/img/docs/first-fifteen-minutes/remote-recorded-appmap.webp"/>
109
+
110
+ Finally, you'll see AppMap Data actually exists inside your temp directory in the AppMap folder. We don't recommend committing these to your project. They can grow your git repositories unnecessarily. But you can commit changes to your Gemfile and the appmap configuration file which will make the project available to other developers.
111
+
112
+ <img class="video-screenshot" src="/assets/img/docs/first-fifteen-minutes/dont-commit-appmaps.webp"/>
@@ -0,0 +1,77 @@
1
+ ---
2
+ layout: docs
3
+ title: Docs - AppMap in your Code Editor
4
+ description: "Learn to use AppMap to configure your app to record AppMap Data of HTTP requests, easily sort and name them."
5
+ name: Generate AppMap Data with Request Recording
6
+ setup-appmap-ide: true
7
+ redirect_from: [/docs/your-first-15-minutes-with-appmap/streaming-appmaps-with-request-recording, /docs/setup-appmap-in-your-code-editor/generate-appmaps-with-request-recording]
8
+ step: 5
9
+ ---
10
+
11
+ # Generate AppMap Data with Request Recording
12
+
13
+ You can configure your application to record an AppMap of each HTTP server request.
14
+
15
+ Some characteristics of request recording include:
16
+
17
+ * **Named for the route** The name of each AppMap contains the HTTP request method and path, so you can see at a glance what request AppMap contains.
18
+ * **Sortable by timestamp** In the AppMap extension, AppMap Data recorded from requests are sorted by timestamp, with newest AppMap Diagrams at the top. So you can see a chronology of the requests that your app is serving.
19
+
20
+ For details on requests recording, see:
21
+
22
+ - [Requests recording - Ruby](/docs/reference/appmap-ruby#requests-recording)
23
+ - [Requests recording - Python](/docs/reference/appmap-python#requests-recording)
24
+ - [Requests recording - Java](/docs/reference/appmap-java#requests-recording)
25
+
26
+ {% include vimeo.html id='916048527' %}
27
+
28
+ ---
29
+
30
+ **In this video**
31
+ We enable automatic recording of a Ruby on Rails application and stream AppMap Data into VS Code for each request as we interact with our application. Now available for Ruby on Rails applications, you can generate AppMap Diagrams for each request automatically by simply running your application locally and interacting or making API requests.
32
+
33
+ **Links mentioned**
34
+ [Requests Recording](/docs/recording-methods.html#requests-recording)
35
+ [Requests Recording in Rails](/docs/reference/appmap-ruby#requests-recording)
36
+ [Requests Recording in Python](/docs/reference/appmap-python#requests-recording)
37
+
38
+ ---
39
+
40
+ ## Follow along
41
+
42
+ In this tutorial we are going to show you the latest way to generate AppMap Diagrams for your application, streaming AppMap Data for each request.
43
+
44
+ This feature is currently available for [Ruby on Rails](/docs/reference/appmap-ruby#requests-recording), as well as [Python](/docs/reference/appmap-python#requests-recording) applications that use Django or Flask.
45
+
46
+ ## Install AppMap agent
47
+
48
+ You can add AppMap to your project now by simply clicking the automated installer. This automatically adds the AppMap libraries to your project and will run your projects’ package manager such as Bundler, Pip, Poetry, and others.
49
+
50
+ <img class="video-screenshot" src="/assets/img/docs/first-fifteen-minutes/streaming-appmap-1.webp"/>
51
+
52
+ You could also skip the automated installer and add this to the top of your Gemfile in this Rails example.
53
+
54
+ ```
55
+ # This must be the first gem listed
56
+ gem 'appmap', group: %i[test development]
57
+ ```
58
+
59
+ With AppMap installed in this project, we can now start recording. You can record AppMap Diagrams by running your test cases, or by starting a remote recording of a user interaction. But now you can simply just start your project and AppMap will automatically record every request as it happens.
60
+
61
+ I will now start my rails application, this is our AppMap merch store based on the open source project Solidus. You will see AppMap is enabled by default for the development environment.
62
+
63
+ <img class="video-screenshot" src="/assets/img/docs/first-fifteen-minutes/streaming-appmap-2.webp"/>
64
+
65
+ I can now interact with my application and AppMap Data will start to stream into my code editor. We’ll highlight HTTP server requests, SQL Queries, and highlight important AppMap Diagrams.
66
+
67
+ I can then open the AppMap Diagrams to see which packages and functions interact with my database for example.
68
+
69
+ And of course, AppMap will be continually alerting on performance and security issues for this project with AppMap Analysis.
70
+
71
+ <img class="video-screenshot" src="/assets/img/docs/first-fifteen-minutes/streaming-appmap-3.webp"/>
72
+
73
+ With that we find an [authorization happening before authentication](/docs/reference/analysis-rules#authz-before-authn). This is the #1 security flaw on the OWASP Top Ten - and no other tool can detect it.
74
+
75
+ <img class="video-screenshot" src="/assets/img/docs/first-fifteen-minutes/streaming-appmap-4.webp"/>
76
+
77
+ Head over to [the Get AppMap page](/get-appmap) to get started with our VS Code or JetBrains extension and add AppMap to your project today.
@@ -0,0 +1,166 @@
1
+ ---
2
+ layout: docs
3
+ setup-appmap-ide: true
4
+ title: Docs - AppMap in your Code Editor
5
+ description: "Learn how AppMap works: recording agents for Java, Python, Ruby, and Node.js, configuration, recording methods, AppMap files, running in containers, and viewing AppMap Diagrams."
6
+ step: 1
7
+ name: How AppMap Works
8
+ redirect_from: [/docs/your-first-15-minutes-with-appmap/what-is-appmap,/docs/your-first-15-minutes-with-appmap/ideal-projects,/docs/your-first-15-minutes-with-appmap/appmap-analysis,/docs/guides/how-appmap-works]
9
+ ---
10
+
11
+ # How AppMap Works
12
+
13
+ - [Language "agent"](#language-agent)
14
+ - [appmap.yml configuration](#appmapyml-configuration)
15
+ - [Recording methods](#recording-methods)
16
+ - [About AppMap files](#about-appmap-files)
17
+ - [Running in containers](#running-in-containers)
18
+ - [Viewing AppMap Diagrams](#viewing-appmap-diagrams)
19
+
20
+ ## Language “agent”
21
+
22
+ The AppMap process begins with the AppMap recording agent. This “agent” is a language-specific library - agents are available for Java, Python, Ruby and Node.js (Beta). You add the agent as a dependency of your project in the normal manner - via Maven, Gradle, Pip, Bundler, Yarn, etc. Then you configure your application to load the agent when the application runs.
23
+
24
+
25
+ <table class="table table-striped table-bordered">
26
+ <tr>
27
+ <th>Java</th>
28
+ <th>Python</th>
29
+ <th>Ruby</th>
30
+ <th>Node.js</th>
31
+ </tr>
32
+ <tr>
33
+ <td><code>-javaagent</code> JVM option </td>
34
+ <td>Django environment </td>
35
+ <td><code>test</code> and/or <code>development</code> bundle</td>
36
+ <td><code>npx appmap-node <i>yourapp</i></code></td>
37
+ </tr>
38
+ <tr>
39
+ <td>Gradle plugin</td>
40
+ <td>Flask environment </td>
41
+ <td></td>
42
+ <td></td>
43
+ </tr>
44
+ <tr>
45
+ <td>Maven plugin</td>
46
+ <td></td>
47
+ <td></td>
48
+ <td></td>
49
+ </tr>
50
+ </table>
51
+
52
+
53
+
54
+ _Running application code with the AppMap agent enabled_
55
+
56
+ AppMap is designed to record and display the code internals of your project, along with important I/O operations. Here’s a comparison of AppMap with other runtime code tools:
57
+
58
+ <table class="table table-striped table-bordered">
59
+ <tr>
60
+ <th></th>
61
+ <th>AppMap </th>
62
+ <th>Profiler</th>
63
+ <th>Exception reporter</th>
64
+ <th>Debugger</th>
65
+ <th>APM / Telemetry</th>
66
+ </tr>
67
+ <tr>
68
+ <td>Primary focus</td>
69
+ <td>Your code<br> Parameters and return values<br> I/O<br> Log statements<br> Execution stack<br> Timing data<br> Exceptions</td>
70
+ <td>All code (your code + dependencies)<br> Execution stack<br> Timing data</td>
71
+ <td>Exceptions<br> Execution stack </td>
72
+ <td>All code<br> Parameters and return values<br> Execution stack<br> Exceptions</td>
73
+ <td>I/O<br> Log statements<br> Timing data<br> Your code (limited)</td>
74
+ </tr>
75
+ <tr>
76
+ <td>Environment</td>
77
+ <td>development, test, staging, CI</td>
78
+ <td>development, staging </td>
79
+ <td>staging, production</td>
80
+ <td>development</td>
81
+ <td>production</td>
82
+ </tr>
83
+ </table>
84
+
85
+
86
+ To summarize, AppMap is designed primarily to record _full details of your code_, including _parameters and return values_, as well as _I/O_ (especially _SQL_ and _HTTP client requests_), it includes _log statements_, the _execution stack_, _timing information_, and _exceptions_. It captures all of this with minimal configuration. It’s designed primarily for non-production environments.
87
+
88
+ ## appmap.yml configuration
89
+ When you start your app with the AppMap agent enabled, it reads a configuration file called appmap.yml. This file serves several basic purposes. It tells the AppMap agent:
90
+
91
+ * Which code to record
92
+ * Where to write the AppMap Data.
93
+
94
+ And it also tells other AppMap tools:
95
+ * The project name
96
+ * The language name
97
+ * Where the AppMap Data is located
98
+
99
+ **Note:** In most environments, a default appmap.yml will be auto-generated by the AppMap agent if none exists.
100
+
101
+ ### Specifying which code to record
102
+ To get started, you just provide the top-level package names or directories containing the code you want to record. For a non-compiled language like Ruby, Python, or Node.js, it’s a directory list like `[ app]` or `[ src, lib ]`. For Java, it’s a package prefix like `org.mycorp`.
103
+
104
+ Going beyond this basic, initial configuration, you have fine-grained control over which code to record. You can choose to record selected dependency libraries or packages. You can also include or exclude specific packages, classes and/or functions. And you can apply custom “labels” to any function, in order to organize the code into functional groups and to facilitate reasoning and analysis.
105
+
106
+ ## Recording methods
107
+ The AppMap agent can be enabled in any environment, and configured to record selected code. There are several variants of this basic model that are commonly used to acquire AppMap Data for specific use cases.
108
+
109
+ ### Test case recording
110
+ AppMap provides specialized support for recording test cases. When you run your test cases in a supported framework (there are many - see the [language agent reference](/docs/reference) for details), a separate AppMap Diagram is created for each test case. AppMap Diagrams created from tests cases have some distinct features:
111
+
112
+ * Each AppMap file is named for the test case, and stored in a folder called `$appmap_dir/$test_framework`
113
+ * The test framework name and version are stored in the AppMap.
114
+ * The test case name, file name and line number are stored in the AppMap.
115
+ * The test status (`succeeded` or `failed`) and any test failure message are stored in the AppMap.
116
+
117
+ Recording the test suite of an application is a good way to quickly obtain a lot of data about an application. And because test cases work the same way for each build, recording test cases is also a good way to compare the behavior of application code across versions.
118
+
119
+ ### Requests recording
120
+ For web applications, AppMap can be configured to record an AppMap for each HTTP server request handled by the app. This is a great way to collect data interactively. Just start the application with the AppMap language agent enabled, and start interacting with the app - manually, or using QA scripts or an API testing tool like Postman. AppMap Data is generated continuously as the application handles requests.
121
+
122
+ ### Remote recording
123
+ Remote recording is similar to requests recording, in that:
124
+ * It’s for web applications
125
+ * It makes AppMap Data as the application handles requests
126
+
127
+ But unlike requests recording, you control the boundaries of the AppMap, each AppMap can contain more than one HTTP server request, and it will also contain non-HTTP activity such as background jobs. To start a remote recording, you send an HTTP command to the AppMap agent running inside your application’s web stack to start recording. From that point on, everything that happens inside the application is recorded, until you send the “stop” command.
128
+
129
+ ### Code block recording
130
+ Some language agents enable you to make an AppMap by adding a simple code snippet to your code. This gives you total control over what’s recorded. The only downside of this is that you need access to the source code - which is not required by other recording methods.
131
+
132
+ ### Process recording
133
+ Process recording is something of a last resort, when other recording methods aren’t available. When you run your application with process recording enabled, _everything_ that happens in the code (as configured by the appmap.yml) is recorded, from process startup to shutdown.
134
+
135
+ ## About AppMap files
136
+ AppMap Data is ordinary JSON files. As you record AppMap Data with test case recording, requests recording, or process recording, these JSON files are generated and written to the filesystem. The default location for AppMap Data is `tmp/appmap`, relative to the process working directory. Be sure that you know that the working directory of the application server is! You’ll need to know this to find and open your AppMap Diagrams.
137
+
138
+ When you use remote recording, the HTTP “stop” command responds with the AppMap in the response payload. It’s up to the client to decide where to write the file. For example, you can start and stop a remote recording using cURL, and write the output of the “stop” command to a file of your choosing.
139
+
140
+ When you use code block recording, it’s up to you in your code snippet to write the AppMap to a file. Naturally, you can direct the data anywhere you please.
141
+
142
+ AppMap files conform to the [AppMap specification](https://github.com/getappmap/appmap), which is freely available on GitHub.
143
+
144
+ ## Running in containers
145
+ You can make AppMap Data while running your application in a container. From the AppMap standpoint, there is really no difference between running in a container and running in any other environment. There are just a couple of basic considerations:
146
+ * The AppMap file will be written to the filesystem of the container. To make it available to the host, you should either use a volume mount to the `$appmap_dir` (typically, `tmp/appmap`), or copy the AppMap Data out of the container after the recording is complete.
147
+ * If you are using remote recording, your application web port should be exposed to the host, so that you can send the HTTP start and stop commands. You’ll need this anyway, in order to access your application’s web UI or API from the host.
148
+
149
+ ## Viewing AppMap Diagrams
150
+ AppMap includes open-source UI tools to display AppMap Data as visual diagrams. Built-in diagrams include:
151
+
152
+ * Dependency map
153
+ * Sequence diagram
154
+ * Trace view
155
+ * Flame graph
156
+
157
+ These diagrams are integrated together in the AppMap UI, and fully interactive. The data can be organized, selected, and filtered by the user. This makes the user interface much better suited for code investigation than a static diagram image. It’s also much more scalable, because the diagrams can be tuned to reveal specific information and hide extraneous data.
158
+
159
+ ### IDE extensions
160
+ The AppMap extensions for VSCode and JetBrains include a file association for AppMap Data. Just click on an AppMap file, and it will be opened graphically in the code editor. The diagram is fully linked to source code within the IDE.
161
+
162
+ ### Hosting an AppMap viewer
163
+ The AppMap Diagrams are published as an open source library on [NPM](https://www.npmjs.com/package/@appland/appmap). If you want to provide a centralized service to open AppMap Diagrams in the browser, you can just serve [appmap.html](https://www.npmjs.com/package/@appland/appmap?activeTab=code) from any web server. Provide a URL to the AppMap Data using the `appmap` parameter - for example: `http://myappmapserver/appmap.html?appmap=https://<appmap-url>`.
164
+
165
+ ### Exporting AppMap Data
166
+ The AppMap sequence diagram can be exported to SVG or PlantUML. Consult the [diagrams reference](/docs/guides/using-appmap-diagrams.html#sequence-diagram) for details.
@@ -0,0 +1,25 @@
1
+ ---
2
+ layout: docs
3
+ title: Docs - AppMap in your Code Editor
4
+ description: "Learn to set up and navigate AppMap in your code editor efficiently. Explore features like generating AppMap Data from tests and remote recording."
5
+ toc: true
6
+ redirect_from: [/docs/your-first-15-minutes-with-appmap/, /docs/code-editor-extensions/,/docs/code-editor-extensions/appmap-for-vs-code, /docs/code-editor-extensions/appmap-for-jetbrains]
7
+ ---
8
+
9
+
10
+ # Set Up AppMap in your Code Editor
11
+
12
+ <p class="alert alert-info">
13
+ If at any point you would like some help, <a href="/slack">join us in Slack</a>!
14
+ You'll find the AppMap team there, along with other AppMap users.
15
+ </p>
16
+
17
+ * [How AppMap Works](/docs/setup-appmap-in-your-code-editor/how-appmap-works)
18
+ * [Add AppMap to your Code Editor](/docs/setup-appmap-in-your-code-editor/add-appmap-to-your-code-editor)
19
+ * [Generate AppMap Data from Tests](/docs/setup-appmap-in-your-code-editor/generate-appmap-data-from-tests)
20
+ * [Generate AppMap Data with Remote Recording](/docs/setup-appmap-in-your-code-editor/generate-appmap-data-with-remote-recording)
21
+ * [Generate AppMap Data with Request Recording](/docs/setup-appmap-in-your-code-editor/generate-appmap-data-with-request-recording)
22
+ * [Navigating AppMap Diagrams](/docs/setup-appmap-in-your-code-editor/navigating-appmap-diagrams)
23
+ * [Navigating Code Objects](/docs/setup-appmap-in-your-code-editor/navigating-code-objects)
24
+ * [Runtime Analysis](/docs/setup-appmap-in-your-code-editor/appmap-analysis)
25
+ * [Runtime Analysis](/docs/setup-appmap-in-your-code-editor/appmap-analysis)
@@ -0,0 +1,59 @@
1
+ ---
2
+ layout: docs
3
+ title: Docs - AppMap in your Code Editor
4
+ description: "Learn to navigate AppMap Diagrams effectively. Discover Dependency and Trace views to enhance code understanding and execution analysis."
5
+ name: Navigating AppMap Diagrams
6
+ setup-appmap-ide: true
7
+ step: 6
8
+ redirect_from: [/docs/your-first-15-minutes-with-appmap/navigating-appmaps, /docs/setup-appmap-in-your-code-editor/navigating-appmaps]
9
+ ---
10
+
11
+ # Navigating AppMap Diagrams
12
+
13
+ {% include vimeo.html id='916048549' %}
14
+
15
+ ---
16
+
17
+ **In this video**
18
+ We walk through how to navigate your AppMap Diagrams. We'll dive into the various sections of the AppMap view, such as the dependency view and the trace view. And we'll show you how to better understand your code execution by traversing your AppMap and how to link back to your code
19
+
20
+ **Links mentioned**
21
+ [Rails Sample Application](https://github.com/land-of-apps/sample_app_6th_ed/tree/codespaces-devcontainer)
22
+ [Appland VS Code and JetBrains Extension](https://appmap.io/get-appmap)
23
+
24
+ ---
25
+
26
+ ## Follow along
27
+
28
+ Welcome to AppMap. If you’ve been following along this tutorial, you should have AppMap Diagrams generated from either your [test cases](/docs/setup-appmap-in-your-code-editor/generate-appmap-data-from-tests.html) or from a [remote recording](/docs/setup-appmap-in-your-code-editor/generate-appmap-data-with-remote-recording.html). This tutorial assumes you have at least one AppMap created, but ideally more than one. As always you can clone this [sample project repository from Github](https://github.com/land-of-apps/sample_app_6th_ed/tree/codespaces-devcontainer) and follow along.
29
+
30
+ In this tutorial, we are going to dive into our AppMap Diagrams, show you how to navigate them and how to connect an AppMap back to your code.
31
+
32
+ We’ll start by opening the AppMap extension installed in our VS Code editor. You’ll see a listing of all your AppMap Diagrams in your left hand column. From here, we can select on an AppMap to open it.
33
+
34
+ <img class="video-screenshot" src="/assets/img/docs/first-fifteen-minutes/appmap-view.webp"/>
35
+
36
+ There are 3 main sections to an AppMap. The left hand column will show you HTTP requests, labels, either automatically generated by AppMap or manually extended via simple code comments within your code base, a list of all the packages, classes, functions, and SQL queries associated with this AppMap.
37
+
38
+ You can search across all of these code objects within this AppMap in the search bar and you can click the link to open the test case that generated this AppMap.
39
+
40
+ ## Dependency View
41
+
42
+ In the right hand section, you’ll see the Dependency view which shows a visual representation between the code objects, functions, and SQL queries. Click on the “information” icon to see a full legend for the code objects and data values.
43
+
44
+ <img class="video-screenshot" src="/assets/img/docs/first-fifteen-minutes/appmap-legend.webp"/>
45
+
46
+ In the top section, you’ll see a filter icon, click on this icon to help you declutter and focus your AppMap, which is particularly useful for larger and more complex maps. You can hide any unlabeled function, or hide specific packages, classes, or functions. For example, if I wanted to hide all of my logging functions from this AppMap, I can simply search for the `package:logger` and hide this from my view.
47
+
48
+
49
+ <img class="video-screenshot" src="/assets/img/docs/first-fifteen-minutes/appmap-filter-view.webp"/>
50
+
51
+ ## Trace View
52
+
53
+ If we click on one of the classes, such as `LoggedInHelper`, and select on the function, we can click on the event and go to the trace view of this AppMap.
54
+
55
+ The trace view shows a hierarchical tree structure of what happened within that particular web request. If I keep clicking on `caller` i will get to the root which is the http server request. I can see the controller and the return status.
56
+
57
+ <img class="video-screenshot" src="/assets/img/docs/first-fifteen-minutes/appmap-trace-view.webp"/>
58
+
59
+ I can see the values of the variables, parameters, and return values as the code traversed this test case.
@@ -0,0 +1,67 @@
1
+ ---
2
+ layout: docs
3
+ title: Docs - AppMap in your Code Editor
4
+ description: "Explore AppMap's Code Objects view to navigate code functions, HTTP requests, and SQL queries across all AppMap Diagrams."
5
+ name: Navigating Code Objects
6
+ setup-appmap-ide: true
7
+ step: 7
8
+ redirect_from: [/docs/your-first-15-minutes-with-appmap/navigating-code-objects]
9
+ ---
10
+
11
+ # Navigating Code Objects
12
+ {% include vimeo.html id='916048582' %}
13
+
14
+ ---
15
+
16
+ **In this video**
17
+ Dive into the Code objects view, a high level view of code functions, HTTP requests, and SQL queries across the entire set of your AppMap Diagrams and learn how to locate and navigate to an AppMap from code reference pins on your code functions.
18
+
19
+ **Links mentioned**
20
+ [Rails Sample Application](https://github.com/land-of-apps/sample_app_6th_ed/tree/codespaces-devcontainer)
21
+
22
+ ---
23
+ ## Follow along
24
+
25
+ Welcome to AppMap, In this tutorial we will be diving into advanced navigation of AppMap Diagrams - the Code Objects view. We’ll answer the question, “What if I have a lot of AppMap Diagrams and I don’t know where exactly to look?”
26
+
27
+ In this view, we collect all the different code functions and HTTP server requests and SQL queries all into one list. Every request, query, and function call that occurs anywhere in the whole set of AppMap Diagrams will be in this list.
28
+
29
+ ## Code Objects View
30
+
31
+ There are three sections to the Code Objects view. The first section is the Code view, this will show packages, classes, and functions, it will show the framework code as well as my code, essentially everything present within your AppMap Diagrams. We can click on a function to navigate directly to the code. In this example, I’ll navigate to my Application controllers, and view the Microposts controller. This will take me directly to the code for this function. This is a great way to see more comprehensively what you have across your code base.
32
+
33
+ <img class="video-screenshot" src="/assets/img/docs/first-fifteen-minutes/code-objects-view.webp"/>
34
+
35
+ ## HTTP Routes List
36
+
37
+ In the HTTP Service request list, you can see basically a mini spec file showing you what routes are available across all of your AppMap Diagrams.
38
+
39
+ If this route only exists in a single AppMap, you’ll be taken directly to the AppMap for this request, but if the route exists in multiple diagrams you’ll get a VScode picker to choose which one to open.
40
+
41
+ Here is this route, and here it is shown in a trace view, and you’ll see the status code for that is 302 which is a redirect.
42
+
43
+ <img class="video-screenshot" src="/assets/img/docs/first-fifteen-minutes/code-objects-trace-view.webp"/>
44
+
45
+ ## SQL Query List
46
+
47
+ The final section of Code Objects is a list of all the SQL queries across your AppMap Diagrams. Just like before, if you click into it and it is unique across your AppMap set then you’ll be sent directly to the AppMap or the quick picker will prompt you to open one.
48
+
49
+ The code view is a handy way to navigate your code base, similar to the file view you’d get in VS Code except this code view will only show the code that participated in your test case recordings or remote recordings.
50
+
51
+ But it’s more common to simply be navigating within the code itself. So what if you want to get to the AppMap Diagram from within the code?
52
+
53
+ ## Opening AppMap Diagrams from code object names
54
+
55
+ The command “Open code object in AppMap” can be used to find and open all the AppMap Diagrams that contain a particular code object (package, class, or function name).
56
+
57
+ <img class="video-screenshot" src="/assets/img/docs/first-fifteen-minutes/code-object-command-palette.webp"/>
58
+
59
+ To get here in VS Code open the command palette.
60
+
61
+ On Mac:
62
+ `Shift + Command + P`
63
+
64
+ On Windows/Linux:
65
+ `Ctrl + Shift + P`
66
+
67
+ I can then search for the `UsersController#show` function - if it's in a single AppMap I’ll get taken directly to that AppMap. If it exists in more than one you’ll get the quick picker to choose which one you want.
@@ -0,0 +1,11 @@
1
+ ---
2
+ layout: home
3
+ title: AppMap - For Developers
4
+ ---
5
+
6
+ <div id="home-body">
7
+
8
+ {% include docs/compact_hero.html %}
9
+
10
+ {% include contact_us_cta.html %}
11
+ </div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@appland/appmap",
3
- "version": "3.146.0",
3
+ "version": "3.147.0",
4
4
  "description": "",
5
5
  "bin": "built/cli.js",
6
6
  "engines": {
@@ -22,7 +22,7 @@
22
22
  "build": "tsc && yarn build:html && yarn build:doc",
23
23
  "watch": "tsc --watch",
24
24
  "build:html": "ts-node esbuild.html.ts",
25
- "build:doc": "cd ../../docs && rsync -av --include='appmap-overview.md' --include='navie/***' --include='diagrams/***' --include='get-started-with-appmap/***' --exclude='*' --delete . ../packages/cli/built/docs",
25
+ "build:doc": "rsync -av --delete ../../docs built/ && rm -f built/docs/reference/appmap-agent-js.md",
26
26
  "start": "ts-node src/cli.ts",
27
27
  "build-native": "yarn build && ./bin/build-native"
28
28
  },