Using Documentation Links with Sensei
One of the difficulties with learning a new library, or sharing agreed practices across our team is documenting and creating examples.
Very often we create small example projects, but we don't have them open when working with actual code.
I've often thought it would be great to have the ability to link to our examples, or online examples and be able to go to a URL for more explanation when needed.
With Java, we have JavaDoc comments, which can have a see annotation:
/**
* @see <a href="https://junit.org/junit5/docs/current/user-guide/#writing-tests-annotations">Junit 5 Annotation docs</a>
*/
JavaDoc like this in 3rd party libraries is a great help because we can use the Quick Documentation functionality in IntelliJ to have access to more detailed examples.
![](https://cdn.prod.website-files.com/5fec9210c1841a6c20c6ce81/6022b797289f452ef5ee27f6_5fa5b58b570f5b7310597341_a1uGuO12iy8L1vi1YFiuiU0hpSUGzQwgTWTUEiFHzbQ8dhQK89gDK66KyINSCRoRV4CmBsVejbVbE9NrHMorcRYGn-yQWANc82JYQkjLz-MWVMTxBc4bsuw5a9srL6N31cR1hWwl.png)
But, we all know that comments don't get updated as often as code, and web presence maintenance is often disconnected from library maintenance and sometimes performed by a different team entirely.
How Sensei Helps
Sensei provides the ability to match on library annotations and methods to provide links to long form documentation on a wiki or third party tutorial site.
As an example, I'm using the @Test annotation from JUnit.
The JavaDoc is very detailed, and the Quick Documentation view explains how to use the annotation.
But the official documentation on the web site is often easier to read and has more examples.
When a team starts learning a library, having a set of recommended tutorials, can be very useful.
Sensei has a goto action that we can use to open a URL, allowing us to link to external sites and examples for documentation that we, as a team, find useful.
Implementing the Goto URL
To implement this I would create a search that matches the @Test annotation from Junit.
search:
annotation:
owner:
method: {}
type: "org.junit.jupiter.api.Test"
And then I would add goto actions for each of the URLs I find useful.
e.g.
- https://junit.org/junit5/docs/current/user-guide/#writing-tests-annotations
- https://junit.org/junit5/docs/current/user-guide/#writing-tests-classes-and-methods
The example below would create a single Action JUnit Annotations (learn) which would open both URLs in a browser at the same time.
availableFixes:
- name: "Learn about JUnit Annotations"
actions:
- goto:
type: "URL"
value: "https://junit.org/junit5/docs/current/user-guide/#writing-tests-annotations"=
- goto:
type: "URL"
value: "https://junit.org/junit5/docs/current/user-guide/#writing-tests-classes-and-methods"
And when I activate it in IntelliJ with Alt+Enter I see the context menu which I can select to jump to the documentation.
![](https://cdn.prod.website-files.com/5fec9210c1841a6c20c6ce81/6303adcd68e0ac9f244206ea_parameterizedtest-annotations.png)
Multiple Actions
I might choose to have multiple Actions so that each URL or tutorial has its own option in the alt+enter Quick Fix pop up menu.
For example, for the @Parameterized annotation, I might want to link to the official documentation and a set of online example code.
- https://junit.org/junit5/docs/current/user-guide/#writing-tests-parameterized-tests
- https://github.com/eviltester/junitexamples/blob/master/src/test/java/parameterized/junit5/InitialExampleTest.java
I would simply create a recipe that searches for the annotation:
search:
annotation:
owner:
method: {}
type: "org.junit.jupiter.params.ParameterizedTest"
And links off to the sites I identified as being useful:
availableFixes:
- name: "JUnit Annotations (learn)"
actions:
- goto:
type: "URL"
value: "https://junit.org/junit5/docs/current/user-guide/#writing-tests-annotations"
- name: "What is a JUnit Test? (learn)"
actions:
- goto:
type: "URL"
value: "https://junit.org/junit5/docs/current/user-guide/#writing-tests-classes-and-methods"
Both links would then appear in the pop-up dialog.
![](https://cdn.prod.website-files.com/5fec9210c1841a6c20c6ce81/6022b797326bfb3161c9f730_5fa5b58c45a84530f4aeeb3f_YUthi7ZzZsCUrdK5MMlNPHvtOxDdyJ6ZdExCSrqCO24CMeEn3fCmMCIhFGf-TZxAgKsTVA8G3kKM6ElY4xzBeEyq2Scw1ssdIuV_m4rc9zQL0XJ4FhQ-w7Q06B47s0-4U9veRPL0.png)
Who would benefit?
I would have found this useful when using and learning libraries, especially when leading teams and helping them adopt a new library.
This could also benefit teams creating libraries, by creating a standard set of documentation recipes to help guide people through the adoption of the library or new features in the library.
This would be especially useful if the code maintenance and documentation maintenance are performed by different teams.
You can install Sensei from within IntelliJ using `preferences > plugins` (just search for "sensei secure code").
All the code for this blog post is on Github in the junitexamples module in https://github.com/SecureCodeWarrior/sensei-blog-examples
Alan Richardson has more than twenty years of professional IT experience, working as a developer and at every level of the testing hierarchy from Tester through to Head of Testing. Head of Developer Relations at Secure Code Warrior, he works directly with teams, to improve the development of quality secure code. Alan is the author of four books including “Dear Evil Tester”, and “Java For Testers”. Alan has also created online training courses to help people learn Technical Web Testing and Selenium WebDriver with Java. Alan posts his writing and training videos on SeleniumSimplified.com, EvilTester.com, JavaForTesters.com, and CompendiumDev.co.uk.
![](https://cdn.prod.website-files.com/5fec9210c1841a81c9c6ce7d/66d0b4fa43284a440c24b591_learn-more.avif)
Secure Code Warrior is here for your organization to help you secure code across the entire software development lifecycle and create a culture in which cybersecurity is top of mind. Whether you’re an AppSec Manager, Developer, CISO, or anyone involved in security, we can help your organization reduce risks associated with insecure code.
Book a demoAlan Richardson has more than twenty years of professional IT experience, working as a developer and at every level of the testing hierarchy from Tester through to Head of Testing. Head of Developer Relations at Secure Code Warrior, he works directly with teams, to improve the development of quality secure code. Alan is the author of four books including “Dear Evil Tester”, and “Java For Testers”. Alan has also created online training courses to help people learn Technical Web Testing and Selenium WebDriver with Java. Alan posts his writing and training videos on SeleniumSimplified.com, EvilTester.com, JavaForTesters.com, and CompendiumDev.co.uk.
![](https://cdn.prod.website-files.com/5fec9210c1841a6c20c6ce81/6022b33bded65a8553cfff2b_5f9c8e03fc2fddb0759f45d0_thumb-video-sensei_0.webp)
![](https://cdn.prod.website-files.com/5fec9210c1841a6c20c6ce81/6022b33bded65a8553cfff2b_5f9c8e03fc2fddb0759f45d0_thumb-video-sensei_0.webp)
One of the difficulties with learning a new library, or sharing agreed practices across our team is documenting and creating examples.
Very often we create small example projects, but we don't have them open when working with actual code.
I've often thought it would be great to have the ability to link to our examples, or online examples and be able to go to a URL for more explanation when needed.
With Java, we have JavaDoc comments, which can have a see annotation:
/**
* @see <a href="https://junit.org/junit5/docs/current/user-guide/#writing-tests-annotations">Junit 5 Annotation docs</a>
*/
JavaDoc like this in 3rd party libraries is a great help because we can use the Quick Documentation functionality in IntelliJ to have access to more detailed examples.
![](https://cdn.prod.website-files.com/5fec9210c1841a6c20c6ce81/6022b797289f452ef5ee27f6_5fa5b58b570f5b7310597341_a1uGuO12iy8L1vi1YFiuiU0hpSUGzQwgTWTUEiFHzbQ8dhQK89gDK66KyINSCRoRV4CmBsVejbVbE9NrHMorcRYGn-yQWANc82JYQkjLz-MWVMTxBc4bsuw5a9srL6N31cR1hWwl.png)
But, we all know that comments don't get updated as often as code, and web presence maintenance is often disconnected from library maintenance and sometimes performed by a different team entirely.
How Sensei Helps
Sensei provides the ability to match on library annotations and methods to provide links to long form documentation on a wiki or third party tutorial site.
As an example, I'm using the @Test annotation from JUnit.
The JavaDoc is very detailed, and the Quick Documentation view explains how to use the annotation.
But the official documentation on the web site is often easier to read and has more examples.
When a team starts learning a library, having a set of recommended tutorials, can be very useful.
Sensei has a goto action that we can use to open a URL, allowing us to link to external sites and examples for documentation that we, as a team, find useful.
Implementing the Goto URL
To implement this I would create a search that matches the @Test annotation from Junit.
search:
annotation:
owner:
method: {}
type: "org.junit.jupiter.api.Test"
And then I would add goto actions for each of the URLs I find useful.
e.g.
- https://junit.org/junit5/docs/current/user-guide/#writing-tests-annotations
- https://junit.org/junit5/docs/current/user-guide/#writing-tests-classes-and-methods
The example below would create a single Action JUnit Annotations (learn) which would open both URLs in a browser at the same time.
availableFixes:
- name: "Learn about JUnit Annotations"
actions:
- goto:
type: "URL"
value: "https://junit.org/junit5/docs/current/user-guide/#writing-tests-annotations"=
- goto:
type: "URL"
value: "https://junit.org/junit5/docs/current/user-guide/#writing-tests-classes-and-methods"
And when I activate it in IntelliJ with Alt+Enter I see the context menu which I can select to jump to the documentation.
![](https://cdn.prod.website-files.com/5fec9210c1841a6c20c6ce81/6303adcd68e0ac9f244206ea_parameterizedtest-annotations.png)
Multiple Actions
I might choose to have multiple Actions so that each URL or tutorial has its own option in the alt+enter Quick Fix pop up menu.
For example, for the @Parameterized annotation, I might want to link to the official documentation and a set of online example code.
- https://junit.org/junit5/docs/current/user-guide/#writing-tests-parameterized-tests
- https://github.com/eviltester/junitexamples/blob/master/src/test/java/parameterized/junit5/InitialExampleTest.java
I would simply create a recipe that searches for the annotation:
search:
annotation:
owner:
method: {}
type: "org.junit.jupiter.params.ParameterizedTest"
And links off to the sites I identified as being useful:
availableFixes:
- name: "JUnit Annotations (learn)"
actions:
- goto:
type: "URL"
value: "https://junit.org/junit5/docs/current/user-guide/#writing-tests-annotations"
- name: "What is a JUnit Test? (learn)"
actions:
- goto:
type: "URL"
value: "https://junit.org/junit5/docs/current/user-guide/#writing-tests-classes-and-methods"
Both links would then appear in the pop-up dialog.
![](https://cdn.prod.website-files.com/5fec9210c1841a6c20c6ce81/6022b797326bfb3161c9f730_5fa5b58c45a84530f4aeeb3f_YUthi7ZzZsCUrdK5MMlNPHvtOxDdyJ6ZdExCSrqCO24CMeEn3fCmMCIhFGf-TZxAgKsTVA8G3kKM6ElY4xzBeEyq2Scw1ssdIuV_m4rc9zQL0XJ4FhQ-w7Q06B47s0-4U9veRPL0.png)
Who would benefit?
I would have found this useful when using and learning libraries, especially when leading teams and helping them adopt a new library.
This could also benefit teams creating libraries, by creating a standard set of documentation recipes to help guide people through the adoption of the library or new features in the library.
This would be especially useful if the code maintenance and documentation maintenance are performed by different teams.
You can install Sensei from within IntelliJ using `preferences > plugins` (just search for "sensei secure code").
All the code for this blog post is on Github in the junitexamples module in https://github.com/SecureCodeWarrior/sensei-blog-examples
![](https://cdn.prod.website-files.com/5fec9210c1841a6c20c6ce81/6022b33bded65a8553cfff2b_5f9c8e03fc2fddb0759f45d0_thumb-video-sensei_0.webp)
One of the difficulties with learning a new library, or sharing agreed practices across our team is documenting and creating examples.
Very often we create small example projects, but we don't have them open when working with actual code.
I've often thought it would be great to have the ability to link to our examples, or online examples and be able to go to a URL for more explanation when needed.
With Java, we have JavaDoc comments, which can have a see annotation:
/**
* @see <a href="https://junit.org/junit5/docs/current/user-guide/#writing-tests-annotations">Junit 5 Annotation docs</a>
*/
JavaDoc like this in 3rd party libraries is a great help because we can use the Quick Documentation functionality in IntelliJ to have access to more detailed examples.
![](https://cdn.prod.website-files.com/5fec9210c1841a6c20c6ce81/6022b797289f452ef5ee27f6_5fa5b58b570f5b7310597341_a1uGuO12iy8L1vi1YFiuiU0hpSUGzQwgTWTUEiFHzbQ8dhQK89gDK66KyINSCRoRV4CmBsVejbVbE9NrHMorcRYGn-yQWANc82JYQkjLz-MWVMTxBc4bsuw5a9srL6N31cR1hWwl.png)
But, we all know that comments don't get updated as often as code, and web presence maintenance is often disconnected from library maintenance and sometimes performed by a different team entirely.
How Sensei Helps
Sensei provides the ability to match on library annotations and methods to provide links to long form documentation on a wiki or third party tutorial site.
As an example, I'm using the @Test annotation from JUnit.
The JavaDoc is very detailed, and the Quick Documentation view explains how to use the annotation.
But the official documentation on the web site is often easier to read and has more examples.
When a team starts learning a library, having a set of recommended tutorials, can be very useful.
Sensei has a goto action that we can use to open a URL, allowing us to link to external sites and examples for documentation that we, as a team, find useful.
Implementing the Goto URL
To implement this I would create a search that matches the @Test annotation from Junit.
search:
annotation:
owner:
method: {}
type: "org.junit.jupiter.api.Test"
And then I would add goto actions for each of the URLs I find useful.
e.g.
- https://junit.org/junit5/docs/current/user-guide/#writing-tests-annotations
- https://junit.org/junit5/docs/current/user-guide/#writing-tests-classes-and-methods
The example below would create a single Action JUnit Annotations (learn) which would open both URLs in a browser at the same time.
availableFixes:
- name: "Learn about JUnit Annotations"
actions:
- goto:
type: "URL"
value: "https://junit.org/junit5/docs/current/user-guide/#writing-tests-annotations"=
- goto:
type: "URL"
value: "https://junit.org/junit5/docs/current/user-guide/#writing-tests-classes-and-methods"
And when I activate it in IntelliJ with Alt+Enter I see the context menu which I can select to jump to the documentation.
![](https://cdn.prod.website-files.com/5fec9210c1841a6c20c6ce81/6303adcd68e0ac9f244206ea_parameterizedtest-annotations.png)
Multiple Actions
I might choose to have multiple Actions so that each URL or tutorial has its own option in the alt+enter Quick Fix pop up menu.
For example, for the @Parameterized annotation, I might want to link to the official documentation and a set of online example code.
- https://junit.org/junit5/docs/current/user-guide/#writing-tests-parameterized-tests
- https://github.com/eviltester/junitexamples/blob/master/src/test/java/parameterized/junit5/InitialExampleTest.java
I would simply create a recipe that searches for the annotation:
search:
annotation:
owner:
method: {}
type: "org.junit.jupiter.params.ParameterizedTest"
And links off to the sites I identified as being useful:
availableFixes:
- name: "JUnit Annotations (learn)"
actions:
- goto:
type: "URL"
value: "https://junit.org/junit5/docs/current/user-guide/#writing-tests-annotations"
- name: "What is a JUnit Test? (learn)"
actions:
- goto:
type: "URL"
value: "https://junit.org/junit5/docs/current/user-guide/#writing-tests-classes-and-methods"
Both links would then appear in the pop-up dialog.
![](https://cdn.prod.website-files.com/5fec9210c1841a6c20c6ce81/6022b797326bfb3161c9f730_5fa5b58c45a84530f4aeeb3f_YUthi7ZzZsCUrdK5MMlNPHvtOxDdyJ6ZdExCSrqCO24CMeEn3fCmMCIhFGf-TZxAgKsTVA8G3kKM6ElY4xzBeEyq2Scw1ssdIuV_m4rc9zQL0XJ4FhQ-w7Q06B47s0-4U9veRPL0.png)
Who would benefit?
I would have found this useful when using and learning libraries, especially when leading teams and helping them adopt a new library.
This could also benefit teams creating libraries, by creating a standard set of documentation recipes to help guide people through the adoption of the library or new features in the library.
This would be especially useful if the code maintenance and documentation maintenance are performed by different teams.
You can install Sensei from within IntelliJ using `preferences > plugins` (just search for "sensei secure code").
All the code for this blog post is on Github in the junitexamples module in https://github.com/SecureCodeWarrior/sensei-blog-examples
Alan Richardson has more than twenty years of professional IT experience, working as a developer and at every level of the testing hierarchy from Tester through to Head of Testing. Head of Developer Relations at Secure Code Warrior, he works directly with teams, to improve the development of quality secure code. Alan is the author of four books including “Dear Evil Tester”, and “Java For Testers”. Alan has also created online training courses to help people learn Technical Web Testing and Selenium WebDriver with Java. Alan posts his writing and training videos on SeleniumSimplified.com, EvilTester.com, JavaForTesters.com, and CompendiumDev.co.uk.
![](https://cdn.prod.website-files.com/5fec9210c1841a81c9c6ce7d/66d0b4fa43284a440c24b591_learn-more.avif)
Click on the link below and download the PDF of this one pager.
DownloadSecure Code Warrior is here for your organization to help you secure code across the entire software development lifecycle and create a culture in which cybersecurity is top of mind. Whether you’re an AppSec Manager, Developer, CISO, or anyone involved in security, we can help your organization reduce risks associated with insecure code.
View reportBook a demoAlan Richardson has more than twenty years of professional IT experience, working as a developer and at every level of the testing hierarchy from Tester through to Head of Testing. Head of Developer Relations at Secure Code Warrior, he works directly with teams, to improve the development of quality secure code. Alan is the author of four books including “Dear Evil Tester”, and “Java For Testers”. Alan has also created online training courses to help people learn Technical Web Testing and Selenium WebDriver with Java. Alan posts his writing and training videos on SeleniumSimplified.com, EvilTester.com, JavaForTesters.com, and CompendiumDev.co.uk.
One of the difficulties with learning a new library, or sharing agreed practices across our team is documenting and creating examples.
Very often we create small example projects, but we don't have them open when working with actual code.
I've often thought it would be great to have the ability to link to our examples, or online examples and be able to go to a URL for more explanation when needed.
With Java, we have JavaDoc comments, which can have a see annotation:
/**
* @see <a href="https://junit.org/junit5/docs/current/user-guide/#writing-tests-annotations">Junit 5 Annotation docs</a>
*/
JavaDoc like this in 3rd party libraries is a great help because we can use the Quick Documentation functionality in IntelliJ to have access to more detailed examples.
![](https://cdn.prod.website-files.com/5fec9210c1841a6c20c6ce81/6022b797289f452ef5ee27f6_5fa5b58b570f5b7310597341_a1uGuO12iy8L1vi1YFiuiU0hpSUGzQwgTWTUEiFHzbQ8dhQK89gDK66KyINSCRoRV4CmBsVejbVbE9NrHMorcRYGn-yQWANc82JYQkjLz-MWVMTxBc4bsuw5a9srL6N31cR1hWwl.png)
But, we all know that comments don't get updated as often as code, and web presence maintenance is often disconnected from library maintenance and sometimes performed by a different team entirely.
How Sensei Helps
Sensei provides the ability to match on library annotations and methods to provide links to long form documentation on a wiki or third party tutorial site.
As an example, I'm using the @Test annotation from JUnit.
The JavaDoc is very detailed, and the Quick Documentation view explains how to use the annotation.
But the official documentation on the web site is often easier to read and has more examples.
When a team starts learning a library, having a set of recommended tutorials, can be very useful.
Sensei has a goto action that we can use to open a URL, allowing us to link to external sites and examples for documentation that we, as a team, find useful.
Implementing the Goto URL
To implement this I would create a search that matches the @Test annotation from Junit.
search:
annotation:
owner:
method: {}
type: "org.junit.jupiter.api.Test"
And then I would add goto actions for each of the URLs I find useful.
e.g.
- https://junit.org/junit5/docs/current/user-guide/#writing-tests-annotations
- https://junit.org/junit5/docs/current/user-guide/#writing-tests-classes-and-methods
The example below would create a single Action JUnit Annotations (learn) which would open both URLs in a browser at the same time.
availableFixes:
- name: "Learn about JUnit Annotations"
actions:
- goto:
type: "URL"
value: "https://junit.org/junit5/docs/current/user-guide/#writing-tests-annotations"=
- goto:
type: "URL"
value: "https://junit.org/junit5/docs/current/user-guide/#writing-tests-classes-and-methods"
And when I activate it in IntelliJ with Alt+Enter I see the context menu which I can select to jump to the documentation.
![](https://cdn.prod.website-files.com/5fec9210c1841a6c20c6ce81/6303adcd68e0ac9f244206ea_parameterizedtest-annotations.png)
Multiple Actions
I might choose to have multiple Actions so that each URL or tutorial has its own option in the alt+enter Quick Fix pop up menu.
For example, for the @Parameterized annotation, I might want to link to the official documentation and a set of online example code.
- https://junit.org/junit5/docs/current/user-guide/#writing-tests-parameterized-tests
- https://github.com/eviltester/junitexamples/blob/master/src/test/java/parameterized/junit5/InitialExampleTest.java
I would simply create a recipe that searches for the annotation:
search:
annotation:
owner:
method: {}
type: "org.junit.jupiter.params.ParameterizedTest"
And links off to the sites I identified as being useful:
availableFixes:
- name: "JUnit Annotations (learn)"
actions:
- goto:
type: "URL"
value: "https://junit.org/junit5/docs/current/user-guide/#writing-tests-annotations"
- name: "What is a JUnit Test? (learn)"
actions:
- goto:
type: "URL"
value: "https://junit.org/junit5/docs/current/user-guide/#writing-tests-classes-and-methods"
Both links would then appear in the pop-up dialog.
![](https://cdn.prod.website-files.com/5fec9210c1841a6c20c6ce81/6022b797326bfb3161c9f730_5fa5b58c45a84530f4aeeb3f_YUthi7ZzZsCUrdK5MMlNPHvtOxDdyJ6ZdExCSrqCO24CMeEn3fCmMCIhFGf-TZxAgKsTVA8G3kKM6ElY4xzBeEyq2Scw1ssdIuV_m4rc9zQL0XJ4FhQ-w7Q06B47s0-4U9veRPL0.png)
Who would benefit?
I would have found this useful when using and learning libraries, especially when leading teams and helping them adopt a new library.
This could also benefit teams creating libraries, by creating a standard set of documentation recipes to help guide people through the adoption of the library or new features in the library.
This would be especially useful if the code maintenance and documentation maintenance are performed by different teams.
You can install Sensei from within IntelliJ using `preferences > plugins` (just search for "sensei secure code").
All the code for this blog post is on Github in the junitexamples module in https://github.com/SecureCodeWarrior/sensei-blog-examples
Table of contents
Alan Richardson has more than twenty years of professional IT experience, working as a developer and at every level of the testing hierarchy from Tester through to Head of Testing. Head of Developer Relations at Secure Code Warrior, he works directly with teams, to improve the development of quality secure code. Alan is the author of four books including “Dear Evil Tester”, and “Java For Testers”. Alan has also created online training courses to help people learn Technical Web Testing and Selenium WebDriver with Java. Alan posts his writing and training videos on SeleniumSimplified.com, EvilTester.com, JavaForTesters.com, and CompendiumDev.co.uk.
![](https://cdn.prod.website-files.com/5fec9210c1841a81c9c6ce7d/66d0b4fa43284a440c24b591_learn-more.avif)
Secure Code Warrior is here for your organization to help you secure code across the entire software development lifecycle and create a culture in which cybersecurity is top of mind. Whether you’re an AppSec Manager, Developer, CISO, or anyone involved in security, we can help your organization reduce risks associated with insecure code.
Book a demoDownloadResources to get you started
DigitalOcean Decreases Security Debt with Secure Code Warrior
DigitalOcean's use of Secure Code Warrior training has significantly reduced security debt, allowing teams to focus more on innovation and productivity. The improved security has strengthened their product quality and competitive edge. Looking ahead, the SCW Trust Score will help them further enhance security practices and continue driving innovation.
Resources to get you started
Women in Security are Winning: How the AWSN is Setting Up a New Generation of Security Superwomen
Secure-by-Design is the latest initiative on everyone’s lips, and the Australian government, collaborating with CISA at the highest levels of global governance, is guiding a higher standard of software quality and security from vendors.
SCW Trust Agent - Visibility and Control to Scale Developer Driven Security
SCW Trust Agent, introduced by Secure Code Warrior, offers security leaders the visibility and control needed to scale developer-driven security within organizations. By connecting to code repositories, it assesses code commit metadata, inspects developers, programming languages used, and shipment timestamps to determine developers' security knowledge.