{"id":9766,"date":"2021-07-20T09:18:51","date_gmt":"2021-07-20T07:18:51","guid":{"rendered":"https:\/\/www.consolvis.de\/?p=9766"},"modified":"2021-07-20T09:34:36","modified_gmt":"2021-07-20T07:34:36","slug":"prevent-errors-in-your-sap-cap-applications-with-tools","status":"publish","type":"post","link":"https:\/\/www.consolvis.de\/en\/blog\/prevent-errors-in-your-sap-cap-applications-with-tools\/","title":{"rendered":"Prevent a whole category of errors in your SAP CAP applications with a few simple tools"},"content":{"rendered":"[vc_row type=”in_container” full_screen_row_position=”middle” column_margin=”default” column_direction=”default” column_direction_tablet=”default” column_direction_phone=”default” scene_position=”center” text_color=”dark” text_align=”left” row_border_radius=”none” row_border_radius_applies=”bg” overlay_strength=”0.3″ gradient_direction=”left_to_right” shape_divider_position=”bottom” bg_image_animation=”none”][vc_column column_padding=”no-extra-padding” column_padding_tablet=”inherit” column_padding_phone=”inherit” column_padding_position=”all” column_element_spacing=”default” background_color_opacity=”1″ background_hover_color_opacity=”1″ column_shadow=”none” column_border_radius=”none” column_link_target=”_self” gradient_direction=”left_to_right” overlay_strength=”0.3″ width=”1\/1″ tablet_width_inherit=”default” tablet_text_alignment=”default” phone_text_alignment=”default” bg_image_animation=”none” border_type=”simple” column_border_width=”none” column_border_style=”solid”][vc_column_text]Wouldn\u2019t it be great to prevent a whole category of bugs by arming your SAP Cloud Application Programming Model<\/a> projects with a few tools? And wouldn\u2019t it be even better if that would also end stylistic discussions about your code?<\/p>\n

Clear the stage for Prettier, ESLint and TypeScript. Depending on your background, you\u2019ve probably heard of these tools. They are static code analysis tools that are popular in the JavaScript ecosystem. Let\u2019s consider them all as testing tools for your CAP application, as they can help you avoid coding errors. Let\u2019s look at the tools:[\/vc_column_text][\/vc_column][\/vc_row][vc_row type=”in_container” full_screen_row_position=”middle” column_margin=”default” column_direction=”default” column_direction_tablet=”default” column_direction_phone=”default” scene_position=”center” text_color=”dark” text_align=”left” row_border_radius=”none” row_border_radius_applies=”bg” overlay_strength=”0.3″ gradient_direction=”left_to_right” shape_divider_position=”bottom” bg_image_animation=”none”][vc_column column_padding=”no-extra-padding” column_padding_tablet=”inherit” column_padding_phone=”inherit” column_padding_position=”all” column_element_spacing=”default” background_color_opacity=”1″ background_hover_color_opacity=”1″ column_shadow=”none” column_border_radius=”none” column_link_target=”_self” gradient_direction=”left_to_right” overlay_strength=”0.3″ width=”1\/1″ tablet_width_inherit=”default” tablet_text_alignment=”default” phone_text_alignment=”default” bg_image_animation=”none” border_type=”simple” column_border_width=”none” column_border_style=”solid”][vc_column_text]\n

Prettier<\/a><\/h2>\n

Let\u2019s start with formatting code. We format JavaScript and TypeScript files using Prettier. Prettier is the JavaScript code formatter. It takes your code, however you write it, and reformats it in a way that is consistent and readable every time. In doing so, Prettier integrates very well with Visual Studio Code<\/a>, our IDE of choice, and has very few options. Prettier also integrates easily with ESLint.<\/p>\n

Why would you want to use it? You hit save and it formats the code in a consistent style for your entire team. You don\u2019t have to discuss style during code review. It saves you time and energy.<\/p>\n

And why can you call Prettier a testing tool? Look at it:[\/vc_column_text][image_with_animation image_url=”9769″ animation=”Fade In” hover_animation=”none” alignment=”center” border_radius=”none” box_shadow=”none” image_loading=”default” max_width=”100%” max_width_mobile=”default”][vc_column_text]What\u2019s the value of d here? Do you know the order of operations of these operators by heart? If so, great! But do you trust that all your colleagues know them well enough not to introduce an error when refactoring?<\/p>\n

Run this code through Prettier, and this is what you get:[\/vc_column_text][image_with_animation image_url=”9771″ animation=”Fade In” hover_animation=”none” alignment=”center” border_radius=”none” box_shadow=”none” image_loading=”default” max_width=”100%” max_width_mobile=”default”][vc_column_text]Even if you know the order of operations, the extra brackets – which Prettier automatically adds when you save the file – are pretty helpful. And if you realize that this is not what you wanted, you can add the brackets yourself and Prettier will leave it that way.[\/vc_column_text][image_with_animation image_url=”9773″ animation=”Fade In” hover_animation=”none” alignment=”center” border_radius=”none” box_shadow=”none” image_loading=”default” max_width=”100%” max_width_mobile=”default”][vc_column_text]This is an example of what Prettier does to make the intent of your code more obvious – freeing your brain to focus on more challenging problems.[\/vc_column_text][\/vc_column][\/vc_row][vc_row type=”in_container” full_screen_row_position=”middle” column_margin=”default” column_direction=”default” column_direction_tablet=”default” column_direction_phone=”default” scene_position=”center” text_color=”dark” text_align=”left” row_border_radius=”none” row_border_radius_applies=”bg” overlay_strength=”0.3″ gradient_direction=”left_to_right” shape_divider_position=”bottom” bg_image_animation=”none”][vc_column column_padding=”no-extra-padding” column_padding_tablet=”inherit” column_padding_phone=”inherit” column_padding_position=”all” column_element_spacing=”default” background_color_opacity=”1″ background_hover_color_opacity=”1″ column_shadow=”none” column_border_radius=”none” column_link_target=”_self” gradient_direction=”left_to_right” overlay_strength=”0.3″ width=”1\/1″ tablet_width_inherit=”default” tablet_text_alignment=”default” phone_text_alignment=”default” bg_image_animation=”none” border_type=”simple” column_border_width=”none” column_border_style=”solid”][vc_column_text]\n

ESLint<\/a><\/h2>\n

On formatting, we should mention that ESLint can also format code. And we use that for formatting CDS files. Big thanks to the CAP team for providing this!<\/p>\n

So what is ESLint? ESLint is the pluggable linting utility for JavaScript. If you\u2019ve never heard of it, don\u2019t worry, I\u2019ll leave a link below. Linting is analyzing code for errors without actually executing the code.<\/p>\n

So ESLint looks at your code to find problems quickly. If there is an automated solution that applies, it suggests it for you. So it not only finds errors but, sometimes, fixes them for you.<\/p>\n

And it\u2019s highly customizable. You can write your own rules that work with ESLint\u2019s built-in rules, and you can customize it to work exactly the way you need it for your project. That\u2019s what the CAP team has done, for example, to provide consistency and help for your CDS files.<\/p>\n

But let\u2019s look at some JavaScript coding to see why you can also use it as a testing tool:[\/vc_column_text][image_with_animation image_url=”9775″ animation=”Fade In” hover_animation=”none” alignment=”center” border_radius=”none” box_shadow=”none” image_loading=”default” max_width=”100%” max_width_mobile=”default”][vc_column_text]Do you recognize the problem? If so, that\u2019s great! But don\u2019t you think it\u2019s cool when you don\u2019t have to strain your brain to find and correct subtle errors like this? I do! Let a computer do as much work for me as possible, please and thank you. That\u2019s what ESLint does for you.<\/p>\n

So if you don\u2019t know where the error is yet, let\u2019s look at the error message in a project with ESLint enabled:[\/vc_column_text][image_with_animation image_url=”9777″ animation=”Fade In” hover_animation=”none” alignment=”center” border_radius=”none” box_shadow=”none” image_loading=”default” max_width=”100%” max_width_mobile=”default”][vc_column_text]Isn\u2019t it great that a simple tool, once configured, can help you catch such errors? Mixing up the order of operations will almost always yield unexpected results. Similarly, misapplied negation will also yield bad results. Here the difference between !recipe in req.data and !(recipe in req.data). The first looks for a boolean value (!recipe) in req.data, and the other looks for a string and inverts the result.<\/p>\n

But it doesn\u2019t stop there. ESLint helps you fix this issue. Let’s take a look:[\/vc_column_text][image_with_animation image_url=”9779″ animation=”Fade In” hover_animation=”none” alignment=”center” border_radius=”none” box_shadow=”none” image_loading=”default” max_width=”100%” max_width_mobile=”default”][vc_column_text]Not only can you check coding errors, but you can also enforce or warn about naming conventions and styling. Let\u2019s look at some warnings that the CAP team provides for cds files:[\/vc_column_text][image_with_animation image_url=”9781″ animation=”Fade In” hover_animation=”none” alignment=”center” border_radius=”none” box_shadow=”none” image_loading=”default” max_width=”100%” max_width_mobile=”default”][vc_column_text]It helps you come to a standard naming style within your team, for example, for CDS files. No more discussions about indentations, spaces, and capitalization. Great!<\/p>\n

Now, what do you need to get started with ESLint in your CAP projects? Just use CDS Lint. Initialize it. That\u2019s it. Simple, isn\u2019t it?[\/vc_column_text][\/vc_column][\/vc_row][vc_row type=”in_container” full_screen_row_position=”middle” column_margin=”default” column_direction=”default” column_direction_tablet=”default” column_direction_phone=”default” scene_position=”center” text_color=”dark” text_align=”left” row_border_radius=”none” row_border_radius_applies=”bg” overlay_strength=”0.3″ gradient_direction=”left_to_right” shape_divider_position=”bottom” bg_image_animation=”none”][vc_column column_padding=”no-extra-padding” column_padding_tablet=”inherit” column_padding_phone=”inherit” column_padding_position=”all” column_element_spacing=”default” background_color_opacity=”1″ background_hover_color_opacity=”1″ column_shadow=”none” column_border_radius=”none” column_link_target=”_self” gradient_direction=”left_to_right” overlay_strength=”0.3″ width=”1\/1″ tablet_width_inherit=”default” tablet_text_alignment=”default” phone_text_alignment=”default” bg_image_animation=”none” border_type=”simple” column_border_width=”none” column_border_style=”solid”][vc_column_text]\n

TypeScript<\/a><\/h2>\n

If you come from the ABAP world, you might sometimes wish for a language that is not strictly typed. The JavaScript community is currently moving in a different direction. JavaScript is not strictly typed and static type checkers for JavaScript are on the rise.<\/p>\n

A static type checker adds syntax to JavaScript that lets you specify what data type a variable is. It can track that variable through the code to make sure it\u2019s being used correctly. And that\u2019s where TypeScript comes in. By understanding JavaScript and its types, TypeScript saves time catching errors and providing fixes before running the code.<\/p>\n

TypeScript is an open-source language built on top of JavaScript. Types provide a way to describe the shape of an object, which allows for better documentation and allows TypeScript to verify that your code works correctly.<\/p>\n

Writing types can be optional in TypeScript because type inference allows you to get a lot of performance without writing additional code. Any valid JavaScript code is also TypeScript code.<\/p>\n

You may get type-checking errors, but that doesn\u2019t stop you from running the resulting JavaScript. You can choose to be more strict, but that means you are still in control. TypeScript\u2019s type inference means you don\u2019t have to annotate your code until you want more security.<\/p>\n

Can you spot the error in this code?[\/vc_column_text][image_with_animation image_url=”9785″ animation=”Fade In” hover_animation=”none” alignment=”center” border_radius=”none” box_shadow=”none” image_loading=”default” max_width=”100%” max_width_mobile=”default”][vc_column_text]Maybe you can, maybe you can\u2019t. Maybe your employees can, maybe they can\u2019t. It would be cool if we had software that could detect the problem for us. Let\u2019s rewrite this function in TypeScript:[\/vc_column_text][image_with_animation image_url=”9787″ animation=”Fade In” hover_animation=”none” alignment=”center” border_radius=”none” box_shadow=”none” image_loading=”default” max_width=”100%” max_width_mobile=”default”][vc_column_text]Now if we call it as before, we get:[\/vc_column_text][image_with_animation image_url=”9789″ animation=”Fade In” hover_animation=”none” alignment=”” border_radius=”none” box_shadow=”none” image_loading=”default” max_width=”100%” max_width_mobile=”default”][vc_column_text]I like to think of type definitions with TypeScript as a form of automated inline testing. I highly recommend you try it out if you haven\u2019t already.<\/p>\n

With the latest CAP release, we have TypeScript on the fly with cds-ts with minimal setup. Using the cds-ts CLI command instead of cds avoids precompiling TypeScript files to JavaScript every time and speeds up development. So by simply using cds-ts watch in your development environment, you can use ts-node to work on your TypeScript.<\/p>\n

A step-by-step introduction is possible with these tools. Try it out on your next feature and see what you think.[\/vc_column_text][\/vc_column][\/vc_row][vc_row type=”in_container” full_screen_row_position=”middle” column_margin=”default” column_direction=”default” column_direction_tablet=”default” column_direction_phone=”default” scene_position=”center” text_color=”dark” text_align=”left” row_border_radius=”none” row_border_radius_applies=”bg” overlay_strength=”0.3″ gradient_direction=”left_to_right” shape_divider_position=”bottom” bg_image_animation=”none”][vc_column column_padding=”no-extra-padding” column_padding_tablet=”inherit” column_padding_phone=”inherit” column_padding_position=”all” column_element_spacing=”default” background_color_opacity=”1″ background_hover_color_opacity=”1″ column_shadow=”none” column_border_radius=”none” column_link_target=”_self” gradient_direction=”left_to_right” overlay_strength=”0.3″ width=”1\/1″ tablet_width_inherit=”default” tablet_text_alignment=”default” phone_text_alignment=”default” bg_image_animation=”none” border_type=”simple” column_border_width=”none” column_border_style=”solid”][vc_column_text]\n

Use available tools to avoid mistakes and save time<\/h2>\n

Static code analysis is a great way to gain significant confidence in your code – quickly, efficiently, and with less effort than writing unit tests for your entire codebase.<\/p>\n

Since you don\u2019t have to focus on content that you can automate, your mind is free to focus on the critical things.<\/p>\n

Stop wasting your time discussing indentations, single quotes vs. double quotes, and avoidable errors.<\/p>\n

If you\u2019re not using these tools yet, start now.<\/p>\n

Stay healthy, stay curious, and enjoy the process.[\/vc_column_text][\/vc_column][\/vc_row]\n","protected":false},"excerpt":{"rendered":"

[vc_row type=”in_container” full_screen_row_position=”middle” column_margin=”default” column_direction=”default” column_direction_tablet=”default” column_direction_phone=”default” scene_position=”center” text_color=”dark” text_align=”left” row_border_radius=”none” row_border_radius_applies=”bg” overlay_strength=”0.3″ gradient_direction=”left_to_right” shape_divider_position=”bottom” bg_image_animation=”none”][vc_column column_padding=”no-extra-padding” column_padding_tablet=”inherit” column_padding_phone=”inherit” column_padding_position=”all” column_element_spacing=”default” background_color_opacity=”1″ background_hover_color_opacity=”1″ column_shadow=”none” column_border_radius=”none” column_link_target=”_self” gradient_direction=”left_to_right” overlay_strength=”0.3″ width=”1\/1″ tablet_width_inherit=”default”…<\/p>\n","protected":false},"author":2,"featured_media":9795,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3004],"tags":[],"yoast_head":"\nPrevent errors in your SAP CAP applications with a few simple tools<\/title>\n<meta name=\"description\" content=\"Wouldn\u2019t it be great to prevent a whole category of bugs by arming your SAP Cloud Application Programming Model projects with a few tools? And wouldn\u2019t it be even better if that would also end stylistic discussions about your code?\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.consolvis.de\/en\/blog\/prevent-errors-in-your-sap-cap-applications-with-tools\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Prevent errors in your SAP CAP applications with a few simple tools\" \/>\n<meta property=\"og:description\" content=\"Wouldn\u2019t it be great to prevent a whole category of bugs by arming your SAP Cloud Application Programming Model projects with a few tools? And wouldn\u2019t it be even better if that would also end stylistic discussions about your code?\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.consolvis.de\/en\/blog\/prevent-errors-in-your-sap-cap-applications-with-tools\/\" \/>\n<meta property=\"og:site_name\" content=\"Consolvis GmbH\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/consolvis\/\" \/>\n<meta property=\"article:published_time\" content=\"2021-07-20T07:18:51+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-07-20T07:34:36+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.consolvis.de\/wp-content\/uploads\/2021\/07\/Prevent-a-whole-category-of-errors-in-your-SAP-CAP-applications-with-a-few-simple-tools.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1280\" \/>\n\t<meta property=\"og:image:height\" content=\"720\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Tobias Steckenborn\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@consolvis\" \/>\n<meta name=\"twitter:site\" content=\"@consolvis\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Tobias Steckenborn\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.consolvis.de\/en\/blog\/prevent-errors-in-your-sap-cap-applications-with-tools\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.consolvis.de\/en\/blog\/prevent-errors-in-your-sap-cap-applications-with-tools\/\"},\"author\":{\"name\":\"Tobias Steckenborn\",\"@id\":\"https:\/\/www.consolvis.de\/en\/#\/schema\/person\/8295c29f7d7c524bd5bb8adc99297872\"},\"headline\":\"Prevent a whole category of errors in your SAP CAP applications with a few simple tools\",\"datePublished\":\"2021-07-20T07:18:51+00:00\",\"dateModified\":\"2021-07-20T07:34:36+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.consolvis.de\/en\/blog\/prevent-errors-in-your-sap-cap-applications-with-tools\/\"},\"wordCount\":2308,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.consolvis.de\/en\/#organization\"},\"articleSection\":[\"SAP Cloud Application Programming Model\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.consolvis.de\/en\/blog\/prevent-errors-in-your-sap-cap-applications-with-tools\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.consolvis.de\/en\/blog\/prevent-errors-in-your-sap-cap-applications-with-tools\/\",\"url\":\"https:\/\/www.consolvis.de\/en\/blog\/prevent-errors-in-your-sap-cap-applications-with-tools\/\",\"name\":\"Prevent errors in your SAP CAP applications with a few simple tools\",\"isPartOf\":{\"@id\":\"https:\/\/www.consolvis.de\/en\/#website\"},\"datePublished\":\"2021-07-20T07:18:51+00:00\",\"dateModified\":\"2021-07-20T07:34:36+00:00\",\"description\":\"Wouldn\u2019t it be great to prevent a whole category of bugs by arming your SAP Cloud Application Programming Model projects with a few tools? And wouldn\u2019t it be even better if that would also end stylistic discussions about your code?\",\"breadcrumb\":{\"@id\":\"https:\/\/www.consolvis.de\/en\/blog\/prevent-errors-in-your-sap-cap-applications-with-tools\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.consolvis.de\/en\/blog\/prevent-errors-in-your-sap-cap-applications-with-tools\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.consolvis.de\/en\/blog\/prevent-errors-in-your-sap-cap-applications-with-tools\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\/\/www.consolvis.de\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Prevent a whole category of errors in your SAP CAP applications with a few simple tools\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.consolvis.de\/en\/#website\",\"url\":\"https:\/\/www.consolvis.de\/en\/\",\"name\":\"Consolvis GmbH\",\"description\":\"Die SAP Business Technology Platform Berater\",\"publisher\":{\"@id\":\"https:\/\/www.consolvis.de\/en\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.consolvis.de\/en\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.consolvis.de\/en\/#organization\",\"name\":\"Consolvis\",\"url\":\"https:\/\/www.consolvis.de\/en\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.consolvis.de\/en\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.consolvis.de\/wp-content\/uploads\/2018\/11\/C-Logo_neu.png\",\"contentUrl\":\"https:\/\/www.consolvis.de\/wp-content\/uploads\/2018\/11\/C-Logo_neu.png\",\"width\":552,\"height\":542,\"caption\":\"Consolvis\"},\"image\":{\"@id\":\"https:\/\/www.consolvis.de\/en\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/consolvis\/\",\"https:\/\/twitter.com\/consolvis\",\"https:\/\/www.instagram.com\/consolvis\/\",\"https:\/\/www.linkedin.com\/company\/consolvis-gmbh\/\",\"https:\/\/www.youtube.com\/channel\/UCBBAshw8YGzhF54lbNrmtUQ\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.consolvis.de\/en\/#\/schema\/person\/8295c29f7d7c524bd5bb8adc99297872\",\"name\":\"Tobias Steckenborn\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.consolvis.de\/en\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/e51486ab94c01d982d63919a80de7759?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/e51486ab94c01d982d63919a80de7759?s=96&d=mm&r=g\",\"caption\":\"Tobias Steckenborn\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Prevent errors in your SAP CAP applications with a few simple tools","description":"Wouldn\u2019t it be great to prevent a whole category of bugs by arming your SAP Cloud Application Programming Model projects with a few tools? And wouldn\u2019t it be even better if that would also end stylistic discussions about your code?","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.consolvis.de\/en\/blog\/prevent-errors-in-your-sap-cap-applications-with-tools\/","og_locale":"en_US","og_type":"article","og_title":"Prevent errors in your SAP CAP applications with a few simple tools","og_description":"Wouldn\u2019t it be great to prevent a whole category of bugs by arming your SAP Cloud Application Programming Model projects with a few tools? And wouldn\u2019t it be even better if that would also end stylistic discussions about your code?","og_url":"https:\/\/www.consolvis.de\/en\/blog\/prevent-errors-in-your-sap-cap-applications-with-tools\/","og_site_name":"Consolvis GmbH","article_publisher":"https:\/\/www.facebook.com\/consolvis\/","article_published_time":"2021-07-20T07:18:51+00:00","article_modified_time":"2021-07-20T07:34:36+00:00","og_image":[{"width":1280,"height":720,"url":"https:\/\/www.consolvis.de\/wp-content\/uploads\/2021\/07\/Prevent-a-whole-category-of-errors-in-your-SAP-CAP-applications-with-a-few-simple-tools.png","type":"image\/png"}],"author":"Tobias Steckenborn","twitter_card":"summary_large_image","twitter_creator":"@consolvis","twitter_site":"@consolvis","twitter_misc":{"Written by":"Tobias Steckenborn","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.consolvis.de\/en\/blog\/prevent-errors-in-your-sap-cap-applications-with-tools\/#article","isPartOf":{"@id":"https:\/\/www.consolvis.de\/en\/blog\/prevent-errors-in-your-sap-cap-applications-with-tools\/"},"author":{"name":"Tobias Steckenborn","@id":"https:\/\/www.consolvis.de\/en\/#\/schema\/person\/8295c29f7d7c524bd5bb8adc99297872"},"headline":"Prevent a whole category of errors in your SAP CAP applications with a few simple tools","datePublished":"2021-07-20T07:18:51+00:00","dateModified":"2021-07-20T07:34:36+00:00","mainEntityOfPage":{"@id":"https:\/\/www.consolvis.de\/en\/blog\/prevent-errors-in-your-sap-cap-applications-with-tools\/"},"wordCount":2308,"commentCount":0,"publisher":{"@id":"https:\/\/www.consolvis.de\/en\/#organization"},"articleSection":["SAP Cloud Application Programming Model"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.consolvis.de\/en\/blog\/prevent-errors-in-your-sap-cap-applications-with-tools\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.consolvis.de\/en\/blog\/prevent-errors-in-your-sap-cap-applications-with-tools\/","url":"https:\/\/www.consolvis.de\/en\/blog\/prevent-errors-in-your-sap-cap-applications-with-tools\/","name":"Prevent errors in your SAP CAP applications with a few simple tools","isPartOf":{"@id":"https:\/\/www.consolvis.de\/en\/#website"},"datePublished":"2021-07-20T07:18:51+00:00","dateModified":"2021-07-20T07:34:36+00:00","description":"Wouldn\u2019t it be great to prevent a whole category of bugs by arming your SAP Cloud Application Programming Model projects with a few tools? And wouldn\u2019t it be even better if that would also end stylistic discussions about your code?","breadcrumb":{"@id":"https:\/\/www.consolvis.de\/en\/blog\/prevent-errors-in-your-sap-cap-applications-with-tools\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.consolvis.de\/en\/blog\/prevent-errors-in-your-sap-cap-applications-with-tools\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.consolvis.de\/en\/blog\/prevent-errors-in-your-sap-cap-applications-with-tools\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/www.consolvis.de\/en\/"},{"@type":"ListItem","position":2,"name":"Prevent a whole category of errors in your SAP CAP applications with a few simple tools"}]},{"@type":"WebSite","@id":"https:\/\/www.consolvis.de\/en\/#website","url":"https:\/\/www.consolvis.de\/en\/","name":"Consolvis GmbH","description":"Die SAP Business Technology Platform Berater","publisher":{"@id":"https:\/\/www.consolvis.de\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.consolvis.de\/en\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.consolvis.de\/en\/#organization","name":"Consolvis","url":"https:\/\/www.consolvis.de\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.consolvis.de\/en\/#\/schema\/logo\/image\/","url":"https:\/\/www.consolvis.de\/wp-content\/uploads\/2018\/11\/C-Logo_neu.png","contentUrl":"https:\/\/www.consolvis.de\/wp-content\/uploads\/2018\/11\/C-Logo_neu.png","width":552,"height":542,"caption":"Consolvis"},"image":{"@id":"https:\/\/www.consolvis.de\/en\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/consolvis\/","https:\/\/twitter.com\/consolvis","https:\/\/www.instagram.com\/consolvis\/","https:\/\/www.linkedin.com\/company\/consolvis-gmbh\/","https:\/\/www.youtube.com\/channel\/UCBBAshw8YGzhF54lbNrmtUQ"]},{"@type":"Person","@id":"https:\/\/www.consolvis.de\/en\/#\/schema\/person\/8295c29f7d7c524bd5bb8adc99297872","name":"Tobias Steckenborn","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.consolvis.de\/en\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/e51486ab94c01d982d63919a80de7759?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e51486ab94c01d982d63919a80de7759?s=96&d=mm&r=g","caption":"Tobias Steckenborn"}}]}},"_links":{"self":[{"href":"https:\/\/www.consolvis.de\/en\/wp-json\/wp\/v2\/posts\/9766"}],"collection":[{"href":"https:\/\/www.consolvis.de\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.consolvis.de\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.consolvis.de\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.consolvis.de\/en\/wp-json\/wp\/v2\/comments?post=9766"}],"version-history":[{"count":0,"href":"https:\/\/www.consolvis.de\/en\/wp-json\/wp\/v2\/posts\/9766\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.consolvis.de\/en\/wp-json\/wp\/v2\/media\/9795"}],"wp:attachment":[{"href":"https:\/\/www.consolvis.de\/en\/wp-json\/wp\/v2\/media?parent=9766"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.consolvis.de\/en\/wp-json\/wp\/v2\/categories?post=9766"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.consolvis.de\/en\/wp-json\/wp\/v2\/tags?post=9766"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}