<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wiki.owasp.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Carlos+Pantelides</id>
		<title>OWASP - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.owasp.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Carlos+Pantelides"/>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php/Special:Contributions/Carlos_Pantelides"/>
		<updated>2026-05-14T11:07:36Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.27.2</generator>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=CRV2_CodeReviewAgile&amp;diff=175398</id>
		<title>CRV2 CodeReviewAgile</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=CRV2_CodeReviewAgile&amp;diff=175398"/>
				<updated>2014-05-21T14:49:14Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Pantelides: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Code Reviewing an Agile Project==&lt;br /&gt;
&lt;br /&gt;
If you are going to review an Agile Team project code, the best thing that you can do is give this guide to that Team as early as possible and most of your work will be done for you. Or better yet, integrate yourself to the Team.&lt;br /&gt;
  &lt;br /&gt;
Code review must be done at least at the end of every user story and be very fast in order to not introduce delays and detect any error as soon as possible. It's better to do that in every commit to the code repository. That is the reason that peer review is the prefered method for agile code review. Nevertheless, as security review requieres some extra specialization, perhaps the best way is to integrate the security code reviewier with the Team.&lt;br /&gt;
&lt;br /&gt;
These are some simple steps on how to integrate code reviews in an agile project:&lt;br /&gt;
&lt;br /&gt;
* Configure your Continous Integration system to run static code analysis tools.&lt;br /&gt;
* Train your team on this guide.&lt;br /&gt;
* Train your team on OWASP TopTen.&lt;br /&gt;
* Use this guide when doing Peer Review.&lt;br /&gt;
* Determine the frequency of the review. A good place is at the end of every loop.&lt;br /&gt;
* Keep in mind that besides the code, there is the test code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Some definitions about Agile==&lt;br /&gt;
&lt;br /&gt;
The Agile name is an umbrella for quite a lot of practices that range from programming, to testing, to project management and everything in between. There are many flavors of agile, perhaps as many as practitioners. It is like an heterogeneous reference framework and you are free to use what you want.&lt;br /&gt;
&lt;br /&gt;
Agile has some key practices that could affect the way the code is reviewed. First, when the review is done and then, the code itself.&lt;br /&gt;
&lt;br /&gt;
Agile Development(AD) is well suited for code review, as two of its practices are &amp;quot;pair programming&amp;quot; and &amp;quot;peer review&amp;quot;. AD incorporates code review in itself, in what traditionally was seem as another phase.&lt;br /&gt;
&lt;br /&gt;
Agile blurs the difference between developing and testing, and so does with code review. It is not an external activity. Agile tries to keep the code testing and review as near as possible to the development phase, there is no such thing as the develop, test, code review cycle.&lt;br /&gt;
&lt;br /&gt;
It is a common practice to define short development cycles. At the end of each one, all the code must be production quality code. Its funtionality may be incomplete, but it must add some value. That affects the review process as it must be continuous.&lt;br /&gt;
&lt;br /&gt;
===Pair Programming===&lt;br /&gt;
&lt;br /&gt;
This technique is quite controversial, but when it is adopted it has the benefits of making better code, as there is one programmer supervising cooperatively the other one's work. If both programmers know this guide, they will apply it continuously.&lt;br /&gt;
In pair program there are 2 roles, the programmer (pig) and the supervisor (chicken). Basically, what the supervisor does is control the work of the programmer. In this process, a code review might be part of it and it can be easily integrated since the major responsibility of the supervisor is to regulate the programmer’s work.&lt;br /&gt;
&lt;br /&gt;
===Continuous Integration===&lt;br /&gt;
&lt;br /&gt;
It is a practice from eXtreme Programming (link to the book) based upon that team programming is not a divide and conquer problem but a divide, conquer and integrate problem and that integrate could be the hardest step. In order to mitigate the impact, the integration should be as frequently as there are commits to the repository. An automated task becomes aware of any change and triggers the build and test process. If there is any error, the committer get notified so he or she can fix it before it accumulates with other errors.&lt;br /&gt;
&lt;br /&gt;
===Peer Review===&lt;br /&gt;
&lt;br /&gt;
This one is enforced by the usage of tools like Jenkins that ask another user for a code review before commiting to the versioning system.&lt;br /&gt;
&lt;br /&gt;
===Testing===&lt;br /&gt;
&lt;br /&gt;
The role of testers... some people thinks that there is almost no place for the traditional tester role. Automated testing requires a tester to define the tests but not to execute them. This tester must be almost a programmer or work with a programmer.&lt;br /&gt;
&lt;br /&gt;
In AD, test is so fundamental, that the xDD pervades Agile, test first, test earlier.&lt;br /&gt;
&lt;br /&gt;
Agile projects tend to use a lot of automated testing, in order to review an Agile Project, you will have to extend the review to the tests.&lt;br /&gt;
&lt;br /&gt;
Some guide taken from (I can't remember but searching...)&lt;br /&gt;
*Are there enough tests?&lt;br /&gt;
*Is the code covered by the tests? Code coverage measure main value is to find unused code.&lt;br /&gt;
*Are there the trivial tests? They are as needed as any other test.&lt;br /&gt;
*Are there commented out tests? Commented out tests means that some one made a test that the code could not pass or take a long time to run.&lt;br /&gt;
*Are boundary conditions tested? These are the tests around maximum and minimum values or near a change in a condition.&lt;br /&gt;
*Are bugs exhaustively tested? That is, is an off-by-one bug is found, are there boundary tests for that condition?&lt;br /&gt;
*Are the test automatic? If the tests requiere manual intervention, they will not be run.&lt;br /&gt;
*Do the tests conform to F.I.R.S.T.?&lt;br /&gt;
  Fast: a slow test is a candidate for removal, as it slows down the &amp;quot;make test, implement, test, refactor&amp;quot; cycle.&lt;br /&gt;
  Independent: one test can not depend on the execution of another one, the order should not matter.&lt;br /&gt;
  Repeatable: one test should give always the same result in any environment if nothing has changed in the code.&lt;br /&gt;
  Self-validating: the result of a test should be Pass or Fail, nothing else. There should not be any manual intervention needed.&lt;br /&gt;
  Timely: the test should be written before the code. That can not be detected with code review, but you can always see the logs of the versioning system.&lt;br /&gt;
&lt;br /&gt;
===Refactoring===&lt;br /&gt;
&lt;br /&gt;
Refactoring is the art of changing the code with out changing its behavior. In order to refactor, there must exists a rich battery of tests.&lt;br /&gt;
&lt;br /&gt;
The problem with refactoring, is that thanks to the heavy testing, you can trust that the interface does not change, but behind it, the code can be very volatile. You have to review the code continously, another argument for peer review and automatic static analysis.&lt;br /&gt;
&lt;br /&gt;
==References and sources==&lt;br /&gt;
&lt;br /&gt;
Clean Code: A handbook for Agile Software Craftsmanship - Robert C. Martin&lt;br /&gt;
&lt;br /&gt;
Extreme Programming Explained: embrace change - Kent Beck with Cynthia Andres&lt;br /&gt;
&lt;br /&gt;
http://groups.yahoo.com/group/foro-agiles/&lt;br /&gt;
&lt;br /&gt;
http://martinfowler.com/articles/continuousIntegration.html&lt;br /&gt;
&lt;br /&gt;
http://martinfowler.com/bliki/TestCoverage.html&lt;br /&gt;
&lt;br /&gt;
not used http://refactoring.com/&lt;br /&gt;
&lt;br /&gt;
not used http://dddcommunity.org/&lt;br /&gt;
&lt;br /&gt;
=I am not sure about keeping the following sections=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Clean Code and &amp;quot;Smells&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The agile community is very committed to code quality. A by product is the concept of Clean Code and its smells, its very handy to be familiar with this topic, ...&lt;br /&gt;
&lt;br /&gt;
==The Agile Ecosystem==&lt;br /&gt;
&lt;br /&gt;
    bdd----------------------------------------------------------------------+&lt;br /&gt;
     |                                                                       |&lt;br /&gt;
    tdd-------------------------------------------------------------+        |&lt;br /&gt;
     |                                                              |        |&lt;br /&gt;
     +----+--&amp;gt;   pair programming --------+--&amp;gt; peer review -----&amp;gt; continuous integration&lt;br /&gt;
          |  ( collective ownership )     |&lt;br /&gt;
          +--&amp;gt;  individual programming ---+&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===The XDD===&lt;br /&gt;
&lt;br /&gt;
There are many agile practices related to what drives the development of a project, what they have in common is that they could generate testing code. As a security practicioner, there are two aspects of interest. One, sometimes useful is called &amp;quot;test coverage&amp;quot; and it is automatically calculated. 100% code coverage does not mean a good coverage neither a 60% a bad one. It is very difficult to measure the second aspect, the quality&lt;br /&gt;
of the test. There is possitive testing, that aims at the added value of every piece of software and negative testing, related to bugs and security.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Test Driven Development====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TDD is the practice of making the test before coding, it is the extremme application of the &amp;quot;test early&amp;quot; principle. The idea is that the code always will be tested as the test predates the code itself. A very important side effect is that it forces to simplify the code to make it testeable. It could be very low level with very isolated components, called &amp;quot;unit testing&amp;quot; and high level, when it tests clusters of interrelated components, called &amp;quot;functional testing&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
To read more about code coverage: [https://www.owasp.org/index.php/Code_Review_Coverage]&lt;br /&gt;
&lt;br /&gt;
====Behavior Driven Development====&lt;br /&gt;
&lt;br /&gt;
This practice builds upon TDD, providing an interface to non-specialists users, shaping the tests around full blown scenarios. As TDD, it generates testing code. &lt;br /&gt;
&lt;br /&gt;
====Domain Driven Design====&lt;br /&gt;
&lt;br /&gt;
This practice consist of... It does not generate code itself, but the architecture. It is very popular among the Agile people, so it is very important to be familiar with. Perhaps the most useful concept is &amp;quot;ubiquitous language&amp;quot;.&lt;/div&gt;</summary>
		<author><name>Carlos Pantelides</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=CRV2_ClientSideCodeJScript&amp;diff=175397</id>
		<title>CRV2 ClientSideCodeJScript</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=CRV2_ClientSideCodeJScript&amp;diff=175397"/>
				<updated>2014-05-21T14:28:23Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Pantelides: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
JavaScript has several known security vulnerabilities, with HTML5 and JavaScript becoming more prevalent in web sites today and with more web sites moving to responsive web design with its dependence on JavaScript the code reviewer needs to understand what vulnerabilities to look for.&lt;br /&gt;
&lt;br /&gt;
The most significant vulnerabilities in JavaScript is cross-site scripting (XSS) and Document Object Model, DOM-based XSS.&lt;br /&gt;
&lt;br /&gt;
Detection of DOM-based XSS can be challenging. This is cause by the following reasons.&lt;br /&gt;
&lt;br /&gt;
* JavaScript is often obfuscated to protect intellectual property. &lt;br /&gt;
* JavaScript is often compressed out of concerned for bandwidth.&lt;br /&gt;
&lt;br /&gt;
In both of these cases it is strongly recommended the code review be able to review the JavaScript before it has been obfuscated and or compressed. &lt;br /&gt;
&lt;br /&gt;
Another aspect that makes code review of JavaScript challenging is its reliance of large frameworks such as Microsoft .Net and Java Server Faces and the use of JavaScript frameworks, such as JQuery, Knockout, Angular, Backbone. These frameworks aggravate the problem because the code can only be fully analyzed given the source code of the framework itself. These frameworks are usually several orders of magnitude larger then the code the code reviewer needs to review.  Because of time and money most companies simple accept that these frameworks are secure or the risks are low and acceptable to the organization.&lt;br /&gt;
&lt;br /&gt;
Because of these challenges we recommend a hybrid analysis for JavaScript. Manual source to sink validation when necessary, static analysis with black-box testing and taint testing. &lt;br /&gt;
&lt;br /&gt;
First use a static analysis. Code Reviewer and the organization needs to understand that because of event-driven behaviors, complex dependencies between HTML DOM and JavaScript code, and asynchronous communication with the server side static analysis will always fall short and may show both positive, false, false –positive, and positive-false findings.&lt;br /&gt;
&lt;br /&gt;
Black-box traditional methods detection of reflected or stored XSS needs to be preformed. However this approach will not work for DOM-based XSS vulnerabilities.  &lt;br /&gt;
&lt;br /&gt;
Taint analysis needs to be incorporated into static analysis engine. Taint Analysis attempts to identify variables that have been 'tainted' with user controllable input and traces them to possible vulnerable functions also known as a 'sink'. If the tainted variable gets passed to a sink without first being sanitized it is flagged as vulnerability.&lt;br /&gt;
&lt;br /&gt;
Second the code reviewer needs to be certain the code was tested with JavaScript was turned off to make sure all client sided data validation was also validated on the server side.&lt;br /&gt;
&lt;br /&gt;
Code examples of JavaScript vulnerabilities.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;html&amp;gt;&lt;br /&gt;
 &amp;lt;script type=”text/javascript”&amp;gt;&lt;br /&gt;
 var pos=document.URL.indexOf(“name=”)+5;&lt;br /&gt;
 document.write( document.URL.substring(pos,document.URL.length));&lt;br /&gt;
 &amp;lt;/script&amp;gt;&lt;br /&gt;
 &amp;lt;html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Explanation: An attacker can send a link such as “http://hostname/welcome.html#name=&amp;lt;script&amp;gt;alert(1)&amp;lt;/script&amp;gt; to the victim resulting in the victim’s browser executing the injected client-side code.&lt;br /&gt;
&lt;br /&gt;
 # var url = document.location.url;&lt;br /&gt;
 # var loginIdx = url.indexOf(‘login’);&lt;br /&gt;
 # var loginSuffix = url.substring(loginIdx);&lt;br /&gt;
 # url = ‘http://mySite/html/sso/’ + loginSuffix;&lt;br /&gt;
 # document.location.url = url;&lt;br /&gt;
&lt;br /&gt;
Line 5 may be a false-positive and prove to be safe code or it may be open to “Open redirect attack” with taint analysis the static analysis should be able to correctly identified if this vulnerability exists. If static analysis relies only on black-box component this code will have flagged as vulnerable requiring the code reviewer to do a complete source to sink review. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For Javascript and Session handling see [https://www.owasp.org/index.php/CRV2_SessionHandling Session Handling]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
# http://docstore.mik.ua/orelly/web/jscript/ch20_04.html&lt;br /&gt;
# https://www.owasp.org/index.php/Static_Code_Analysis&lt;br /&gt;
# http://www.cs.tau.ac.il/~omertrip/fse11/paper.pdf&lt;br /&gt;
# http://www.jshint.com/about/&lt;br /&gt;
# https://github.com/mozilla/doctorjs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Three points of validity are required for Javascript codes:&lt;br /&gt;
# Have all the logic server-side, Javascript is only the butler&lt;br /&gt;
# Check for all sorts of XSS DOM Attacks&lt;br /&gt;
# Check for insecure Javascript libraries and update them frequently.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Javascript uses strings to create DOM elements. This can lead to XSS attacks. All input should be sanitized before being converted to DOM objects.&lt;br /&gt;
&lt;br /&gt;
Javascript libraries are not? prone to attack. Most of them have flaws in them, recent jQuery flaw (evaluating the document.location.hash, allowing XSS to be embedded after # in location) caused Drupal (which is generally a safe system) to allow admin user creation for attackers!&lt;/div&gt;</summary>
		<author><name>Carlos Pantelides</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=CRV2_SessionHandling&amp;diff=175396</id>
		<title>CRV2 SessionHandling</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=CRV2_SessionHandling&amp;diff=175396"/>
				<updated>2014-05-21T14:27:46Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Pantelides: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==General Considerations==&lt;br /&gt;
# If the system is critical, Session IDs should be cryptographically secure (i.e non determinable)&lt;br /&gt;
# In big systems, sessions should not be stored in files (default PHP behavior). They should be stored in memory or in databases, to prevent DOS attacks on new sessions.&lt;br /&gt;
# As soon as a confidential or higher session is formed for a user, they should have all their traffic transmitted through SSL. SessionID is almost as important as passwords.&lt;br /&gt;
# A policy should be defined and forced on an application, to define the number of sessions a user can have. (One, Many, etc.) If this is left vague, it usually leads to security flaws.&lt;br /&gt;
# Sessions '''require''' a general timeout, which happens at a certain time after creation (usually a week), and an idle timeout, which happens after a certain time of the session being idle (usually 30 minutes).&lt;br /&gt;
# The idle timeout can be changed depending on the nature of the application (smaller for banking applications, larger for email composing clients)&lt;br /&gt;
# The idle timeout doesn't have to be precise. The application can check for it every 2 minutes, and flush all timed-out idle sessions.&lt;br /&gt;
# Sessions should be rolled when they are elevated. Rolling means that the session-id should be changed, and the session information should be transferred to the new id.&lt;br /&gt;
# Sessions need to be cleared out on logout. It is a good idea to dispose of the session-id on logout as well.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Session Attacks==&lt;br /&gt;
Generally three sorts of session attacks are possible:&lt;br /&gt;
# Session Hijacking: stealing someone's session-id, and using it to impersonate that user.&lt;br /&gt;
# Session Fixation: setting someone's session-id to a predefined value, and impersonating them using that known value&lt;br /&gt;
# Session Elevation: when the importance of a session is changed, but its ID is not.&lt;br /&gt;
&lt;br /&gt;
===Session Hijacking===&lt;br /&gt;
&lt;br /&gt;
# Mostly done via XSS attacks, mostly can be prevented by HTTP-Only session cookies (unless Javascript code requires access to them).&lt;br /&gt;
# (charly proposes to eliminate this...) It's generally a good idea for Javascript not to need access to session cookies, as preventing all flavors of XSS is usually the toughest part of hardening a system.&lt;br /&gt;
# Session-ids should be placed inside cookies, and not in URLs. URL informations are stored in browser's history, and HTTP Referrers, and can be accessed by attackers.&lt;br /&gt;
# (...and add this) As cookies can be accessed by default from javascript and preventing all flavors of XSS is usually the toughest part of hardening a system, there is an attribute called &amp;quot;HTTPOnly&amp;quot;, that forbids this access. The session cookie should has this attribute set. Anyway, as there is no need to access a session cookie from the client, you should get suspicious about client side code that depends on this access.&lt;br /&gt;
# Geographical location checking can help detect simple hijacking scenarios. Advanced hijackers use the same IP (or range) of the victim.&lt;br /&gt;
# An active session should be warned when it is accessed from another location.&lt;br /&gt;
# An active users should be warned when s/he has an active session somewhere else (if the policy allows multiple sessions for a single user).&lt;br /&gt;
&lt;br /&gt;
===Session Fixation===&lt;br /&gt;
# If the application sees a new session-id that is not present in the pool, it should be rejected and a new session-id should be advertised. This is the sole method to prevent fixation.&lt;br /&gt;
# All the session-ids should be generated by the application, and then stored in a pool to be checked later for. Application is the sole authority for session generation.&lt;br /&gt;
&lt;br /&gt;
===Session Elevation===&lt;br /&gt;
# Whenever a session is elevated (login, logout, certain authorization), it should be rolled.&lt;br /&gt;
# Many applications create sessions for visitors as well (and not just authenticated users). They should definitely roll the session on elevation, because the user expects the application to treat them securely after they login.&lt;br /&gt;
# When a down-elevation occurs, the session information regarding the higher level should be flushed.&lt;/div&gt;</summary>
		<author><name>Carlos Pantelides</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=CRV2_ClientSideCodeJScript&amp;diff=175395</id>
		<title>CRV2 ClientSideCodeJScript</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=CRV2_ClientSideCodeJScript&amp;diff=175395"/>
				<updated>2014-05-21T12:21:54Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Pantelides: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
JavaScript has several known security vulnerabilities, with HTML5 and JavaScript becoming more prevalent in web sites today and with more web sites moving to responsive web design with its dependence on JavaScript the code reviewer needs to understand what vulnerabilities to look for.&lt;br /&gt;
&lt;br /&gt;
The most significant vulnerabilities in JavaScript is cross-site scripting (XSS) and Document Object Model, DOM-based XSS.&lt;br /&gt;
&lt;br /&gt;
Detection of DOM-based XSS can be challenging. This is cause by the following reasons.&lt;br /&gt;
&lt;br /&gt;
* JavaScript is often obfuscated to protect intellectual property. &lt;br /&gt;
* JavaScript is often compressed out of concerned for bandwidth.&lt;br /&gt;
&lt;br /&gt;
In both of these cases it is strongly recommended the code review be able to review the JavaScript before it has been obfuscated and or compressed. &lt;br /&gt;
&lt;br /&gt;
Another aspect that makes code review of JavaScript challenging is its reliance of large frameworks such as Microsoft .Net and Java Server Faces and the use of JavaScript frameworks, such as JQuery, Knockout, Angular, Backbone. These frameworks aggravate the problem because the code can only be fully analyzed given the source code of the framework itself. These frameworks are usually several orders of magnitude larger then the code the code reviewer needs to review.  Because of time and money most companies simple accept that these frameworks are secure or the risks are low and acceptable to the organization.&lt;br /&gt;
&lt;br /&gt;
Because of these challenges we recommend a hybrid analysis for JavaScript. Manual source to sink validation when necessary, static analysis with black-box testing and taint testing. &lt;br /&gt;
&lt;br /&gt;
First use a static analysis. Code Reviewer and the organization needs to understand that because of event-driven behaviors, complex dependencies between HTML DOM and JavaScript code, and asynchronous communication with the server side static analysis will always fall short and may show both positive, false, false –positive, and positive-false findings.&lt;br /&gt;
&lt;br /&gt;
Black-box traditional methods detection of reflected or stored XSS needs to be preformed. However this approach will not work for DOM-based XSS vulnerabilities.  &lt;br /&gt;
&lt;br /&gt;
Taint analysis needs to be incorporated into static analysis engine. Taint Analysis attempts to identify variables that have been 'tainted' with user controllable input and traces them to possible vulnerable functions also known as a 'sink'. If the tainted variable gets passed to a sink without first being sanitized it is flagged as vulnerability.&lt;br /&gt;
&lt;br /&gt;
Second the code reviewer needs to be certain the code was tested with JavaScript was turned off to make sure all client sided data validation was also validated on the server side.&lt;br /&gt;
&lt;br /&gt;
Code examples of JavaScript vulnerabilities.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;html&amp;gt;&lt;br /&gt;
 &amp;lt;script type=”text/javascript”&amp;gt;&lt;br /&gt;
 var pos=document.URL.indexOf(“name=”)+5;&lt;br /&gt;
 document.write( document.URL.substring(pos,document.URL.length));&lt;br /&gt;
 &amp;lt;/script&amp;gt;&lt;br /&gt;
 &amp;lt;html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Explanation: An attacker can send a link such as “http://hostname/welcome.html#name=&amp;lt;script&amp;gt;alert(1)&amp;lt;/script&amp;gt; to the victim resulting in the victim’s browser executing the injected client-side code.&lt;br /&gt;
&lt;br /&gt;
 # var url = document.location.url;&lt;br /&gt;
 # var loginIdx = url.indexOf(‘login’);&lt;br /&gt;
 # var loginSuffix = url.substring(loginIdx);&lt;br /&gt;
 # url = ‘http://mySite/html/sso/’ + loginSuffix;&lt;br /&gt;
 # document.location.url = url;&lt;br /&gt;
&lt;br /&gt;
Line 5 may be a false-positive and prove to be safe code or it may be open to “Open redirect attack” with taint analysis the static analysis should be able to correctly identified if this vulnerability exists. If static analysis relies only on black-box component this code will have flagged as vulnerable requiring the code reviewer to do a complete source to sink review. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Javascript and Session handling==&lt;br /&gt;
&lt;br /&gt;
Session handling is almost always done with cookies. In order to protect from Session Hijack (see link), there is an attribute called &amp;quot;secure&amp;quot; (see Session Handling), that forbids the access to the session cookie from javascript. Anyway, as there is no need to access a session cookie from the client, you should get suspicious about client side code that depends on this access.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
# http://docstore.mik.ua/orelly/web/jscript/ch20_04.html&lt;br /&gt;
# https://www.owasp.org/index.php/Static_Code_Analysis&lt;br /&gt;
# http://www.cs.tau.ac.il/~omertrip/fse11/paper.pdf&lt;br /&gt;
# http://www.jshint.com/about/&lt;br /&gt;
# https://github.com/mozilla/doctorjs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Three points of validity are required for Javascript codes:&lt;br /&gt;
# Have all the logic server-side, Javascript is only the butler&lt;br /&gt;
# Check for all sorts of XSS DOM Attacks&lt;br /&gt;
# Check for insecure Javascript libraries and update them frequently.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Javascript uses strings to create DOM elements. This can lead to XSS attacks. All input should be sanitized before being converted to DOM objects.&lt;br /&gt;
&lt;br /&gt;
Javascript libraries are not? prone to attack. Most of them have flaws in them, recent jQuery flaw (evaluating the document.location.hash, allowing XSS to be embedded after # in location) caused Drupal (which is generally a safe system) to allow admin user creation for attackers!&lt;/div&gt;</summary>
		<author><name>Carlos Pantelides</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=CRV2_ClientSideCodeJScript&amp;diff=175390</id>
		<title>CRV2 ClientSideCodeJScript</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=CRV2_ClientSideCodeJScript&amp;diff=175390"/>
				<updated>2014-05-21T12:03:48Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Pantelides: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
JavaScript has several known security vulnerabilities, with HTML5 and JavaScript becoming more prevalent in web sites today and with more web sites moving to responsive web design with its dependence on JavaScript the code reviewer needs to understand what vulnerabilities to look for.&lt;br /&gt;
&lt;br /&gt;
The most significant vulnerabilities in JavaScript is cross-site scripting (XSS) and Document Object Model, DOM-based XSS.&lt;br /&gt;
&lt;br /&gt;
Detection of DOM-based XSS can be challenging. This is cause by the following reasons.&lt;br /&gt;
&lt;br /&gt;
* JavaScript is often obfuscated to protect intellectual property. &lt;br /&gt;
* JavaScript is often compressed out of concerned for bandwidth.&lt;br /&gt;
&lt;br /&gt;
In both of these cases it is strongly recommended the code review be able to review the JavaScript before it has been obfuscated and or compressed. &lt;br /&gt;
&lt;br /&gt;
Another aspect that makes code review of JavaScript challenging is its reliance of large frameworks such as Microsoft .Net and Java Server Faces and the use of JavaScript frameworks, such as JQuery, Knockout, Angular, Backbone. These frameworks aggravate the problem because the code can only be fully analyzed given the source code of the framework itself. These frameworks are usually several orders of magnitude larger then the code the code reviewer needs to review.  Because of time and money most companies simple accept that these frameworks are secure or the risks are low and acceptable to the organization.&lt;br /&gt;
&lt;br /&gt;
Because of these challenges we recommend a hybrid analysis for JavaScript. Manual source to sink validation when necessary, static analysis with black-box testing and taint testing. &lt;br /&gt;
&lt;br /&gt;
First use a static analysis. Code Reviewer and the organization needs to understand that because of event-driven behaviors, complex dependencies between HTML DOM and JavaScript code, and asynchronous communication with the server side static analysis will always fall short and may show both positive, false, false –positive, and positive-false findings.&lt;br /&gt;
&lt;br /&gt;
Black-box traditional methods detection of reflected or stored XSS needs to be preformed. However this approach will not work for DOM-based XSS vulnerabilities.  &lt;br /&gt;
&lt;br /&gt;
Taint analysis needs to be incorporated into static analysis engine. Taint Analysis attempts to identify variables that have been 'tainted' with user controllable input and traces them to possible vulnerable functions also known as a 'sink'. If the tainted variable gets passed to a sink without first being sanitized it is flagged as vulnerability.&lt;br /&gt;
&lt;br /&gt;
Second the code reviewer needs to be certain the code was tested with JavaScript was turned off to make sure all client sided data validation was also validated on the server side.&lt;br /&gt;
&lt;br /&gt;
Code examples of JavaScript vulnerabilities.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;html&amp;gt;&lt;br /&gt;
 &amp;lt;script type=”text/javascript”&amp;gt;&lt;br /&gt;
 var pos=document.URL.indexOf(“name=”)+5;&lt;br /&gt;
 document.write( document.URL.substring(pos,document.URL.length));&lt;br /&gt;
 &amp;lt;/script&amp;gt;&lt;br /&gt;
 &amp;lt;html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Explanation: An attacker can send a link such as “http://hostname/welcome.html#name=&amp;lt;script&amp;gt;alert(1)&amp;lt;/script&amp;gt; to the victim resulting in the victim’s browser executing the injected client-side code.&lt;br /&gt;
&lt;br /&gt;
 # var url = document.location.url;&lt;br /&gt;
 # var loginIdx = url.indexOf(‘login’);&lt;br /&gt;
 # var loginSuffix = url.substring(loginIdx);&lt;br /&gt;
 # url = ‘http://mySite/html/sso/’ + loginSuffix;&lt;br /&gt;
 # document.location.url = url;&lt;br /&gt;
&lt;br /&gt;
Line 5 may be a false-positive and prove to be safe code or it may be open to “Open redirect attack” with taint analysis the static analysis should be able to correctly identified if this vulnerability exists. If static analysis relies only on black-box component this code will have flagged as vulnerable requiring the code reviewer to do a complete source to sink review. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Javascript and Session handling==&lt;br /&gt;
&lt;br /&gt;
Session handling is almost always done with cookies. In order to protect from Session Hijack (see link), there is an attribute called &amp;quot;secure&amp;quot; (see Session Handling), that forbids the access to the session cookie from javascript. Anyway, as there is no need to access a session cookie from the client, you should not make client side code that depends on this access.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
# http://docstore.mik.ua/orelly/web/jscript/ch20_04.html&lt;br /&gt;
# https://www.owasp.org/index.php/Static_Code_Analysis&lt;br /&gt;
# http://www.cs.tau.ac.il/~omertrip/fse11/paper.pdf&lt;br /&gt;
# http://www.jshint.com/about/&lt;br /&gt;
# https://github.com/mozilla/doctorjs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Three points of validity are required for Javascript codes:&lt;br /&gt;
# Have all the logic server-side, Javascript is only the butler&lt;br /&gt;
# Check for all sorts of XSS DOM Attacks&lt;br /&gt;
# Check for insecure Javascript libraries and update them frequently.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Javascript uses strings to create DOM elements. This can lead to XSS attacks. All input should be sanitized before being converted to DOM objects.&lt;br /&gt;
&lt;br /&gt;
Javascript libraries are not? prone to attack. Most of them have flaws in them, recent jQuery flaw (evaluating the document.location.hash, allowing XSS to be embedded after # in location) caused Drupal (which is generally a safe system) to allow admin user creation for attackers!&lt;/div&gt;</summary>
		<author><name>Carlos Pantelides</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=CRV2_CodeReviewAgile&amp;diff=164341</id>
		<title>CRV2 CodeReviewAgile</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=CRV2_CodeReviewAgile&amp;diff=164341"/>
				<updated>2013-12-05T23:03:41Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Pantelides: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Charly, remember that it's &amp;quot;code review guide&amp;quot;, not &amp;quot;testing guide&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Some definitions about Agile==&lt;br /&gt;
&lt;br /&gt;
The Agile name is an umbrella for quite a lot of practices that range from programming, to testing, to project management and everything in between. There are many flavours of agile, perhaps as many as practicioners. It is like an heretogeneous reference framework and you are free to use what you want.&lt;br /&gt;
&lt;br /&gt;
Agile has some key practices that could affect the way the code is reviewed. First, when the review is done and then, the code itself.&lt;br /&gt;
&lt;br /&gt;
Agile Development is well suited for code review, as two of its practices are &amp;quot;pair programming&amp;quot; and &amp;quot;peer review&amp;quot;. AD incorporates code review in itself, in what traditionally was seem as another phase.&lt;br /&gt;
&lt;br /&gt;
===Life Cycle===&lt;br /&gt;
&lt;br /&gt;
Agile blurs the difference between developing and testing, and so does with code review. It is not an external activity. Agile tries to keep the code testing and review as near as possible to the development phase, there is no such thing as the develop, test, code review cycle.&lt;br /&gt;
&lt;br /&gt;
It is a common practice to define short development cycles. At the end of each one, all the code must be production quality code. Its funtionality may be incomplete, but it must add some value. That affects the review process as it must be continuous.&lt;br /&gt;
&lt;br /&gt;
===Pair Programming===&lt;br /&gt;
&lt;br /&gt;
This technique is quite controversial, but when it is adopted it has the benefits of making better code, as there is one programmer supervising cooperatively the other one's work. If both programmers know this guide, they will apply it continuously.&lt;br /&gt;
&lt;br /&gt;
===Peer Review===&lt;br /&gt;
&lt;br /&gt;
This one is enforced by the usage of tools like Jenkins that ask another user for a code review before commiting to the versioning system.&lt;br /&gt;
&lt;br /&gt;
===???===&lt;br /&gt;
&lt;br /&gt;
The role of testers... some people thinks that there is almost no place for the traditional tester role. Automated testing requires a tester to define the tests but not to execute them. This tester must be almost a programmer or work with a programmer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Clean Code and &amp;quot;Smells&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
The agile community is very committed to code quality. A by product is the concept of Clean Code and its smells, its very handy to be familiar with this topic, ...&lt;br /&gt;
&lt;br /&gt;
==The Agile Ecosystem==&lt;br /&gt;
&lt;br /&gt;
    bdd----------------------------------------------------------------------+&lt;br /&gt;
     |                                                                       |&lt;br /&gt;
    tdd-------------------------------------------------------------+        |&lt;br /&gt;
     |                                                              |        |&lt;br /&gt;
     +----+--&amp;gt;   pair programming --------+--&amp;gt; peer review -----&amp;gt; continuous integration&lt;br /&gt;
          |  ( collective ownership )     |&lt;br /&gt;
          +--&amp;gt;  individual programming ---+&lt;br /&gt;
             &lt;br /&gt;
&lt;br /&gt;
==Code Reviewing an Agile Project==&lt;br /&gt;
&lt;br /&gt;
If you are going to review an Agile Team project code, the best thing that you can do is give this guide to that Team as early as possible and most of your work will be done for you. Or better yet, integrate yourself to the Team.&lt;br /&gt;
  &lt;br /&gt;
Code review must be done at least at the end of every user story and be very fast in order to not introduce delays and detect any error as soon as possible. It's better to do that in every commit to the code repository. That is the reason that peer review is the prefered method for agile code review. Nevertheless, as security review requieres some extra specialization, perhaps the best way is to integrate the security code reviewier with the Team.&lt;br /&gt;
&lt;br /&gt;
==Tests==&lt;br /&gt;
Agile projects tend to use a lot of automated testing, in order to review an Agile Project, you will have to extend the review to the tests.&lt;br /&gt;
&lt;br /&gt;
Some guide taken from ...&lt;br /&gt;
*Are there enough tests?&lt;br /&gt;
*Is the code covered by the tests? Code coverage measure main value is to find unused code.&lt;br /&gt;
*Are there the trivial tests? They are as needed as any other test.&lt;br /&gt;
*Are there commented out tests? Commented out tests means that some one made a test that the code could not pass or take a long time to run.&lt;br /&gt;
*Are boundary conditions tested? These are the tests around maximum and minimum values or near a change in a condition.&lt;br /&gt;
*Are bugs exhaustively tested? That is, is an off-by-one bug is found, are there boundary tests for that condition?&lt;br /&gt;
*Are the test automatic? If the tests requiere manual intervention, they will not be run.&lt;br /&gt;
*Do the tests conform to F.I.R.S.T.?&lt;br /&gt;
  Fast: a slow test is a candidate for removal, as it slows down the &amp;quot;make test, implement, test, refactor&amp;quot; cycle.&lt;br /&gt;
  Independent: one test can not depend on the execution of another one, the order should not matter.&lt;br /&gt;
  Repeatable: one test should give always the same result in any environment if nothing has changed in the code.&lt;br /&gt;
  Self-validating: the result of a test should be Pass or Fail, nothing else. There should not be any manual intervention needed.&lt;br /&gt;
  Timely: the test should be written before the code. That can not be detected with code review, but you can always see the logs of the versioning system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Other Agile Resources==&lt;br /&gt;
&lt;br /&gt;
===The role of testing===&lt;br /&gt;
&lt;br /&gt;
It is so fundamental, that the xDD pervades Agile, test first, test earlier &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Continuous integration===&lt;br /&gt;
&lt;br /&gt;
CI triggers the tests and often static code analysis too. It makes integration problems arise very quickly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===The role of automatic static code analysis in the Agile Methodologies===&lt;br /&gt;
&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
===The XDD===&lt;br /&gt;
&lt;br /&gt;
There are many agile practices related to what drives the development of a project, what they have in common is that they could generate testing code. As a security practicioner, there are two aspects of interest. One, sometimes useful is called &amp;quot;test coverage&amp;quot; and it is automatically calculated. 100% code coverage does not mean a good coverage neither a 60% a bad one. It is very difficult to measure the second aspect, the quality&lt;br /&gt;
of the test. There is possitive testing, that aims at the added value of every piece of software and negative testing, related to bugs and security.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Test Driven Development====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TDD is the practice of making the test before coding, it is the extremme application of the &amp;quot;test early&amp;quot; principle. The idea is that the code always will be tested as the test predates the code itself. A very important side effect is that it forces to simplify the code to make it testeable. It could be very low level with very isolated components, called &amp;quot;unit testing&amp;quot; and high level, when it tests clusters of interrelated components, called &amp;quot;functional testing&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
To read more about code coverage: [https://www.owasp.org/index.php/Code_Review_Coverage]&lt;br /&gt;
&lt;br /&gt;
====Behavior Driven Development====&lt;br /&gt;
&lt;br /&gt;
This practice builds upon TDD, providing an interface to non-specialists users, shaping the tests around full blown scenarios. As TDD, it generates testing code. &lt;br /&gt;
&lt;br /&gt;
====Domain Driven Design====&lt;br /&gt;
&lt;br /&gt;
This practice consist of... It does not generate code itself, but the architecture. It is very popular among the Agile people, so it is very important to be familiar with. Perhaps the most useful concept is &amp;quot;ubiquitous language&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Refactoring===&lt;br /&gt;
&lt;br /&gt;
Refactoring is the art of changing the code with out changing its behavior. In order to refactor, there must exists a rich battery of tests.&lt;br /&gt;
&lt;br /&gt;
The problem with refactoring, is that thanks to the heavy testing, you can trust that the interface does not change, but behind it, the code can be very volatile. You have to review the code continously, another argument for peer review and automatic static analysis.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References and sources==&lt;br /&gt;
&lt;br /&gt;
Clean Code: A handbook for Agile Software Craftsmanship - Robert C. Martin&lt;br /&gt;
&lt;br /&gt;
http://groups.yahoo.com/group/foro-agiles/&lt;br /&gt;
&lt;br /&gt;
http://martinfowler.com/articles/continuousIntegration.html&lt;br /&gt;
&lt;br /&gt;
http://martinfowler.com/bliki/TestCoverage.html&lt;br /&gt;
&lt;br /&gt;
not used http://refactoring.com/&lt;br /&gt;
&lt;br /&gt;
not used http://dddcommunity.org/&lt;/div&gt;</summary>
		<author><name>Carlos Pantelides</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=CRV2_CodeReviewAgile&amp;diff=160946</id>
		<title>CRV2 CodeReviewAgile</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=CRV2_CodeReviewAgile&amp;diff=160946"/>
				<updated>2013-10-17T01:33:44Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Pantelides: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Charly, remember that it's &amp;quot;code review guide&amp;quot;, not &amp;quot;testing guide&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Some definitions about Agile==&lt;br /&gt;
&lt;br /&gt;
The Agile name is an umbrella for quite a lot of practices that range from programming, to testing, to project management and everything in between. There are many flavours of agile, perhaps as many as practicioners. It is like an heretogeneous reference framework and you are free to use what you want.&lt;br /&gt;
&lt;br /&gt;
Agile has some key practices that could affect the way the code is reviewed. First, when the review is done and then, the code itself.&lt;br /&gt;
&lt;br /&gt;
Agile Development is well suited for code review, as two of its practices are &amp;quot;pair programming&amp;quot; and &amp;quot;peer review&amp;quot;. AD incorporates code review in theirself, in what traditionally was seem as another phase.&lt;br /&gt;
&lt;br /&gt;
===Life Cycle===&lt;br /&gt;
&lt;br /&gt;
Agile blurs the difference between developing and testing, and so does with code review. It is not an external activity. Agile tries to keep the code testing and review as near as possible to the development phase, there is no such thing as the develop, test, code review cycle.&lt;br /&gt;
&lt;br /&gt;
It is a common practice to define short development cycles. At the end of each one, all the code must be production quality code. It can be incomplete, but it must add some value. That affects the review process as it must be continuous.&lt;br /&gt;
&lt;br /&gt;
===Pair Programming===&lt;br /&gt;
&lt;br /&gt;
This technique is quite controversial, but when it is adopted it has the benefits of making better code, as there is one programmer supervising cooperatively the other one's work. If both programmers know this guide, they will apply it continuously.&lt;br /&gt;
&lt;br /&gt;
===Peer Review===&lt;br /&gt;
&lt;br /&gt;
This one is enforced by the usage of tools like Jenkins that ask another user for a code review before commiting to the versioning system.&lt;br /&gt;
&lt;br /&gt;
The role of testers...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Clean Code and &amp;quot;Smells&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
The agile community is very committed to code quality...&lt;br /&gt;
&lt;br /&gt;
==The Agile Ecosystem==&lt;br /&gt;
&lt;br /&gt;
    bdd----------------------------------------------------------------------+&lt;br /&gt;
     |                                                                       |&lt;br /&gt;
    tdd-------------------------------------------------------------+        |&lt;br /&gt;
     |                                                              |        |&lt;br /&gt;
     +----+--&amp;gt;   pair programming --------+--&amp;gt; peer review -----&amp;gt; continuous integration&lt;br /&gt;
          |  ( collective ownership )     |&lt;br /&gt;
          +--&amp;gt;  individual programming ---+&lt;br /&gt;
             &lt;br /&gt;
&lt;br /&gt;
==Code Reviewing an Agile Project==&lt;br /&gt;
&lt;br /&gt;
If you are going to review an Agile Team project code, the best thing that you can do is give this guide to that Team as early as possible and most of your work will be done for you. Or better yet, integrate to the Team.&lt;br /&gt;
  &lt;br /&gt;
Code review must be done at least at the end of every user story and be very fast in order to not introduce delays and detect any error as soon as possible. It's better to do that in every commit to the code repository. That is the reason that peer review is the prefered method for agile code review. Nevertheless, as security review requieres some extra specialization, perhaps the best way is to integrate the security code reviewier with the Team.&lt;br /&gt;
&lt;br /&gt;
==Tests==&lt;br /&gt;
Agile projects tend to use a lot of automated testing, in order to review an Agile Project, you will have to extend the review to the tests.&lt;br /&gt;
&lt;br /&gt;
Some guide taken from ...&lt;br /&gt;
*Are there enough tests?&lt;br /&gt;
*Is the code covered by the tests? Code coverage measure main value is to find unused code.&lt;br /&gt;
*Are there the trivial tests? They are as needed as any other test.&lt;br /&gt;
*Are there commented out tests? Commented out tests means that some one made a test that the code could not pass or take a long time to run.&lt;br /&gt;
*Are boundary conditions tested? These are the tests around maximum and minimum values or near a change in a condition.&lt;br /&gt;
*Are bugs exhaustively tested? That is, is an off-by-one bug is found, are there boundary tests for that condition?&lt;br /&gt;
*Are the test automatic? If the tests requiere manual intervention, they will not be run.&lt;br /&gt;
*Do the tests conform to F.I.R.S.T.?&lt;br /&gt;
  Fast: a slow test is a candidate for removal, as it slows down the &amp;quot;make test, implement, test, refactor&amp;quot; cycle.&lt;br /&gt;
  Independent: one test can not depend on the execution of another one, the order should not matter.&lt;br /&gt;
  Repeatable: one test should give always the same result in any environment if nothing has changed in the code.&lt;br /&gt;
  Self-validating: the result of a test should be Pass or Fail, nothing else. There should not be any manual intervention needed.&lt;br /&gt;
  Timely: the test should be written before the code. That can not be detected with code review, but you can always see the logs of the versioning system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Other Agile Resources==&lt;br /&gt;
&lt;br /&gt;
===The role of testing===&lt;br /&gt;
&lt;br /&gt;
It is so fundamental, that the xDD pervades Agile, test first, test earlier &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Continuous integration===&lt;br /&gt;
it triggers the tests and often static code analysis too. It makes integration problems arise very quickly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===The role of automatic static code analysis in the Agile Methodologies===&lt;br /&gt;
&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
===The XDD===&lt;br /&gt;
&lt;br /&gt;
There are many agile practices related to what drives the development of a project, what they have in common is that they could generate testing code. As a security practicioner, there are two aspects of interest. One, sometimes useful is called &amp;quot;test coverage&amp;quot; and it is automatically calculated. 100% code coverage does not mean a good coverage neither a 60% a bad one. It is very difficult to measure the second aspect, the quality&lt;br /&gt;
of the test. There is possitive testing, that aims at the added value of every piece of software and negative testing, related to bugs and security.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Test Driven Development====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TDD is the practice of making the test before coding, it is the extremme application of the &amp;quot;test early&amp;quot; principle. The idea is that the code always will be tested as the test predates the code itself. A very important side effect is that it forces to simplify the code to make it testeable. It could be very low level with very isolated components, called &amp;quot;unit testing&amp;quot; and high level, when it tests clusters of interrelated components, called &amp;quot;functional testing&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
To read more about code coverage: [https://www.owasp.org/index.php/Code_Review_Coverage]&lt;br /&gt;
&lt;br /&gt;
====Behavior Driven Development====&lt;br /&gt;
&lt;br /&gt;
This practice builds upon TDD, providing an interface to non-specialists users, shaping the tests around full blown scenarios. As TDD, it generates testing code. &lt;br /&gt;
&lt;br /&gt;
====Domain Driven Design====&lt;br /&gt;
&lt;br /&gt;
This practice consist of... It does not generate code itself, but the architecture. It is very popular among the Agile people, so it is very important to be familiar with. Perhaps the most useful concept is &amp;quot;ubiquitous language&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Refactoring===&lt;br /&gt;
&lt;br /&gt;
Refactoring is the art of changing the code with out changing its behavior. In order to refactor, there must exists a rich battery of tests.&lt;br /&gt;
&lt;br /&gt;
The problem with refactoring, is that thanks to the heavy testing, you can trust that the interface does not change, but behind it, the code can be very volatile. You have to review the code continously, another argument for peer review and automatic static analysis.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References and sources==&lt;br /&gt;
&lt;br /&gt;
Clean Code: A handbook for Agile Software Craftsmanship - Robert C. Martin&lt;br /&gt;
&lt;br /&gt;
http://groups.yahoo.com/group/foro-agiles/&lt;br /&gt;
&lt;br /&gt;
http://martinfowler.com/articles/continuousIntegration.html&lt;br /&gt;
&lt;br /&gt;
http://martinfowler.com/bliki/TestCoverage.html&lt;br /&gt;
&lt;br /&gt;
not used http://refactoring.com/&lt;br /&gt;
&lt;br /&gt;
not used http://dddcommunity.org/&lt;/div&gt;</summary>
		<author><name>Carlos Pantelides</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=CRV2_CodeReviewAgile&amp;diff=158419</id>
		<title>CRV2 CodeReviewAgile</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=CRV2_CodeReviewAgile&amp;diff=158419"/>
				<updated>2013-09-14T00:26:51Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Pantelides: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Charly, remember that it's &amp;quot;code review guide&amp;quot;, not &amp;quot;testing guide&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Some definitions about Agile==&lt;br /&gt;
&lt;br /&gt;
The Agile name is an umbrella for quite a lot of practices that range from programming, to testing, to project management and everything in between. There are many flavours of agile, perhaps as many as practicioners. It is like an heretogeneous reference framework and you are free to use what you want.&lt;br /&gt;
&lt;br /&gt;
Agile has some key practices that could affect the way the code is reviewed. First, when the review is done and then the code itself.&lt;br /&gt;
&lt;br /&gt;
Agile Development is well suited for code review, as two of its practices are &amp;quot;pair programming&amp;quot; and &amp;quot;peer review&amp;quot;. AD incorporates code review in itself, in what traditionally was seem as another phase.&lt;br /&gt;
&lt;br /&gt;
===Life Cycle===&lt;br /&gt;
&lt;br /&gt;
Agile blurs the difference between developing and testing, and so does with code review. It is not an external activity. Agile tries to keep the code testing and review as near as possible to the development phase, there is no such thing as the &amp;quot;develop, test, code review cycle.&lt;br /&gt;
&lt;br /&gt;
Its a common practice to define short development cycles. At the end of each one, all the code must be production quality code. It can be incomplete, but it must add some value. That affects the review process, it must be continuous.&lt;br /&gt;
&lt;br /&gt;
===Pair Programming===&lt;br /&gt;
&lt;br /&gt;
This technique is quite controversial, but when its adopted it has the benefits of making better code, as there is one programmer supervising cooperatively the other one's work. If both programmers know this guide, they will apply it continuously.&lt;br /&gt;
&lt;br /&gt;
===Peer Review===&lt;br /&gt;
&lt;br /&gt;
This one is enforced by the usage of tools like Jenkins that ask another user for a code review before commiting to the versioning system.&lt;br /&gt;
&lt;br /&gt;
The role of testers...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Clean Code and &amp;quot;Smells&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
The agile community is very committed to code quality...&lt;br /&gt;
&lt;br /&gt;
==The Agile Ecosystem==&lt;br /&gt;
&lt;br /&gt;
    bdd----------------------------------------------------------------------+&lt;br /&gt;
     |                                                                       |&lt;br /&gt;
    tdd-------------------------------------------------------------+        |&lt;br /&gt;
     |                                                              |        |&lt;br /&gt;
     +----+--&amp;gt;   pair programming --------+--&amp;gt; peer review -----&amp;gt; continuous integration&lt;br /&gt;
          |  ( collective ownership )     |&lt;br /&gt;
          +--&amp;gt;  individual programming ---+&lt;br /&gt;
             &lt;br /&gt;
&lt;br /&gt;
==Code Reviewing an Agile Project==&lt;br /&gt;
&lt;br /&gt;
If you are going to review an Agile Team project code, the best thing that you can do is give this guide to that Team as early as possible and most of your work will be done for you.&lt;br /&gt;
  &lt;br /&gt;
Code review must be done at least at the end of every story and be very fast in order to not introduce delays and detect any error as soon as possible. It's better to do that in every commit to the code repository. That is the reason that peer review is the prefered method for agile code review. Nevertheless, as security review requieres some extra specialization, perhaps the best way is to integrate the security code reviewier with the Team.&lt;br /&gt;
&lt;br /&gt;
==Tests==&lt;br /&gt;
Agile projects tend to use a lot of automated testing, in order to review an Agile Project, you will have to extend the review to the tests.&lt;br /&gt;
&lt;br /&gt;
Some guide taken from ...&lt;br /&gt;
*Are there enough tests?&lt;br /&gt;
*Is the code covered by the tests? Code coverage measure main value is to find unused code.&lt;br /&gt;
*Are there the trivial tests? They are as needed as any other test.&lt;br /&gt;
*Are there commented out tests? Commented out tests means that some one made a test that the code could not pass or take a long time to run.&lt;br /&gt;
*Are boundary conditions tested? These are the tests around maximum and minimum values or near a change in a condition.&lt;br /&gt;
*Are bugs exhaustively tested? That is, is an off-by-one bug is found, are there boundary tests for that condition?&lt;br /&gt;
*Are the test automatic? If the tests requiere manual intervention, they will not be run.&lt;br /&gt;
*Do the tests conform to F.I.R.S.T.?&lt;br /&gt;
  Fast: a slow test is a candidate for removal, as it slows down the &amp;quot;make test, implement, test, refactor&amp;quot; cycle.&lt;br /&gt;
  Independent: one test can not depend on the execution of another one, the order should not matter.&lt;br /&gt;
  Repeatable: one test should give always the same result in any environment if nothing has changed in the code.&lt;br /&gt;
  Self-validating: the result of a test should be Pass or Fail, nothing else. There should not be any manual intervention needed.&lt;br /&gt;
  Timely: the test should be written before the code. That can not be detected with code review, but you can always see the logs of the versioning system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Other Agile Resources==&lt;br /&gt;
&lt;br /&gt;
===The role of testing===&lt;br /&gt;
&lt;br /&gt;
It is so fundamental, that the xDD pervades Agile, test first, test earlier &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Continuous integration===&lt;br /&gt;
it triggers the tests and often static code analysis too. It makes integration problems arise very quickly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===The role of automatic static code analysis in the Agile Methodologies===&lt;br /&gt;
&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
===The XDD===&lt;br /&gt;
&lt;br /&gt;
There are many agile practices related to what drivens the development of a project, what they have in common is that they could generate testing code. As a security practicioner, there are two aspects of interest. One, sometimes useful is called &amp;quot;test coverage&amp;quot; and it is automatically calculated. 100% code coverage does not mean a good coverage neither a 60% a bad one. It is very difficult to measure the second aspect, the quality&lt;br /&gt;
of the test. There is possitive testing, that aims at the added value of every piece of software and negative testing, related to bugs and security.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Test Driven Development====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TDD is the practice of making the test before coding, it is the extremme application of the &amp;quot;test early&amp;quot; principle. The idea is that the code always will be tested as the test predates the code itself. A very important side effect is that it forces to simplify the code to make it testeable. It could be very low level with very isolated components, called &amp;quot;unit testing&amp;quot; and high level, when it tests clusters of interrelated components, called &amp;quot;functional testing&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
To read more about code coverage: [https://www.owasp.org/index.php/Code_Review_Coverage]&lt;br /&gt;
&lt;br /&gt;
====Behavior Driven Development====&lt;br /&gt;
&lt;br /&gt;
This practice builds upon TDD, providing an interface to non specialists users, shaping the tests around full blown scenarios. As TDD, it generates testing code. &lt;br /&gt;
&lt;br /&gt;
====Domain Driven Design====&lt;br /&gt;
&lt;br /&gt;
This practice consist of... It does not generate code itself, but the architecture.&lt;br /&gt;
&lt;br /&gt;
===Refactoring===&lt;br /&gt;
&lt;br /&gt;
Refactoring is the art of changing the code with out changing its behavior. In order to refactor, there must exists a rich battery of tests.&lt;br /&gt;
&lt;br /&gt;
The problem with refactoring, is that thanks to the heavy testing, you can trust that the interface does not change, but behind it, the code can be very volatile. You have to review the code continously, another argument for peer review and automatic static analysis.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References and sources==&lt;br /&gt;
&lt;br /&gt;
Clean Code: A handbook for Agile Software Craftsmanship - Robert C. Martin&lt;br /&gt;
&lt;br /&gt;
http://groups.yahoo.com/group/foro-agiles/&lt;br /&gt;
&lt;br /&gt;
http://martinfowler.com/articles/continuousIntegration.html&lt;br /&gt;
&lt;br /&gt;
http://martinfowler.com/bliki/TestCoverage.html&lt;br /&gt;
&lt;br /&gt;
not used http://refactoring.com/&lt;br /&gt;
&lt;br /&gt;
not used http://dddcommunity.org/&lt;/div&gt;</summary>
		<author><name>Carlos Pantelides</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=CRV2_CodeReviewAgile&amp;diff=155422</id>
		<title>CRV2 CodeReviewAgile</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=CRV2_CodeReviewAgile&amp;diff=155422"/>
				<updated>2013-07-12T05:46:10Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Pantelides: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Charly, remember that it's &amp;quot;code review guide&amp;quot;, not &amp;quot;testing guide&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Some definitions about Agile==&lt;br /&gt;
&lt;br /&gt;
The Agile name is an umbrella for quite a lot of practices that range from programming, to testing, to project management and everything in between. There are many flavours of agile, perhaps as many as practicioners. It is like an heretogeneous reference framework and you are free to use what you want.&lt;br /&gt;
&lt;br /&gt;
Agile has some key practices that could affect the way the code is reviewed. First, when the review is done and then the code itself.&lt;br /&gt;
&lt;br /&gt;
Agile Development is well suited for code review, as two of its practices are &amp;quot;pair programming&amp;quot; and &amp;quot;peer review&amp;quot;. AD incorporates code review in itself, in what traditionally was seem as another phase.&lt;br /&gt;
&lt;br /&gt;
===Life Cycle===&lt;br /&gt;
&lt;br /&gt;
Agile blurs the difference between developing and testing, and so does with code review. It is not an external activity. Agile tries to keep the code testing and review as near as possible to the development phase, there is no such thing as the &amp;quot;develop, test, code review cycle.&lt;br /&gt;
&lt;br /&gt;
Its a common practice to define short production cycles. At the end of each one, all the code must be production quality code. It can be incomplete, but it must add some value. That affects the review process, it must be continuous.&lt;br /&gt;
&lt;br /&gt;
===Pair Programming===&lt;br /&gt;
&lt;br /&gt;
This technique is quite controversial, but when its adopted it has the benefits of making better code, as there is one programmer supervising cooperatively the other one's work. If both programmers know this guide, they will apply it continuously.&lt;br /&gt;
&lt;br /&gt;
===Peer Review===&lt;br /&gt;
&lt;br /&gt;
This one is enforced by the usage of tools like ¿Jenkins? that ask another user for a code review before commiting to the versioning system.&lt;br /&gt;
&lt;br /&gt;
The role of testers...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Clean Code and &amp;quot;Smells&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
==The Agile Ecosystem==&lt;br /&gt;
&lt;br /&gt;
    bdd----------------------------------------------------------------------+&lt;br /&gt;
     |                                                                       |&lt;br /&gt;
    tdd-------------------------------------------------------------+        |&lt;br /&gt;
     |                                                              |        |&lt;br /&gt;
     +----+--&amp;gt;   pair programming --------+--&amp;gt; peer review -----&amp;gt; continuous integration&lt;br /&gt;
          |  ( collective ownership )     |&lt;br /&gt;
          +--&amp;gt;  individual programming ---+&lt;br /&gt;
             &lt;br /&gt;
&lt;br /&gt;
==Code Reviewing an Agile Project==&lt;br /&gt;
&lt;br /&gt;
If you are going to review an Agile Team project code, the best thing that you can do is give this guide to that Team as early as possible and most of your work will be done for you.&lt;br /&gt;
  &lt;br /&gt;
Code review must be done at least at the end of every story and be very fast in order to not introduce delays and detect any error as soon as possible. It's better to do that in every commit to the code repository. That is the reason that peer review is the prefered method for agile code review.&lt;br /&gt;
&lt;br /&gt;
In order to review an Agile Project, you will have to extend the review to the tests.&lt;br /&gt;
&lt;br /&gt;
*Are there enough tests?&lt;br /&gt;
*Is the code covered by the tests? Code coverage measure main value is to find unused code.&lt;br /&gt;
*Are there the trivial tests? They are as needed as any other test.&lt;br /&gt;
*Are there commented out tests? Commented out tests means that some one made a test that the code could not pass or take a long time to run.&lt;br /&gt;
*Are boundary conditions tested? These are the tests around maximum and minimum values or near a change in a condition.&lt;br /&gt;
*Are bugs exhaustively tested? That is, is an off-by-one bug is found, are there boundary tests for that condition?&lt;br /&gt;
*Are the test automatic? If the tests requiere manual intervention, they will not be run.&lt;br /&gt;
*Do the tests conform to F.I.R.S.T.?&lt;br /&gt;
  Fast: a slow test is a candidate for removal, as it slows down the &amp;quot;make test, implement, test, refactor&amp;quot; cycle.&lt;br /&gt;
  Independent: one test can not depend on the execution of another one, the order should not matter.&lt;br /&gt;
  Repeatable: one test should give always the same result in any environment if nothing has changed in the code.&lt;br /&gt;
  Self-validating: the result of a test should be Pass or Fail, nothing else. There should not be any manual intervention needed.&lt;br /&gt;
  Timely: the test should be written before the code. That can not be detected with code review, but you can always see the logs of the versioning system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Other Agile Resources==&lt;br /&gt;
&lt;br /&gt;
===The role of testing===&lt;br /&gt;
&lt;br /&gt;
It is so fundamental, that the xDD pervades Agile, test first, test earlier &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Continuous integration===&lt;br /&gt;
it triggers the tests and often static code analysis too. it makes detection of integration problems arise very quickly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===The role of automatic static code analysis in the Agile Methodologies===&lt;br /&gt;
&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
===The XDD===&lt;br /&gt;
&lt;br /&gt;
There are many agile practices related to what drivens the development of a project, what they have in common is that they could generate testing code. As a security practicioner, there are two aspects of interest. One, sometimes useful is called &amp;quot;test coverage&amp;quot; and is automatically calculated. 100% code coverage does not mean a good coverage neither a 60% a bad one. It is very difficult to measure the second aspect, the quality&lt;br /&gt;
of the test. There is possitive testing, that aims at the added value of every piece of software and negative testing, related to bugs and security.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Test Driven Development====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TDD is the practice of making the test before coding, it is the extremme application of the &amp;quot;test early&amp;quot; principle. The idea is that the code always will be tested as the test predates the code itself. A very important side effect is that it forces to simplify the code to make it testeable. It could be very low level with very isolated components, called &amp;quot;unit testing&amp;quot; and high level, when it tests clusters of interrelated components, called &amp;quot;functional testing&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
To read more about code coverage: [https://www.owasp.org/index.php/Code_Review_Coverage]&lt;br /&gt;
&lt;br /&gt;
====Behavior Driven Development====&lt;br /&gt;
&lt;br /&gt;
This practice builds upon TDD, providing an interface to non specialists users, shaping the tests around full blown scenarios. As TDD, it generates testing code. &lt;br /&gt;
&lt;br /&gt;
====Domain Driven Design====&lt;br /&gt;
&lt;br /&gt;
This practice consist of... It does not generate code itself, but patterns.&lt;br /&gt;
&lt;br /&gt;
===Refactoring===&lt;br /&gt;
&lt;br /&gt;
Refactoring is the art of changing the code with out changing its behavior. In order to refactor, there must exists a rich battery of tests.&lt;br /&gt;
&lt;br /&gt;
The problem with refactoring, is that thanks to the heavy testing, you can trust that the interface does not change, but behind it, the code can be very volatile. You have to review the code continously, another argument for peer review and automatic static analysis.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References and sources==&lt;br /&gt;
&lt;br /&gt;
Clean Code: A handbook for Agile Software Craftsmanship - Robert C. Martin&lt;br /&gt;
&lt;br /&gt;
http://groups.yahoo.com/group/foro-agiles/&lt;br /&gt;
&lt;br /&gt;
http://martinfowler.com/articles/continuousIntegration.html&lt;br /&gt;
&lt;br /&gt;
http://martinfowler.com/bliki/TestCoverage.html&lt;br /&gt;
&lt;br /&gt;
not used http://refactoring.com/&lt;br /&gt;
&lt;br /&gt;
not used http://dddcommunity.org/&lt;/div&gt;</summary>
		<author><name>Carlos Pantelides</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=CRV2_CodeReviewAgile&amp;diff=155421</id>
		<title>CRV2 CodeReviewAgile</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=CRV2_CodeReviewAgile&amp;diff=155421"/>
				<updated>2013-07-12T05:41:56Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Pantelides: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Charly, remember that it's &amp;quot;code review guide&amp;quot;, not &amp;quot;testing guide&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Some definitions about Agile==&lt;br /&gt;
&lt;br /&gt;
The Agile name is an umbrella for quite a lot of practices that range from programming, to testing, to project management and everything in between. There are many flavours of agile, perhaps as many as practicioners. It is like an heretogeneous reference framework and you are free to use what you want.&lt;br /&gt;
&lt;br /&gt;
Agile has some key practices that could affect the way the code is reviewed. First, when the review is done and then the code itself.&lt;br /&gt;
&lt;br /&gt;
Agile Development is well suited for code review, as two of its practices are &amp;quot;pair programming&amp;quot; and &amp;quot;peer review&amp;quot;. AD incorporates code review in itself, in what traditionally was seem as another phase.&lt;br /&gt;
&lt;br /&gt;
===Life Cycle===&lt;br /&gt;
&lt;br /&gt;
Agile blurs the difference between developing and testing, and so does with code review. It is not an external activity. Agile tries to keep the code testing and review as near as possible to the development phase, there is no such thing as the &amp;quot;develop, test, code review cycle.&lt;br /&gt;
&lt;br /&gt;
Its a common practice to define short production cycles. At the end of each one, all the code must be production quality code. It can be incomplete, but it must add some value. That affects the review process, it must be continuous.&lt;br /&gt;
&lt;br /&gt;
===Pair Programming===&lt;br /&gt;
&lt;br /&gt;
This technique is quite controversial, but when its adopted it has the benefits of making better code, as there is one programmer supervising cooperatively the other one's work. If both programmers know this guide, they will apply it continuously.&lt;br /&gt;
&lt;br /&gt;
===Peer Review===&lt;br /&gt;
&lt;br /&gt;
This one is enforced by the usage of tools like .... that ask another user for a code review before commiting to the versioning system.&lt;br /&gt;
&lt;br /&gt;
The role of testers&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Clean Code and &amp;quot;Smells&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
==The Agile Ecosystem==&lt;br /&gt;
&lt;br /&gt;
    bdd----------------------------------------------------------------------+&lt;br /&gt;
     |                                                                       |&lt;br /&gt;
    tdd-------------------------------------------------------------+        |&lt;br /&gt;
     |                                                              |        |&lt;br /&gt;
     +----+--&amp;gt;   pair programming --------+--&amp;gt; peer review -----&amp;gt; continuous integration&lt;br /&gt;
          |  ( collective ownership )     |&lt;br /&gt;
          +--&amp;gt;  individual programming ---+&lt;br /&gt;
             &lt;br /&gt;
&lt;br /&gt;
==Code Reviewing an Agile Project==&lt;br /&gt;
&lt;br /&gt;
If you are going to review an Agile Team project code, the best thing that you can do is give this guide to that Team as early as possible and most of your work will be done for you.&lt;br /&gt;
  &lt;br /&gt;
Code review must be done at least at the end of every story and be very fast in order to not introduce delays and detect any error as soon as possible. It's better to do that in every commit to the code repository. That is the reason that peer review is the prefered method for agile code review.&lt;br /&gt;
&lt;br /&gt;
In order to review an Agile Project, you will have to extend the review to the tests.&lt;br /&gt;
&lt;br /&gt;
Are there enough tests?&lt;br /&gt;
&lt;br /&gt;
Is the code covered by the tests? Code coverage measure main value is to find unused code.&lt;br /&gt;
&lt;br /&gt;
Are there the trivial tests? They are as needed as any other test.&lt;br /&gt;
&lt;br /&gt;
Are there commented out tests? Commented out tests means that some one made a test that the code could not pass or take a long time to run.&lt;br /&gt;
&lt;br /&gt;
Are boundary conditions tested? These are the tests around maximum and minimum values or near a change in a condition.&lt;br /&gt;
&lt;br /&gt;
Are bugs exhaustively tested? That is, is an off-by-one bug is found, are there boundary tests for that condition?&lt;br /&gt;
&lt;br /&gt;
Are the test automatic? If the tests requiere manual intervention, they will not be run.&lt;br /&gt;
&lt;br /&gt;
Do the tests conform to F.I.R.S.T.?&lt;br /&gt;
&lt;br /&gt;
  Fast: a slow test is a candidate for removal, as it slows down the &amp;quot;make test, implement, test, refactor&amp;quot; cycle.&lt;br /&gt;
  Independent: one test can not depend on the execution of another one, the order should not matter.&lt;br /&gt;
  Repeatable: one test should give always the same result in any environment if nothing has changed in the code.&lt;br /&gt;
  Self-validating: the result of a test should be Pass or Fail, nothing else. There should not be any manual intervention needed.&lt;br /&gt;
  Timely: the test should be written before the code. That can not be detected with code review, but you can always see the logs of the versioning system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Other Agile Resources==&lt;br /&gt;
&lt;br /&gt;
===The role of testing===&lt;br /&gt;
&lt;br /&gt;
It is so fundamental, that the xDD pervades Agile, test first, test earlier &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Continuous integration===&lt;br /&gt;
it triggers the tests and often static code analysis too. it makes detection of integration problems arise very quickly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===The role of automatic static code analysis in the Agile Methodologies===&lt;br /&gt;
&lt;br /&gt;
===The XDD===&lt;br /&gt;
&lt;br /&gt;
There are many agile practices related to what drivens the development of a project, what they have in common is that they could generate testing code. As a security practicioner, there are two aspects of interest. One, sometimes useful is called &amp;quot;test coverage&amp;quot; and is automatically calculated. 100% code coverage does not mean a good coverage neither a 60% a bad one. It is very difficult to measure the second aspect, the quality&lt;br /&gt;
of the test. There is possitive testing, that aims at the added value of every piece of software and negative testing, related to bugs and security.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Test Driven Development====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TDD is the practice of making the test before coding, it is the extremme application of the &amp;quot;test early&amp;quot; principle. The idea is that the code always will be tested as the test predates the code itself. A very important side effect is that it forces to simplify the code to make it testeable. It could be very low level with very isolated components, called &amp;quot;unit testing&amp;quot; and high level, when it tests clusters of interrelated components, called &amp;quot;functional testing&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
To read more about code coverage: [https://www.owasp.org/index.php/Code_Review_Coverage]&lt;br /&gt;
&lt;br /&gt;
====Behavior Driven Development====&lt;br /&gt;
&lt;br /&gt;
This practice builds upon TDD, providing an interface to non specialists users, shaping the tests around full blown scenarios. As TDD, it generates testing code. &lt;br /&gt;
&lt;br /&gt;
====Domain Driven Design====&lt;br /&gt;
&lt;br /&gt;
This practice consist of... It does not generate code itself, but patterns.&lt;br /&gt;
&lt;br /&gt;
===Refactoring===&lt;br /&gt;
&lt;br /&gt;
Refactoring is the art of changing the code with out changing its behavior. In order to refactor, there must exists a rich battery of tests.&lt;br /&gt;
&lt;br /&gt;
The problem with refactoring, is that thanks to the heavy testing, you can trust that the interface does not change, but behind it, the code can be very volatile. You have to review the code continously, another argument for peer review and automatic static analysis.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References and sources==&lt;br /&gt;
&lt;br /&gt;
Clean Code: A handbook for Agile Software Craftsmanship - Robert C. Martin&lt;br /&gt;
&lt;br /&gt;
http://groups.yahoo.com/group/foro-agiles/&lt;br /&gt;
&lt;br /&gt;
http://martinfowler.com/articles/continuousIntegration.html&lt;br /&gt;
&lt;br /&gt;
http://martinfowler.com/bliki/TestCoverage.html&lt;br /&gt;
&lt;br /&gt;
not used http://refactoring.com/&lt;br /&gt;
&lt;br /&gt;
not used http://dddcommunity.org/&lt;/div&gt;</summary>
		<author><name>Carlos Pantelides</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=CRV2_CodeReviewAgile&amp;diff=155419</id>
		<title>CRV2 CodeReviewAgile</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=CRV2_CodeReviewAgile&amp;diff=155419"/>
				<updated>2013-07-12T05:39:19Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Pantelides: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Charly, remember that it's &amp;quot;code review guide&amp;quot;, not &amp;quot;testing guide&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Some definitions about Agile==&lt;br /&gt;
&lt;br /&gt;
The Agile name is an umbrella for quite a lot of practices that range from programming, to testing, to project management and everything in between. There are many flavours of agile, perhaps as many as practicioners. It is like an heretogeneous reference framework and you are free to use what you want.&lt;br /&gt;
&lt;br /&gt;
Agile has some key practices that could affect the way the code is reviewed. First, when the review is done and then the code itself.&lt;br /&gt;
&lt;br /&gt;
Agile Development is well suited for code review, as two of its practices are &amp;quot;pair programming&amp;quot; and &amp;quot;peer review&amp;quot;. AD incorporates code review in itself, in what traditionally was seem as another phase.&lt;br /&gt;
&lt;br /&gt;
===Life Cycle===&lt;br /&gt;
&lt;br /&gt;
Agile blurs the difference between developing and testing, and so does with code review. It is not an external activity. Agile tries to keep the code testing and review as near as possible to the development phase, there is no such thing as the &amp;quot;develop, test, code review cycle.&lt;br /&gt;
&lt;br /&gt;
Its a common practice to define short production cycles. At the end of each one, all the code must be production quality code. It can be incomplete, but it must add some value. That affects the review process, it must be continuous.&lt;br /&gt;
&lt;br /&gt;
===Pair Programming===&lt;br /&gt;
&lt;br /&gt;
This technique is quite controversial, but when its adopted it has the benefits of making better code, as there is one programmer supervising cooperatively the other one's work. If both programmers know this guide, they will apply it continuously.&lt;br /&gt;
&lt;br /&gt;
===Peer Review===&lt;br /&gt;
&lt;br /&gt;
This one is enforced by the usage of tools like .... that ask another user for a code review before commiting to the versioning system.&lt;br /&gt;
&lt;br /&gt;
The role of testers&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Clean Code and &amp;quot;Smells&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
==The Agile Ecosystem==&lt;br /&gt;
&lt;br /&gt;
    bdd----------------------------------------------------------------------+&lt;br /&gt;
     |                                                                       |&lt;br /&gt;
    tdd-------------------------------------------------------------+        |&lt;br /&gt;
     |                                                              |        |&lt;br /&gt;
     +----+--&amp;gt;   pair programming --------+--&amp;gt; peer review -----&amp;gt; continuous integration&lt;br /&gt;
          |  ( collective ownership )     |&lt;br /&gt;
          +--&amp;gt;  individual programming ---+&lt;br /&gt;
             &lt;br /&gt;
&lt;br /&gt;
==Code Reviewing an Agile Project==&lt;br /&gt;
&lt;br /&gt;
If you are going to review an Agile Team project code, the best thing that you can do is give this guide to that Team as early as possible and most of your work will be done for you.&lt;br /&gt;
  &lt;br /&gt;
Code review must be done at least at the end of every story and be very fast in order to not introduce delays and detect any error as soon as possible. It's better to do that in every commit to the code repository. That is the reason that peer review is the prefered method for agile code review.&lt;br /&gt;
&lt;br /&gt;
In order to review an Agile Project, you will have to extend the review to the tests.&lt;br /&gt;
&lt;br /&gt;
Are there enough tests?&lt;br /&gt;
&lt;br /&gt;
Is the code covered by the tests? Code coverage measure main value is to find unused code.&lt;br /&gt;
&lt;br /&gt;
Are there the trivial tests? They are as needed as any other test.&lt;br /&gt;
&lt;br /&gt;
Are there commented out tests? Commented out tests means that some one made a test that the code could not pass or take a long time to run.&lt;br /&gt;
&lt;br /&gt;
Are boundary conditions tested? These are the tests around maximum and minimum values or near a change in a condition.&lt;br /&gt;
&lt;br /&gt;
Are bugs exhaustively tested? That is, is an off-by-one bug is found, are there boundary tests for that condition?&lt;br /&gt;
&lt;br /&gt;
Are the test automatic? If the tests requiere manual intervention, they will not be run.&lt;br /&gt;
&lt;br /&gt;
Do the tests conform to F.I.R.S.T.?&lt;br /&gt;
&lt;br /&gt;
  Fast: a slow test is a candidate for removal, as it slows down the &amp;quot;make test, implement, test, refactor&amp;quot; cycle.&lt;br /&gt;
&lt;br /&gt;
  Independent: one test can not depend on the execution of another one, the order should not matter.&lt;br /&gt;
&lt;br /&gt;
  Repeatable: one test should give always the same result in any environment if nothing has changed in the code.&lt;br /&gt;
&lt;br /&gt;
  Self-validating: the result of a test should be Pass or Fail, nothing else. There should not be any manual intervention needed.&lt;br /&gt;
&lt;br /&gt;
  Timely: the test should be written before the code. That can not be detected with code review, but you can always see the logs of the versioning system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Other Agile Resources==&lt;br /&gt;
&lt;br /&gt;
===The role of testing===&lt;br /&gt;
&lt;br /&gt;
It is so fundamental, that the xDD pervades Agile, test first, test earlier &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Continuous integration===&lt;br /&gt;
it triggers the tests and often static code analysis too. it makes detection of integration problems arise very quickly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===The role of automatic static code analysis in the Agile Methodologies===&lt;br /&gt;
&lt;br /&gt;
===The XDD===&lt;br /&gt;
&lt;br /&gt;
There are many agile practices related to what drivens the development of a project, what they have in common is that they could generate testing code. As a security practicioner, there are two aspects of interest. One, sometimes useful is called &amp;quot;test coverage&amp;quot; and is automatically calculated. 100% code coverage does not mean a good coverage neither a 60% a bad one. It is very difficult to measure the second aspect, the quality&lt;br /&gt;
of the test. There is possitive testing, that aims at the added value of every piece of software and negative testing, related to bugs and security.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Test Driven Development====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TDD is the practice of making the test before coding, it is the extremme application of the &amp;quot;test early&amp;quot; principle. The idea is that the code always will be tested as the test predates the code itself. A very important side effect is that it forces to simplify the code to make it testeable. It could be very low level with very isolated components, called &amp;quot;unit testing&amp;quot; and high level, when it tests clusters of interrelated components, called &amp;quot;functional testing&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
To read more about code coverage: https://www.owasp.org/index.php/Code_Review_Coverage&lt;br /&gt;
&lt;br /&gt;
====Behavior Driven Development====&lt;br /&gt;
&lt;br /&gt;
This practice builds upon TDD, providing an interface to non specialists users, shaping the tests around full blown scenarios. As TDD, it generates testing code. &lt;br /&gt;
&lt;br /&gt;
====Domain Driven Design====&lt;br /&gt;
&lt;br /&gt;
This practice consist of... It does not generate code, but high level patterns.&lt;br /&gt;
&lt;br /&gt;
===Refactoring===&lt;br /&gt;
&lt;br /&gt;
Refactoring is the art of changing the code with out changing its behavior. In order to refactor, there must exists a rich battery of tests.&lt;br /&gt;
&lt;br /&gt;
The problem with refactoring, is that thanks to the heavy testing, you can trust that the interface does not change, but behind it, the code can be very volatile. You have to review the code continously, another argument for peer review and automatic static analysis.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References and sources==&lt;br /&gt;
&lt;br /&gt;
Clean Code: A handbook for Agile Software Craftsmanship - Robert C. Martin&lt;br /&gt;
&lt;br /&gt;
http://groups.yahoo.com/group/foro-agiles/&lt;br /&gt;
&lt;br /&gt;
http://martinfowler.com/articles/continuousIntegration.html&lt;br /&gt;
&lt;br /&gt;
http://martinfowler.com/bliki/TestCoverage.html&lt;br /&gt;
&lt;br /&gt;
not used http://refactoring.com/&lt;br /&gt;
&lt;br /&gt;
not used http://dddcommunity.org/&lt;/div&gt;</summary>
		<author><name>Carlos Pantelides</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=CRV2_CodeReviewAgile&amp;diff=154346</id>
		<title>CRV2 CodeReviewAgile</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=CRV2_CodeReviewAgile&amp;diff=154346"/>
				<updated>2013-06-23T23:35:42Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Pantelides: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Charly, remember that it's &amp;quot;code review guide&amp;quot;, not &amp;quot;testing guide&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Some definitions about Agile==&lt;br /&gt;
&lt;br /&gt;
The Agile name is an umbrella for quite a lot of practices that range from programming, to testing, to project management and everything in between. There are many flavours of agile, perhaps as many as practicioners. It is like an heretogeneous reference framework and you are free to use what you want.&lt;br /&gt;
&lt;br /&gt;
Agile has some key practices that could affect the way the code is reviewed. First, when the review is done and then the code itself.&lt;br /&gt;
&lt;br /&gt;
Agile Development is well suited for code review, as two of its practices are &amp;quot;pair programming&amp;quot; and &amp;quot;peer review&amp;quot;. AD incorporates code review in itself, in what traditionally was seem as another phase.&lt;br /&gt;
&lt;br /&gt;
===Life Cycle===&lt;br /&gt;
&lt;br /&gt;
Agile blurs the difference between developing and testing, and so does with code review. It is not an external activity. Agile tries to keep the code testing and review as near as possible to the development phase, there is no such thing as the &amp;quot;develop, test, code review cycle.&lt;br /&gt;
&lt;br /&gt;
Its a common practice to define short production cycles. At the end of each one, all the code must be production quality code. It can be incomplete, but it must add some value. That affects the review process, it must be continuous.&lt;br /&gt;
&lt;br /&gt;
===Pair Programming===&lt;br /&gt;
&lt;br /&gt;
This technique is quite controversial, but when its adopted it has the benefits of making better code, as there is one programmer supervising cooperatively the other one's work. If both programmers know this guide, they will apply it continuously.&lt;br /&gt;
&lt;br /&gt;
===Peer Review===&lt;br /&gt;
&lt;br /&gt;
This one is enforced by the usage of tools like .... that ask another user for a code review before commiting to the versioning system.&lt;br /&gt;
&lt;br /&gt;
The role of testers&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Clean Code and &amp;quot;Smells&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
==The Agile Ecosystem==&lt;br /&gt;
&lt;br /&gt;
    bdd----------------------------------------------------------------------+&lt;br /&gt;
     |                                                                       |&lt;br /&gt;
    tdd-------------------------------------------------------------+        |&lt;br /&gt;
     |                                                              |        |&lt;br /&gt;
     +----+--&amp;gt;   pair programming --------+--&amp;gt; peer review -----&amp;gt; continuous integration&lt;br /&gt;
          |  ( collective ownership )     |&lt;br /&gt;
          +--&amp;gt;  individual programming ---+&lt;br /&gt;
             &lt;br /&gt;
&lt;br /&gt;
==Code Reviewing an Agile Project==&lt;br /&gt;
&lt;br /&gt;
If you are going to review an Agile Team project code, the best thing that you can do is give this guide to that Team as early as possible and most of your work will be done for you.&lt;br /&gt;
  &lt;br /&gt;
Code review must be done at least at the end of every story and be very fast in order to not introduce delays and detect any error as soon as possible. It's better to do that in every commit to the code repository. That is the reason that peer review is the prefered method for agile code review.&lt;br /&gt;
&lt;br /&gt;
In order to review an Agile Project, you will have to extend the review to the tests.&lt;br /&gt;
&lt;br /&gt;
Are there enough tests?&lt;br /&gt;
&lt;br /&gt;
Is the code covered by the tests? Code coverage measure main value is to find unused code.&lt;br /&gt;
&lt;br /&gt;
Are there the trivial tests? They are as needed as any other test.&lt;br /&gt;
&lt;br /&gt;
Are there commented out tests? Commented out tests means that some one made a test that the code could not pass or take a long time to run.&lt;br /&gt;
&lt;br /&gt;
Are boundary conditions tested? These are the tests around maximum and minimum values or near a change in a condition.&lt;br /&gt;
&lt;br /&gt;
Are bugs exhaustively tested? That is, is an off-by-one bug is found, are there boundary tests for that condition?&lt;br /&gt;
&lt;br /&gt;
Are the test automatic? If the tests requiere manual intervention, they will not be run.&lt;br /&gt;
&lt;br /&gt;
Do the tests conform to F.I.R.S.T.?&lt;br /&gt;
&lt;br /&gt;
  Fast: a slow test is a candidate for removal, as it slows down the &amp;quot;make test, implement, test, refactor&amp;quot; cycle.&lt;br /&gt;
&lt;br /&gt;
  Independent: one test can not depend on the execution of another one, the order should not matter.&lt;br /&gt;
&lt;br /&gt;
  Repeatable: one test should give always the same result in any environment if nothing has changed in the code.&lt;br /&gt;
&lt;br /&gt;
  Self-validating: the result of a test should be Pass or Fail, nothing else. There should not be any manual intervention needed.&lt;br /&gt;
&lt;br /&gt;
  Timely: the test should be written before the code. That can not be detected with code review, but you can always see the logs of the versioning system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Other Agile Resources==&lt;br /&gt;
&lt;br /&gt;
===The role of testing===&lt;br /&gt;
&lt;br /&gt;
It is so fundamental, that the xDD pervades Agile, test first, test earlier &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Continuous integration===&lt;br /&gt;
it triggers the tests and often static code analysis too. it makes detection of integration problems arise very quickly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===The role of automatic static code analysis in the Agile Methodologies===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Test Driven Development===&lt;br /&gt;
&lt;br /&gt;
It aims at code simplicity due to the need of making it testeable&lt;br /&gt;
&lt;br /&gt;
===Behavior Driven Development===&lt;br /&gt;
&lt;br /&gt;
....&lt;br /&gt;
&lt;br /&gt;
===Domain Driven Design===&lt;br /&gt;
&lt;br /&gt;
....&lt;br /&gt;
&lt;br /&gt;
===Refactoring===&lt;br /&gt;
&lt;br /&gt;
Refactoring is the art of changing the code with out changing its behavior. In order to refactor, there must exists a rich battery of tests.&lt;br /&gt;
&lt;br /&gt;
The problem with refactoring, is that thanks to the heavy testing, you can trust that the interface does not change, but behind it, the code can be very volatile. You have to review the code continously, another argument for peer review and automatic static analysis.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References and sources==&lt;br /&gt;
&lt;br /&gt;
Clean Code: A handbook for Agile Software Craftsmanship - Robert C. Martin&lt;br /&gt;
&lt;br /&gt;
http://groups.yahoo.com/group/foro-agiles/&lt;br /&gt;
&lt;br /&gt;
http://martinfowler.com/articles/continuousIntegration.html&lt;br /&gt;
&lt;br /&gt;
http://martinfowler.com/bliki/TestCoverage.html&lt;br /&gt;
&lt;br /&gt;
not used http://refactoring.com/&lt;br /&gt;
&lt;br /&gt;
not used http://dddcommunity.org/&lt;/div&gt;</summary>
		<author><name>Carlos Pantelides</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=CRV2_CodeReviewAgile&amp;diff=154345</id>
		<title>CRV2 CodeReviewAgile</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=CRV2_CodeReviewAgile&amp;diff=154345"/>
				<updated>2013-06-23T23:25:58Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Pantelides: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Charly, remember that it's &amp;quot;code review guide&amp;quot;, not &amp;quot;testing guide&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Some definitions about Agile==&lt;br /&gt;
&lt;br /&gt;
The Agile name is an umbrella for quite a lot of practices that range from programming, to testing, to project management and everything in between.&lt;br /&gt;
&lt;br /&gt;
Agile has some key practices that could affect the way the code is reviewed.&lt;br /&gt;
&lt;br /&gt;
Agile Development is well suited for code review, as two of its practices are &amp;quot;pair programming&amp;quot; and &amp;quot;peer review&amp;quot;. AD incorporates code review in itself, in what traditionally was seem as another phase.&lt;br /&gt;
&lt;br /&gt;
Agile blurs the difference between developing and testing, and so does with code review. It is not an external activity.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Pair Programming===&lt;br /&gt;
&lt;br /&gt;
This technique is quite controversial, but when its adopted it has the benefits of making better code, as there is one programmer supervising cooperatively the other one's work. If both programmers know this guide, they will apply it continuously.&lt;br /&gt;
&lt;br /&gt;
==Peer Review==&lt;br /&gt;
&lt;br /&gt;
This one is enforced by the usage of tools like .... that ask another user for a code review before commiting to the versioning system.&lt;br /&gt;
&lt;br /&gt;
===Life Cycle===&lt;br /&gt;
&lt;br /&gt;
Agile tries to keep the code testing and review as near as possible to the development phase, there is no such thing as the &amp;quot;develop, test, code review cycle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Clean Code and &amp;quot;Smells&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
==The Agile Ecosystem==&lt;br /&gt;
&lt;br /&gt;
    bdd----------------------------------------------------------------------+&lt;br /&gt;
     |                                                                       |&lt;br /&gt;
    tdd-------------------------------------------------------------+        |&lt;br /&gt;
     |                                                              |        |&lt;br /&gt;
     +----+--&amp;gt;   pair programming --------+--&amp;gt; peer review -----&amp;gt; continuous integration&lt;br /&gt;
          |  ( collective ownership )     |&lt;br /&gt;
          +--&amp;gt;  individual programming ---+&lt;br /&gt;
             &lt;br /&gt;
&lt;br /&gt;
==Code Reviewing an Agile Project==&lt;br /&gt;
&lt;br /&gt;
If you are going to review an Agile Team project code, the best thing that you can do is give this guide to that Team as early as possible and most of your work will be done for you.&lt;br /&gt;
  &lt;br /&gt;
Code review must be done at least at the end of every story and be very fast in order to not introduce delays and detect any error as soon as possible. It's better to do that in every commit to the code repository. That is the reason that peer review is the prefered method for agile code review.&lt;br /&gt;
&lt;br /&gt;
In order to review an Agile Project, you will have to extend the review to the tests.&lt;br /&gt;
&lt;br /&gt;
Are there enough tests?&lt;br /&gt;
&lt;br /&gt;
Is the code covered by the tests? Code coverage measure main value is to find unused code.&lt;br /&gt;
&lt;br /&gt;
Are there the trivial tests? They are as needed as any other test.&lt;br /&gt;
&lt;br /&gt;
Are there commented out tests? Commented out tests means that some one made a test that the code could not pass or take a long time to run.&lt;br /&gt;
&lt;br /&gt;
Are boundary conditions tested? These are the tests around maximum and minimum values or near a change in a condition.&lt;br /&gt;
&lt;br /&gt;
Are bugs exhaustively tested? That is, is an off-by-one bug is found, are there boundary tests for that condition?&lt;br /&gt;
&lt;br /&gt;
Are the test automatic? If the tests requiere manual intervention, they will not be run.&lt;br /&gt;
&lt;br /&gt;
Do the tests conform to F.I.R.S.T.?&lt;br /&gt;
&lt;br /&gt;
  Fast: a slow test is a candidate for removal, as it slows down the &amp;quot;make test, implement, test, refactor&amp;quot; cycle.&lt;br /&gt;
&lt;br /&gt;
  Independent: one test can not depend on the execution of another one, the order should not matter.&lt;br /&gt;
&lt;br /&gt;
  Repeatable: one test should give always the same result in any environment if nothing has changed in the code.&lt;br /&gt;
&lt;br /&gt;
  Self-validating: the result of a test should be Pass or Fail, nothing else. There should not be any manual intervention needed.&lt;br /&gt;
&lt;br /&gt;
  Timely: the test should be written before the code. That can not be detected with code review, but you can always see the logs of the versioning system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Other Agile Resources==&lt;br /&gt;
&lt;br /&gt;
===The role of testing===&lt;br /&gt;
&lt;br /&gt;
It is so fundamental, that the xDD pervades Agile, test first, test earlier &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Continuous integration===&lt;br /&gt;
it triggers the tests and often static code analysis too. it makes detection of integration problems arise very quickly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===The role of automatic static code analysis in the Agile Methodologies===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Test Driven Development===&lt;br /&gt;
&lt;br /&gt;
It aims at code simplicity due to the need of making it testeable&lt;br /&gt;
&lt;br /&gt;
===Behavior Driven Development===&lt;br /&gt;
&lt;br /&gt;
....&lt;br /&gt;
&lt;br /&gt;
===Domain Driven Design===&lt;br /&gt;
&lt;br /&gt;
....&lt;br /&gt;
&lt;br /&gt;
===Refactoring===&lt;br /&gt;
&lt;br /&gt;
Refactoring is the art of changing the code with out changing its behavior. In order to refactor, there must exists a rich battery of tests.&lt;br /&gt;
&lt;br /&gt;
The problem with refactoring, is that thanks to the heavy testing, you can trust that the interface does not change, but behind it, the code can be very volatile. You have to review the code continously, another argument for peer review and automatic static analysis.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References and sources==&lt;br /&gt;
&lt;br /&gt;
Clean Code: A handbook for Agile Software Craftsmanship - Robert C. Martin&lt;br /&gt;
&lt;br /&gt;
http://groups.yahoo.com/group/foro-agiles/&lt;br /&gt;
&lt;br /&gt;
http://martinfowler.com/articles/continuousIntegration.html&lt;br /&gt;
&lt;br /&gt;
http://martinfowler.com/bliki/TestCoverage.html&lt;br /&gt;
&lt;br /&gt;
not used http://refactoring.com/&lt;br /&gt;
&lt;br /&gt;
not used http://dddcommunity.org/&lt;/div&gt;</summary>
		<author><name>Carlos Pantelides</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=CRV2_CodeReviewAgile&amp;diff=154344</id>
		<title>CRV2 CodeReviewAgile</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=CRV2_CodeReviewAgile&amp;diff=154344"/>
				<updated>2013-06-23T23:24:04Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Pantelides: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Charly, remember that it's &amp;quot;code review guide&amp;quot;, not &amp;quot;testing guide&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Some definitions about Agile==&lt;br /&gt;
&lt;br /&gt;
The Agile name is an umbrella for quite a lot of practices that range from programming, to testing, to project management and everything in between.&lt;br /&gt;
&lt;br /&gt;
Agile has some key practices that could affect the way the code is reviewed.&lt;br /&gt;
&lt;br /&gt;
Agile Development is well suited for code review, as two of its practices are &amp;quot;pair programming&amp;quot; and &amp;quot;peer review&amp;quot;. AD incorporates code review in itself, in what traditionally was seem as another phase.&lt;br /&gt;
&lt;br /&gt;
Agile blurs the difference between developing and testing, and so does with code review. It is not an external activity.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Pair Programming==&lt;br /&gt;
&lt;br /&gt;
This technique is quite controversial, but when its adopted it has the benefits of making better code, as there is one programmer supervising cooperatively the other one's work. If both programmers know this guide, they will apply it continuously.&lt;br /&gt;
&lt;br /&gt;
==Peer Review==&lt;br /&gt;
&lt;br /&gt;
This one is enforced by the usage of tools like .... that ask another user for a code review before commiting to the versioning system.&lt;br /&gt;
&lt;br /&gt;
==Life Cycle==&lt;br /&gt;
&lt;br /&gt;
Agile tries to keep the code testing and review as near as possible to the development phase, there is no such thing as the &amp;quot;develop, test, code review cycle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Clean Code and &amp;quot;Smells&amp;quot;==&lt;br /&gt;
&lt;br /&gt;
==The Agile Ecosystem==&lt;br /&gt;
&lt;br /&gt;
    bdd----------------------------------------------------------------------+&lt;br /&gt;
     |                                                                       |&lt;br /&gt;
    tdd-------------------------------------------------------------+        |&lt;br /&gt;
     |                                                              |        |&lt;br /&gt;
     +----+--&amp;gt;   pair programming --------+--&amp;gt; peer review -----&amp;gt; continuous integration&lt;br /&gt;
          |  ( collective ownership )     |&lt;br /&gt;
          +--&amp;gt;  individual programming ---+&lt;br /&gt;
             &lt;br /&gt;
&lt;br /&gt;
==Agile Resources==&lt;br /&gt;
&lt;br /&gt;
===The role of testing===&lt;br /&gt;
&lt;br /&gt;
It is so fundamental, that the xDD pervades Agile, test first, test earlier &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Continuous integration===&lt;br /&gt;
it triggers the tests and often static code analysis too. it makes detection of integration problems arise very quickly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===The role of automatic static code analysis in the Agile Methodologies===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Test Driven Development===&lt;br /&gt;
&lt;br /&gt;
It aims at code simplicity due to the need of making it testeable&lt;br /&gt;
&lt;br /&gt;
===Behavior Driven Development===&lt;br /&gt;
&lt;br /&gt;
....&lt;br /&gt;
&lt;br /&gt;
===Domain Driven Design===&lt;br /&gt;
&lt;br /&gt;
....&lt;br /&gt;
&lt;br /&gt;
===Refactoring===&lt;br /&gt;
&lt;br /&gt;
Refactoring is the art of changing the code with out changing its behavior. In order to refactor, there must exists a rich battery of tests.&lt;br /&gt;
&lt;br /&gt;
The problem with refactoring, is that thanks to the heavy testing, you can trust that the interface does not change, but behind it, the code can be very volatile. You have to review the code continously, another argument for peer review and automatic static analysis.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Code Reviewing an Agile Project==&lt;br /&gt;
&lt;br /&gt;
If you are going to review an Agile Team project code, the best thing that you can do is give this guide to that Team as early as possible and most of your work will be done for you.&lt;br /&gt;
  &lt;br /&gt;
Code review must be done at least at the end of every story and be very fast in order to not introduce delays and detect any error as soon as possible. It's better to do that in every commit to the code repository. That is the reason that peer review is the prefered method for agile code review.&lt;br /&gt;
&lt;br /&gt;
In order to review an Agile Project, you will have to extend the review to the tests.&lt;br /&gt;
&lt;br /&gt;
Are there enough tests?&lt;br /&gt;
&lt;br /&gt;
Is the code covered by the tests? Code coverage measure main value is to find unused code.&lt;br /&gt;
&lt;br /&gt;
Are there the trivial tests? They are as needed as any other test.&lt;br /&gt;
&lt;br /&gt;
Are there commented out tests? Commented out tests means that some one made a test that the code could not pass or take a long time to run.&lt;br /&gt;
&lt;br /&gt;
Are boundary conditions tested? These are the tests around maximum and minimum values or near a change in a condition.&lt;br /&gt;
&lt;br /&gt;
Are bugs exhaustively tested? That is, is an off-by-one bug is found, are there boundary tests for that condition?&lt;br /&gt;
&lt;br /&gt;
Are the test automatic? If the tests requiere manual intervention, they will not be run.&lt;br /&gt;
&lt;br /&gt;
Do the tests conform to F.I.R.S.T.?&lt;br /&gt;
&lt;br /&gt;
  Fast: a slow test is a candidate for removal, as it slows down the &amp;quot;make test, implement, test, refactor&amp;quot; cycle.&lt;br /&gt;
&lt;br /&gt;
  Independent: one test can not depend on the execution of another one, the order should not matter.&lt;br /&gt;
&lt;br /&gt;
  Repeatable: one test should give always the same result in any environment if nothing has changed in the code.&lt;br /&gt;
&lt;br /&gt;
  Self-validating: the result of a test should be Pass or Fail, nothing else. There should not be any manual intervention needed.&lt;br /&gt;
&lt;br /&gt;
  Timely: the test should be written before the code. That can not be detected with code review, but you can always see the logs of the versioning system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
References and sources:&lt;br /&gt;
&lt;br /&gt;
Clean Code: A handbook for Agile Software Craftsmanship - Robert C. Martin&lt;br /&gt;
&lt;br /&gt;
http://groups.yahoo.com/group/foro-agiles/&lt;br /&gt;
&lt;br /&gt;
http://martinfowler.com/articles/continuousIntegration.html&lt;br /&gt;
&lt;br /&gt;
http://martinfowler.com/bliki/TestCoverage.html&lt;br /&gt;
&lt;br /&gt;
not used http://refactoring.com/&lt;br /&gt;
&lt;br /&gt;
not used http://dddcommunity.org/&lt;/div&gt;</summary>
		<author><name>Carlos Pantelides</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=CRV2_CodeReviewAgile&amp;diff=154343</id>
		<title>CRV2 CodeReviewAgile</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=CRV2_CodeReviewAgile&amp;diff=154343"/>
				<updated>2013-06-23T23:15:40Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Pantelides: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Charly, remember that it's &amp;quot;code review guide&amp;quot;, not &amp;quot;testing guide&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Some definitions about Agile==&lt;br /&gt;
&lt;br /&gt;
The Agile name is an umbrella for quite a lot of practices that range from programming, to testing, to project management and everything in between.&lt;br /&gt;
&lt;br /&gt;
Agile has some key practices that could affect the way the code is reviewed.&lt;br /&gt;
&lt;br /&gt;
Agile Development is well suited for code review, as two of its practices are &amp;quot;pair programming&amp;quot; and &amp;quot;peer review&amp;quot;. AD incorporates code review in itself, in what traditionally was seem as another phase.&lt;br /&gt;
&lt;br /&gt;
Agile blurs the difference between developing and testing, and so does with code review. It is not an external activity.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Pair Programming==&lt;br /&gt;
&lt;br /&gt;
This technique is quite controversial, but when its adopted it has the benefits of making better code, as there is one programmer supervising cooperatively the other one's work. If both programmers know this guide, they will apply it continuously.&lt;br /&gt;
&lt;br /&gt;
==Peer Review==&lt;br /&gt;
&lt;br /&gt;
This one is enforced by the usage of tools like .... that ask another user for a code review before commiting to the versioning system.&lt;br /&gt;
&lt;br /&gt;
==Life Cycle==&lt;br /&gt;
&lt;br /&gt;
Agile tries to keep the code testing and review as near as possible to the development phase, there is no such thing as the &amp;quot;develop, test, code review cycle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Clean Code and &amp;quot;Smells&amp;quot;==&lt;br /&gt;
&lt;br /&gt;
==Agile resources==&lt;br /&gt;
&lt;br /&gt;
===The role of testing===&lt;br /&gt;
&lt;br /&gt;
It is so fundamental, that the xDD pervades Agile, test first, test earlier &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Continuous integration===&lt;br /&gt;
it triggers the tests and often static code analysis too. it makes detection of integration problems arise very quickly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===The role of automatic static code analysis in the Agile Methodologies===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Test Driven Development===&lt;br /&gt;
&lt;br /&gt;
It aims at code simplicity due to the need of making it testeable&lt;br /&gt;
&lt;br /&gt;
===Behavior Driven Development===&lt;br /&gt;
&lt;br /&gt;
....&lt;br /&gt;
&lt;br /&gt;
===Domain Driven Design===&lt;br /&gt;
&lt;br /&gt;
....&lt;br /&gt;
&lt;br /&gt;
===Refactoring===&lt;br /&gt;
&lt;br /&gt;
Refactoring is the art of changing the code with out changing its behavior. In order to refactor, there must exists a rich battery of tests.&lt;br /&gt;
&lt;br /&gt;
The problem with refactoring, is that thanks to the heavy testing, you can trust that the interface does not change, but behind it, the code can be very volatile. You have to review the code continously, another argument for peer review and automatic static analysis.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Code Reviewing an Agile Project==&lt;br /&gt;
&lt;br /&gt;
If you are going to review an Agile Team project code, the best thing that you can do is give this guide to that Team as early as possible and most of your work will be done for you.&lt;br /&gt;
  &lt;br /&gt;
Code review must be done at least at the end of every story and be very fast in order to not introduce delays and detect any error as soon as possible. It's better to do that in every commit to the code repository. That is the reason that peer review is the prefered method for agile code review.&lt;br /&gt;
&lt;br /&gt;
In order to review an Agile Project, you will have to extend the review to the tests.&lt;br /&gt;
&lt;br /&gt;
Are there enough tests?&lt;br /&gt;
&lt;br /&gt;
Is the code covered by the tests? Code coverage measure main value is to find unused code.&lt;br /&gt;
&lt;br /&gt;
Are there the trivial tests? They are as needed as any other test.&lt;br /&gt;
&lt;br /&gt;
Are there commented out tests? Commented out tests means that some one made a test that the code could not pass or take a long time to run.&lt;br /&gt;
&lt;br /&gt;
Are boundary conditions tested? These are the tests around maximum and minimum values or near a change in a condition.&lt;br /&gt;
&lt;br /&gt;
Are bugs exhaustively tested? That is, is an off-by-one bug is found, are there boundary tests for that condition?&lt;br /&gt;
&lt;br /&gt;
Are the test automatic? If the tests requiere manual intervention, they will not be run.&lt;br /&gt;
&lt;br /&gt;
Do the tests conform to F.I.R.S.T.?&lt;br /&gt;
&lt;br /&gt;
  Fast: a slow test is a candidate for removal, as it slows down the &amp;quot;make test, implement, test, refactor&amp;quot; cycle.&lt;br /&gt;
&lt;br /&gt;
  Independent: one test can not depend on the execution of another one, the order should not matter.&lt;br /&gt;
&lt;br /&gt;
  Repeatable: one test should give always the same result in any environment if nothing has changed in the code.&lt;br /&gt;
&lt;br /&gt;
  Self-validating: the result of a test should be Pass or Fail, nothing else. There should not be any manual intervention needed.&lt;br /&gt;
&lt;br /&gt;
  Timely: the test should be written before the code. That can not be detected with code review, but you can always see the logs of the versioning system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
References and sources:&lt;br /&gt;
&lt;br /&gt;
Clean Code: A handbook for Agile Software Craftsmanship - Robert C. Martin&lt;br /&gt;
&lt;br /&gt;
http://groups.yahoo.com/group/foro-agiles/&lt;br /&gt;
&lt;br /&gt;
http://martinfowler.com/articles/continuousIntegration.html&lt;br /&gt;
&lt;br /&gt;
http://martinfowler.com/bliki/TestCoverage.html&lt;br /&gt;
&lt;br /&gt;
not used http://refactoring.com/&lt;br /&gt;
&lt;br /&gt;
not used http://dddcommunity.org/&lt;/div&gt;</summary>
		<author><name>Carlos Pantelides</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=CRV2_CodeReviewAgile&amp;diff=154200</id>
		<title>CRV2 CodeReviewAgile</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=CRV2_CodeReviewAgile&amp;diff=154200"/>
				<updated>2013-06-20T21:30:12Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Pantelides: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Charly, remember that it's &amp;quot;code review guide&amp;quot;, not &amp;quot;testing guide&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Some definitions about Agile==&lt;br /&gt;
&lt;br /&gt;
The Agile name is an umbrella for quite a lot of practices that range from programming, to testing, to project management and everything in between.&lt;br /&gt;
&lt;br /&gt;
Agile has some key practices that could affect the way the code is reviewed.&lt;br /&gt;
&lt;br /&gt;
Agile Development is well suited for code review, as two of its practices are &amp;quot;pair programming&amp;quot; and &amp;quot;peer review&amp;quot;. AD incorporates code review in itself, in what traditionally was seem as another phase.&lt;br /&gt;
&lt;br /&gt;
Agile blurs the difference between developing and testing, and so does with code review. It is not an external activity.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Pair Programming==&lt;br /&gt;
&lt;br /&gt;
This technique is quite controversial, but when its adopted it has the benefits of making better code, as there is one programmer supervising cooperatively the other one's work. If both programmers know this guide, they will apply it continuously.&lt;br /&gt;
&lt;br /&gt;
==Peer Review==&lt;br /&gt;
&lt;br /&gt;
This one is enforced by the usage of tools like .... that ask another user for a code review before commiting to the versioning system.&lt;br /&gt;
&lt;br /&gt;
==Life Cycle==&lt;br /&gt;
&lt;br /&gt;
Agile tries to keep the code testing and review as near as possible to the development phase, there is no such thing as the &amp;quot;develop, test, code review cycle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Clean Code and &amp;quot;Smells&amp;quot;==&lt;br /&gt;
&lt;br /&gt;
==The role of testing==&lt;br /&gt;
&lt;br /&gt;
It is so fundamental, that the xDD pervades Agile, test first, test earlier &lt;br /&gt;
&lt;br /&gt;
==Continuous integration==&lt;br /&gt;
it triggers the tests and often static code analysis too. it makes detection of integration problems arise very quickly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==The role of automatic static code analysis in the Agile Methodologies==&lt;br /&gt;
&lt;br /&gt;
==Test Driven Development==&lt;br /&gt;
&lt;br /&gt;
It aims at code simplicity due to the need of making it testeable&lt;br /&gt;
&lt;br /&gt;
==Behavior Driven Development==&lt;br /&gt;
&lt;br /&gt;
....&lt;br /&gt;
&lt;br /&gt;
==Domain Driven Design==&lt;br /&gt;
&lt;br /&gt;
....&lt;br /&gt;
&lt;br /&gt;
==Refactoring==&lt;br /&gt;
&lt;br /&gt;
Refactoring is the art of changing the code with out changing its behavior. The problem is that thanks to the heavy testing, you can trust that the interface does not change, but behind it, the code can be very volatile. You have to review the code continously, another argument for peer review and automatic static analysis.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Code Reviewing an Agile Project==&lt;br /&gt;
&lt;br /&gt;
If you are going to review an Agile Team project code, the best thing that you can do is give this guide to that Team as early as possible and most of your work will be done for you.&lt;br /&gt;
&lt;br /&gt;
In order to review an Agile Project, you will have to extend the review to the tests.&lt;br /&gt;
&lt;br /&gt;
Are there enough tests?&lt;br /&gt;
&lt;br /&gt;
Is the code covered by the tests? &lt;br /&gt;
&lt;br /&gt;
Are there the trivial tests?&lt;br /&gt;
&lt;br /&gt;
Are there commented out tests?&lt;br /&gt;
&lt;br /&gt;
Are boundary conditions tested? &lt;br /&gt;
&lt;br /&gt;
Are bugs exhaustively tested?&lt;br /&gt;
&lt;br /&gt;
Are the test automatic?&lt;br /&gt;
&lt;br /&gt;
Do the tests conform to F.I.R.S.T.?&lt;br /&gt;
&lt;br /&gt;
  Fast: a slow test is a candidate for removal, as it slows down the &amp;quot;make test, implement, test, refactor&amp;quot; cycle.&lt;br /&gt;
&lt;br /&gt;
  Independent: one test can not depend on the execution of another one, the order should not matter.&lt;br /&gt;
&lt;br /&gt;
  Repeatable: one test should give always the same result in any environment if nothing has changed in the code.&lt;br /&gt;
&lt;br /&gt;
  Self-validating: the result of a test should be Pass or Fail, nothing else. There should not be any manual intervention needed.&lt;br /&gt;
&lt;br /&gt;
  Timely: the test should be written before the code. That can not be detected with code review, but you can always see the logs of the versioning system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
References and sources:&lt;br /&gt;
&lt;br /&gt;
Clean Code: A handbook for Agile Software Craftsmanship - Robert C. Martin&lt;br /&gt;
&lt;br /&gt;
http://martinfowler.com/articles/continuousIntegration.html&lt;br /&gt;
&lt;br /&gt;
not used http://refactoring.com/&lt;br /&gt;
&lt;br /&gt;
not used http://dddcommunity.org/&lt;/div&gt;</summary>
		<author><name>Carlos Pantelides</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=CRV2_CodeReviewAgile&amp;diff=154143</id>
		<title>CRV2 CodeReviewAgile</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=CRV2_CodeReviewAgile&amp;diff=154143"/>
				<updated>2013-06-20T02:08:32Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Pantelides: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Charly, remember that it's &amp;quot;code review guide&amp;quot;, not &amp;quot;testing guide&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Some definitions about Agile==&lt;br /&gt;
&lt;br /&gt;
The Agile name is an umbrella for quite a lot of practices that range from programming, to testing, to project management and everything in between.&lt;br /&gt;
&lt;br /&gt;
Agile has some key practices that could affect the way the code is reviewed.&lt;br /&gt;
&lt;br /&gt;
Agile Development is well suited for code review, as two of its key practices are &amp;quot;pair programming&amp;quot; and &amp;quot;peer review&amp;quot;. AD incorporates code review in itself, in what traditionally was seem as another phase.&lt;br /&gt;
&lt;br /&gt;
Agile blurs the difference between developing and testing, and so does with code review. It is not an external activity.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Pair Programming==&lt;br /&gt;
&lt;br /&gt;
This technique is quite controversial, but when its adopted it has the benefits of making better code, as there is one programmer supervising cooperatively the other one's work. If both programmers know this guide, they will apply it continuously.&lt;br /&gt;
&lt;br /&gt;
==Peer Review==&lt;br /&gt;
&lt;br /&gt;
This one is enforced by the usage of tools like .... that ask another user for a code review before commiting to the versioning system.&lt;br /&gt;
&lt;br /&gt;
==Life Cycle==&lt;br /&gt;
AD tries to keep the code review as near as possible to the development phase, there is no such thing as develop, test, code review cycle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Clean Code and &amp;quot;Smells&amp;quot;==&lt;br /&gt;
&lt;br /&gt;
==The role of testing==&lt;br /&gt;
&lt;br /&gt;
It is so fundamental, that the xDD pervades Agile, test first, test earlier &lt;br /&gt;
&lt;br /&gt;
==Continuous integration==&lt;br /&gt;
it triggers the tests and often static code analysis too. it makes detection of integration problems arise very quickly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==The role of automatic static code analysis in the Agile Methodologies==&lt;br /&gt;
&lt;br /&gt;
==Test Driven Development==&lt;br /&gt;
&lt;br /&gt;
It aims at code simplicity due to the need of making it testeable&lt;br /&gt;
&lt;br /&gt;
==Behavior Driven Development==&lt;br /&gt;
&lt;br /&gt;
....&lt;br /&gt;
&lt;br /&gt;
==Domain Driven Design==&lt;br /&gt;
&lt;br /&gt;
....&lt;br /&gt;
&lt;br /&gt;
==Refactoring==&lt;br /&gt;
&lt;br /&gt;
Refactoring is the art of changing the code with out changing its behavior. The problem is that thanks to the heavy testing, you can trust that the interface does not change, but behind it, the code can be very volatile. You have to review the code continously, another argument for peer review and automatic static analysis.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Code Reviewing an Agile Project==&lt;br /&gt;
&lt;br /&gt;
If you are going to review an Agile Team project code, the best thing that you can do is give this guide to that Team as early as possible and most of your work will be done for you.&lt;br /&gt;
&lt;br /&gt;
In order to review an Agile Project, you will have to extend the review to the tests and ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
&lt;br /&gt;
http://martinfowler.com/articles/continuousIntegration.html&lt;br /&gt;
&lt;br /&gt;
http://refactoring.com/&lt;br /&gt;
&lt;br /&gt;
http://dddcommunity.org/&lt;/div&gt;</summary>
		<author><name>Carlos Pantelides</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=CRV2_CodeReviewAgile&amp;diff=154142</id>
		<title>CRV2 CodeReviewAgile</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=CRV2_CodeReviewAgile&amp;diff=154142"/>
				<updated>2013-06-20T02:00:02Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Pantelides: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Charly, remember that it's &amp;quot;code review guide&amp;quot;, not &amp;quot;testing guide&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Some definitions about Agile==&lt;br /&gt;
&lt;br /&gt;
The Agile name is an umbrella for quite a lot of practices that range from programming, to testing, to project management.&lt;br /&gt;
&lt;br /&gt;
Agile has some key practices that could affect the way the code is reviewed.&lt;br /&gt;
&lt;br /&gt;
Agile Development is well suited for code review, as two of its key practices are &amp;quot;pair programming&amp;quot; and &amp;quot;peer review&amp;quot;. AD incorporates code review in itself&lt;br /&gt;
&lt;br /&gt;
Agile blurs the difference between developing and testing, and so it does with code review. It is not an external activity.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Pair Programming==&lt;br /&gt;
&lt;br /&gt;
This technique is quite controversial, but when its adopted it has the benefits of making better code, as there is one programmer supervising cooperatively the other one's work. If both programmers know this guide, they will apply it continuously.&lt;br /&gt;
&lt;br /&gt;
==Peer Review==&lt;br /&gt;
&lt;br /&gt;
This one is enforced by the usage of tools like .... that ask another user for a code review before commiting to the versioning system.&lt;br /&gt;
&lt;br /&gt;
==Life Cycle==&lt;br /&gt;
AD tries to keep the code review as near as possible to the development phase, there is no such thing as develop, test, code review cycle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you are going to review an Agile Team project code, the best thing that you can do is give this guide to that Team as early as possible and most of your work will be done for you.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Clean Code and &amp;quot;Smells&amp;quot;==&lt;br /&gt;
&lt;br /&gt;
==The role of testing==&lt;br /&gt;
&lt;br /&gt;
It is so fundamental, that the xDD pervades Agile, test first, test earlier &lt;br /&gt;
&lt;br /&gt;
==continuous integration==&lt;br /&gt;
it triggers the tests and often static code analysis too. it makes detection of integration problems arise very quickly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==The role of automatic static code analysis in the Agile Methodologies==&lt;br /&gt;
&lt;br /&gt;
==Test Driven Development==&lt;br /&gt;
&lt;br /&gt;
It aims at code simplicity due to the need of making it testeable&lt;br /&gt;
&lt;br /&gt;
==Behavior Driven Development==&lt;br /&gt;
&lt;br /&gt;
....&lt;br /&gt;
&lt;br /&gt;
==Domain Driven Design==&lt;br /&gt;
&lt;br /&gt;
....&lt;br /&gt;
&lt;br /&gt;
==Refactoring==&lt;br /&gt;
&lt;br /&gt;
Refactoring is the art of changing the code with out changing its behavior. The problem is that thanks to the heavy testing, you can trust that the interface does not change, but behind it, the code can be very volatile. You have to review the code continously, another argument for peer review and automatic static analysis.&lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
&lt;br /&gt;
http://martinfowler.com/articles/continuousIntegration.html&lt;/div&gt;</summary>
		<author><name>Carlos Pantelides</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=CRV2_CodeReviewAgile&amp;diff=154138</id>
		<title>CRV2 CodeReviewAgile</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=CRV2_CodeReviewAgile&amp;diff=154138"/>
				<updated>2013-06-20T00:58:22Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Pantelides: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Charly, remember that it's &amp;quot;code review guide&amp;quot;, not &amp;quot;testing guide&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Some definitions about Agile==&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Agile Development is well suited for code review, as two of its best practices are &amp;quot;peer programming&amp;quot; and &amp;quot;peer review&amp;quot;. AD incorporates code review in itself &lt;br /&gt;
&lt;br /&gt;
==Peer Programming==&lt;br /&gt;
&lt;br /&gt;
This technique consists of ...&lt;br /&gt;
&lt;br /&gt;
==Peer Review==&lt;br /&gt;
&lt;br /&gt;
This one is enforced by the usage of tools like .... that ask another user for a code review before commiting to the versioning system.&lt;br /&gt;
&lt;br /&gt;
==LifeCycle==&lt;br /&gt;
AD tries to keep the code review as near as possible to the development phase, there is no such thing as develop, test, code review cycle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you are going to review an Agile Team project code, the best thing that you can do is give this guide to that Team as early as possible and most of your work will be done for you.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Clean Code and &amp;quot;Smells&amp;quot;==&lt;br /&gt;
&lt;br /&gt;
==The role of testing==&lt;br /&gt;
&lt;br /&gt;
It is so fundamental, that the xDD pervades Agile, test first, test earlier &lt;br /&gt;
&lt;br /&gt;
==continuous integration==&lt;br /&gt;
it can trigger static code analysis&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==The role of automatic static code analysis in the Agile Methodologies==&lt;br /&gt;
&lt;br /&gt;
==Test Driven Development==&lt;br /&gt;
&lt;br /&gt;
It aims at code simplicity due to the need of making it testeable&lt;br /&gt;
&lt;br /&gt;
==Behavior Driven Development==&lt;br /&gt;
&lt;br /&gt;
....&lt;br /&gt;
&lt;br /&gt;
==Domaing Driven Design==&lt;br /&gt;
&lt;br /&gt;
....&lt;/div&gt;</summary>
		<author><name>Carlos Pantelides</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=CRV2_CodeReviewAgile&amp;diff=154137</id>
		<title>CRV2 CodeReviewAgile</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=CRV2_CodeReviewAgile&amp;diff=154137"/>
				<updated>2013-06-20T00:50:23Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Pantelides: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Charly, remember that it's &amp;quot;code review guide&amp;quot;, not &amp;quot;testing guide&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Some definitions about Agile=&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Agile Development is well suited for code review, as two of its best practices are &amp;quot;peer programming&amp;quot; and &amp;quot;peer review&amp;quot;. AD incorporates code review in itself &lt;br /&gt;
&lt;br /&gt;
==Peer Programming==&lt;br /&gt;
&lt;br /&gt;
This technique consists of ...&lt;br /&gt;
&lt;br /&gt;
==Peer Review==&lt;br /&gt;
&lt;br /&gt;
This one is enforced by the usage of tools like .... that ask another user for a code review before commiting to the versioning system.&lt;br /&gt;
&lt;br /&gt;
==LifeCycle==&lt;br /&gt;
AD tries to keep the code review as near as possible to the development phase, there is no such thing as develop, test, code review cycle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Clean Code and &amp;quot;Smells&amp;quot;==&lt;br /&gt;
&lt;br /&gt;
==The role of testing==&lt;br /&gt;
&lt;br /&gt;
It is so fundamental, that the xDD pervades Agile, test first, test earlier &lt;br /&gt;
&lt;br /&gt;
==continuous integration==&lt;br /&gt;
it can trigger static code analysis&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==The role of automatic static code analysis in the Agile Methodologies==&lt;br /&gt;
&lt;br /&gt;
==Test Driven Development==&lt;br /&gt;
&lt;br /&gt;
It aims at code simplicity due to the need of making it testeable&lt;br /&gt;
&lt;br /&gt;
==Behavior Driven Development==&lt;br /&gt;
&lt;br /&gt;
....&lt;br /&gt;
&lt;br /&gt;
==Domaing Driven Design==&lt;br /&gt;
&lt;br /&gt;
....&lt;/div&gt;</summary>
		<author><name>Carlos Pantelides</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=CRV2_CodeReviewAgile&amp;diff=154135</id>
		<title>CRV2 CodeReviewAgile</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=CRV2_CodeReviewAgile&amp;diff=154135"/>
				<updated>2013-06-20T00:26:23Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Pantelides: Created page with &amp;quot;Agile Development is well suited for code review, as two of its best practices are &amp;quot;peer programming&amp;quot; and &amp;quot;peer review&amp;quot;.   The fis The last one is enforced by the usage of too...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Agile Development is well suited for code review, as two of its best practices are &amp;quot;peer programming&amp;quot; and &amp;quot;peer review&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
The fis&lt;br /&gt;
The last one is enforced by the usage of tools like .... that ask another user for a code review before commiting to the versioning system.&lt;br /&gt;
&lt;br /&gt;
AD tries to keep the code review as near as possible to the development phase, there is no such thing as develop, test, code review cycle.&lt;/div&gt;</summary>
		<author><name>Carlos Pantelides</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Code_Review_V2_Table_of_Contents&amp;diff=154134</id>
		<title>OWASP Code Review V2 Table of Contents</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Code_Review_V2_Table_of_Contents&amp;diff=154134"/>
				<updated>2013-06-20T00:22:47Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Pantelides: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= '''OWASP Code Review Guide v2.0:''' =&lt;br /&gt;
&lt;br /&gt;
==Forward==&lt;br /&gt;
# Author - Eoin Keary&lt;br /&gt;
# Previous version to be updated:[[https://www.owasp.org/index.php/Code_Review_Guide_History]]&lt;br /&gt;
'''[[CRV2_Forward|Content here]]'''&lt;br /&gt;
&lt;br /&gt;
== Code Review Guide Introduction==&lt;br /&gt;
# Author - Eoin Keary&lt;br /&gt;
# Previous version to be updated:[[https://www.owasp.org/index.php/Code_Review_Introduction]]&lt;br /&gt;
'''[[CRV2_Introduction|Content here]]'''&lt;br /&gt;
&lt;br /&gt;
=== What is source code review and Static Analysis ===&lt;br /&gt;
# Author - Zyad Mghazli&lt;br /&gt;
# New Section&lt;br /&gt;
''' [[CRV2_WhatIsCodeReview|Content here]]'''&lt;br /&gt;
&lt;br /&gt;
=== Manual Review - Pros and Cons ===&lt;br /&gt;
# Author - Ashish Rao&lt;br /&gt;
# New Section&lt;br /&gt;
# Suggestion: Benchmark of different Stataic Analysis Tools  Zyad Mghazli&lt;br /&gt;
# Suggestion: Highlight the advantages of code review to the department/team - Gary David Robinson&lt;br /&gt;
# [[CRV2_ManualReviewProsCons|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=== Why code review ===&lt;br /&gt;
==== Scope and Objective of secure code review ====&lt;br /&gt;
# Author - Ashish Rao&lt;br /&gt;
# [[CRV2_WhyCodeReview|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=== We can't hack ourselves secure ===&lt;br /&gt;
# Author - Prathamesh Mhatre&lt;br /&gt;
# New Section&lt;br /&gt;
# [[CRV2_CantHackSecure|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=== 360 Review: Coupling source code review and Testing / Hybrid Reviews===&lt;br /&gt;
# Author - Ashish Rao&lt;br /&gt;
# New Section&lt;br /&gt;
# [[CRV2_360Review|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=== Can static code analyzers do it all? ===&lt;br /&gt;
# Author - Ashish Rao&lt;br /&gt;
# New Section&lt;br /&gt;
# [[CRV2_CanStaticAnalyzersDoAll|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=Methodology=&lt;br /&gt;
===The code review approach===&lt;br /&gt;
#Author -  Prathamesh Mhatre&lt;br /&gt;
# [[CRV2_CodeReviewApproach|Put content here]]&lt;br /&gt;
&lt;br /&gt;
==== Preparation and context ====&lt;br /&gt;
# Author - Open&lt;br /&gt;
# Previous version to be updated: [[https://www.owasp.org/index.php/Code_Review_Preparation]]&lt;br /&gt;
# [[CRV2_PrepContext|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Application Threat Modeling====&lt;br /&gt;
#Author - Andy, Renchie Joan&lt;br /&gt;
# Previous version to be updated: [[https://www.owasp.org/OCRG1.1:Application_Threat_Modeling]]&lt;br /&gt;
# [[CRV2_AppThreatModeling|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Understanding Code layout/Design/Architecture====&lt;br /&gt;
#Author - Ashish Rao&lt;br /&gt;
# [[CRV2_CodeLayoutDesignArch|Put content here]]&lt;br /&gt;
&lt;br /&gt;
===SDLC Integration===&lt;br /&gt;
#Author - Andy, Ashish Rao&lt;br /&gt;
# Previous version to be updated: [[https://www.owasp.org/index.php/Security_Code_Review_in_the_SDLC]]&lt;br /&gt;
# [[CRV2_SDLCInt|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Deployment Models====&lt;br /&gt;
=====Secure deployment configurations=====&lt;br /&gt;
#Author - Ashish Rao&lt;br /&gt;
# [[CRV2_SecDepConfig|Put content here]]&lt;br /&gt;
&lt;br /&gt;
# New Section&lt;br /&gt;
=====Metrics and code review=====&lt;br /&gt;
#Author - Andy&lt;br /&gt;
# Previous version to be updated: [[https://www.owasp.org/index.php/Code_Review_Metrics]]&lt;br /&gt;
# [[CRV2_MetricsCodeRev|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=====Source and sink reviews=====&lt;br /&gt;
#Author - Ashish Rao&lt;br /&gt;
# New Section&lt;br /&gt;
# [[CRV2_SourceSinkRev|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=====Code review Coverage=====&lt;br /&gt;
#Author - Open&lt;br /&gt;
#Previous version to be updated: [[https://www.owasp.org/index.php/Code_Review_Coverage]]&lt;br /&gt;
# [[CRV2_CodeRevCoverage|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=====Design Reviews=====&lt;br /&gt;
#Author - Ashish Rao&lt;br /&gt;
*Why to review design?&lt;br /&gt;
**Building security in design - secure by design principle&lt;br /&gt;
**Design Areas to be reviewed&lt;br /&gt;
**Common Design Flaws&lt;br /&gt;
# [[CRV2_DesignRev|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=====A Risk based approach to code review=====&lt;br /&gt;
#Author - Renchie Joan&lt;br /&gt;
#New Section&lt;br /&gt;
*&amp;quot;Doing things right or doing the right things...&amp;quot;&lt;br /&gt;
**&amp;quot;Not all bugs are equal&lt;br /&gt;
# [[CRV2_RiskBasedApproach|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Crawling code====&lt;br /&gt;
#Author - Abbas Naderi&lt;br /&gt;
# Previous version to be updated: [[https://www.owasp.org/index.php/Crawling_Code]]&lt;br /&gt;
*API of Interest:&lt;br /&gt;
**Java&lt;br /&gt;
**.NET&lt;br /&gt;
**PHP&lt;br /&gt;
**RUBY&lt;br /&gt;
*Frameworks:&lt;br /&gt;
**Spring&lt;br /&gt;
**.NET MVC&lt;br /&gt;
**Structs&lt;br /&gt;
**Zend&lt;br /&gt;
#New Section&lt;br /&gt;
*Searching for code in C/C++&lt;br /&gt;
#Author - Gary Robinson&lt;br /&gt;
&lt;br /&gt;
# [[CRV2_CrawlingCode|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Code reviews and Compliance====&lt;br /&gt;
#Author -Manual Harti&lt;br /&gt;
# Previous version to be updated: [[https://www.owasp.org/index.php/Code_Reviews_and_Compliance]]&lt;br /&gt;
# [[CRV2_CodeRevCompliance|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=Reviewing by Techincal Control=&lt;br /&gt;
===Reviewing code for Authentication controls===&lt;br /&gt;
#Author - Anand Prakash, Joan Renchie&lt;br /&gt;
# [[CRV2_AuthControls|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Forgot password====&lt;br /&gt;
#Author Abbas Naderi&lt;br /&gt;
# [[CRV2_ForgotPassword|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Authentication====&lt;br /&gt;
#Author - Anand Prakash, Joan Renchie&lt;br /&gt;
# [[CRV2_Authentication|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====CAPTCHA====&lt;br /&gt;
#Author Larry Conklin, Joan Renchie&lt;br /&gt;
'''[[CRV2_CAPTCHA|Content here]]'''&lt;br /&gt;
&lt;br /&gt;
====Out of Band considerations====&lt;br /&gt;
#Author - Open&lt;br /&gt;
# Previous version to be updated: [[https://www.owasp.org/index.php/Codereview-Authentication]]&lt;br /&gt;
# [[CRV2_OutofBand|Put content here]]&lt;br /&gt;
&lt;br /&gt;
===Reviewing code Authorization weakness===&lt;br /&gt;
#Author Ashish Rao&lt;br /&gt;
# [[CRV2_AuthorizationWeaknesses|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Checking authz upon every request====&lt;br /&gt;
#Author - Abbas Naderi, Joan Renchie&lt;br /&gt;
# [[CRV2_CheckAuthzEachRequest|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Reducing the attack surface====&lt;br /&gt;
#Author Chris Berberich&lt;br /&gt;
# Previous version to be updated: [[https://www.owasp.org/index.php/Codereview-Authorization]]&lt;br /&gt;
# [[CRV2_ReducingAttSurf|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Reviewing code for Session handling====&lt;br /&gt;
#Author - Palak Gohil, Abbas Naderi&lt;br /&gt;
# Previous version to be updated: [[https://www.owasp.org/index.php/Codereview-Session-Management]]&lt;br /&gt;
# [[CRV2_SessionHandling|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Reviewing client side code====&lt;br /&gt;
#New Section&lt;br /&gt;
# [[CRV2_ClientSideCodeIntro|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=====Javascript=====&lt;br /&gt;
#Author - Abbas Naderi&lt;br /&gt;
# [[CRV2_ClientSideCodeJScript|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=====JSON=====&lt;br /&gt;
#Author - Open&lt;br /&gt;
# [[CRV2_ClientSideCodeJSon|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=====Content Security Policy=====&lt;br /&gt;
#Author - Open&lt;br /&gt;
# [[CRV2_ClientSideCodeContSecPolicy|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=====&amp;quot;Jacking&amp;quot;/Framing=====&lt;br /&gt;
#Author - Abbas Naderi&lt;br /&gt;
# [[CRV2_ClientSideCodeJackingFraming|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=====HTML 5?=====&lt;br /&gt;
#Author - Sebastien Gioria&lt;br /&gt;
# [[CRV2_ClientSideCodeHTML5|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=====Browser Defenses policy=====&lt;br /&gt;
#Author - Open&lt;br /&gt;
# [[CRV2_ClientSideCodeBrowserDefPol|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=====etc...=====&lt;br /&gt;
&lt;br /&gt;
====Review code for input validation====&lt;br /&gt;
#Author - Open&lt;br /&gt;
# [[CRV2_InputValIntro|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=====Regex Gotchas=====&lt;br /&gt;
#Author - Abbas Naderi&lt;br /&gt;
#New Section&lt;br /&gt;
# [[CRV2_InputValRegexGotchas|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=====ESAPI=====&lt;br /&gt;
#Author - Abbas Naderi&lt;br /&gt;
#New Section&lt;br /&gt;
# Internal Link: [[https://www.owasp.org/index.php/Codereview-Input_Validation]]&lt;br /&gt;
# [[CRV2_InputValESAPI|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Reviewing code for contextual encoding====&lt;br /&gt;
=====HTML Attribute=====&lt;br /&gt;
#Author - Shenai Silva&lt;br /&gt;
# [[CRV2_ContextEncHTMLAttribute|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=====HTML Entity=====&lt;br /&gt;
#Author - Shenai Silva&lt;br /&gt;
# [[CRV2_ContextEncHTMLEntity|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=====Javascript Parameters=====&lt;br /&gt;
#Author - Open&lt;br /&gt;
# [[CRV2_ContextEncJscriptParams|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=====JQuery=====&lt;br /&gt;
#Author - Abbas Naderi&lt;br /&gt;
# [[CRV2_ContextEncJQuery|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Reviewing file and resource handling code====&lt;br /&gt;
#Author - Open&lt;br /&gt;
# [[CRV2_FileResourceHandling|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Resource Exhaustion - error handling====&lt;br /&gt;
#Author - Abbas Naderi&lt;br /&gt;
# [[CRV2_ResourceExhaustionErrHandling|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=====native calls=====&lt;br /&gt;
#Author Abbas Naderi&lt;br /&gt;
# [[CRV2_ResourceExhaustionNativeCalls|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Reviewing Logging code - Detective Security====&lt;br /&gt;
#Author - Palak Gohil&lt;br /&gt;
* Where to Log&lt;br /&gt;
* What to log&lt;br /&gt;
* What not to log&lt;br /&gt;
* How to log&lt;br /&gt;
# Internal link: [[https://www.owasp.org/index.php/Logging_Cheat_Sheet]]&lt;br /&gt;
# [[CRV2_LoggingCode|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Reviewing Error handling and Error messages====&lt;br /&gt;
#Author - Gary Robinson&lt;br /&gt;
# Previous version to be updated: [[https://www.owasp.org/index.php/Codereview-Error-Handling]]&lt;br /&gt;
# [[CRV2_ErrorHandlingMessages|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Reviewing Security alerts====&lt;br /&gt;
#Author - Open&lt;br /&gt;
# [[CRV2_SecurityAlerts|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Review for active defense====&lt;br /&gt;
#Author - Colin Watson&lt;br /&gt;
# [[CRV2_ActiveDefense|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Reviewing Secure Storage====&lt;br /&gt;
#Author - Azzeddine Ramrami&lt;br /&gt;
# New Section&lt;br /&gt;
# [[CRV2_SecureStorage|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Hashing &amp;amp; Salting - When, How and Where====&lt;br /&gt;
=====Encrpyption=====&lt;br /&gt;
======.NET======&lt;br /&gt;
#Author Larry Conklin, Joan Renchie&lt;br /&gt;
# Previous version to be updated: [[https://www.owasp.org/index.php/Codereview-Cryptographic_Controls]]&lt;br /&gt;
*''Can we talk about key storage as well i.e. key management for encryption techniques used in the application? - Ashish Rao''&lt;br /&gt;
'''[[CRV2_HashingandSaltingdotNet|Content here]]'''&lt;br /&gt;
&lt;br /&gt;
=Reviewing by Vulnerability=&lt;br /&gt;
===Review Code for XSS===&lt;br /&gt;
#Author Palak Gohil, Anand Prakash&lt;br /&gt;
# Previous version to be updated: [[https://www.owasp.org/index.php/Reviewing_Code_for_Cross-Site_Scripting]]&lt;br /&gt;
# In reviewing code for XSS - we can give more patterns on &amp;quot;source to sink&amp;quot; patterns for ASP.NET wrf to difference versions and mechanisms to display data in a page - Ashish Rao&lt;br /&gt;
# [[CRV2_RevCodeXSS|Put content here]]&lt;br /&gt;
&lt;br /&gt;
===Persistent - The Anti pattern===&lt;br /&gt;
#Author Abbas Naderi&lt;br /&gt;
# [[CRV2_RevCodePersistentAntiPatternIntro|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====.NET====&lt;br /&gt;
#Author Johanna Curiel, Renchie Joan, Larry Conklin&lt;br /&gt;
# [[CRV2_RevCodePersistentAntiPatterndotNet|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====.Java====&lt;br /&gt;
#Author Palak Gohil&lt;br /&gt;
# [[CRV2_RevCodePersistentAntiPatternJava|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====PHP====&lt;br /&gt;
#Author Mohammed Damavandi, Abbas Naderi&lt;br /&gt;
# [[CRV2_RevCodePersistentAntiPatternPHP|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Ruby====&lt;br /&gt;
#Author Chris Berberich&lt;br /&gt;
# [[CRV2_RevCodePersistentAntiPatternRuby|Put content here]]&lt;br /&gt;
&lt;br /&gt;
===Reflected - The Anti pattern===&lt;br /&gt;
# [[CRV2_RevCodeReflectedAntiPatternIntro|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====.NET====&lt;br /&gt;
#Author Johanna Curiel, Renchie Joan&lt;br /&gt;
# [[CRV2_RevCodeReflectedAntiPatterndotNet|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====.Java====&lt;br /&gt;
#Author Palak Gohil&lt;br /&gt;
# [[CRV2_RevCodeReflectedAntiPatternJava|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====PHP====&lt;br /&gt;
#Author Mohammed Damavandi, Abbas Naderi&lt;br /&gt;
# [[CRV2_RevCodeReflectedAntiPatternPHP|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Ruby====&lt;br /&gt;
# Author - Open&lt;br /&gt;
# [[CRV2_RevCodeReflectedAntiPatternIRuby|Put content here]]&lt;br /&gt;
&lt;br /&gt;
===Stored - The Anti pattern===&lt;br /&gt;
# Author - Open&lt;br /&gt;
# [[CRV2_RevCodeStoredAntiPatternIntro|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====.NET====&lt;br /&gt;
#Author Johanna Curiel, Renchie Joan&lt;br /&gt;
# [[CRV2_RevCodeStoredAntiPatterndotNET|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====.Java====&lt;br /&gt;
#Author Palak Gohil&lt;br /&gt;
# [[CRV2_RevCodeStoredAntiPatternJava|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====PHP====&lt;br /&gt;
#Author Mohammed Damavandi, Abbas Naderi&lt;br /&gt;
# [[CRV2_RevCodeStoredAntiPatternPHP|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Ruby====&lt;br /&gt;
#Author - Open&lt;br /&gt;
# [[CRV2_RevCodeStoredAntiPatternRuby|Put content here]]&lt;br /&gt;
&lt;br /&gt;
===DOM XSS ===&lt;br /&gt;
#Author Larry Conklin&lt;br /&gt;
# [[CRV2_DOMXSS|Put content here]]&lt;br /&gt;
&lt;br /&gt;
===JQuery mistakes===&lt;br /&gt;
#Author Shenal Silva&lt;br /&gt;
# [[CRV2_JQueryMistakes|Put content here]]&lt;br /&gt;
&lt;br /&gt;
===Reviewing code for SQL Injection===&lt;br /&gt;
#Author Palak Gohil, Renchie Joan&lt;br /&gt;
# Previous version to be updated: [[https://www.owasp.org/index.php/Reviewing_Code_for_SQL_Injection]]&lt;br /&gt;
# [[CRV2_RevCodeSQLInjection|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====PHP====&lt;br /&gt;
#Author - Mennouchi Islam Azeddine&lt;br /&gt;
# [[CRV2_SQLInjPHP|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Java====&lt;br /&gt;
#Author - Open&lt;br /&gt;
# [[CRV2_SQLInjJava|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====.NET====&lt;br /&gt;
#Author - Mennouchi Islam Azeddine&lt;br /&gt;
# [[CRV2_SQLInjdotNET|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====HQL====&lt;br /&gt;
#Author - Open&lt;br /&gt;
# [[CRV2_SQLInjHQL|Put content here]]&lt;br /&gt;
&lt;br /&gt;
===The Anti pattern===&lt;br /&gt;
#Author Larry Conklin&lt;br /&gt;
#[[CRV2_AntiPattern| Content here]]&lt;br /&gt;
https://www.owasp.org/index.php/CRV2_AntiPattern&lt;br /&gt;
====PHP====&lt;br /&gt;
#Author - Mohammad Damavandi, Abbas Naderi&lt;br /&gt;
# [[CRV2_AntiPatternPHP|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Java====&lt;br /&gt;
#Author - Palak Gohil&lt;br /&gt;
#=&amp;gt; Searching for traditional SQL,JPA,JPSQL,Criteria,...&lt;br /&gt;
# [[CRV2_AntiPatternJava|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====.NET====&lt;br /&gt;
#Author Johanna Curiel, Renchie Joan,Larry Conklin&lt;br /&gt;
# [[CRV2_AntiPatterndotNet|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Ruby====&lt;br /&gt;
#Author - Open&lt;br /&gt;
# [[CRV2_AntiPatternRuby|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Cold Fusion====&lt;br /&gt;
#Author - Open&lt;br /&gt;
# [[CRV2_AntiPatternColdFusion|Put content here]]&lt;br /&gt;
&lt;br /&gt;
===Reviewing code for CSRF Issues===&lt;br /&gt;
#Author Palak Gohil,Anand Prakash, Abbas Naderi&lt;br /&gt;
# Previous version to be updated: [[https://www.owasp.org/index.php/Reviewing_Code_for_Cross-Site_Request_Forgery]]&lt;br /&gt;
# [[CRV2_CSRFIssues|Put content here]]&lt;br /&gt;
&lt;br /&gt;
===Transactional logic / Non idempotent functions / State Changing Functions===&lt;br /&gt;
#Author Abbas Naderi&lt;br /&gt;
# [[CRV2_TransLogic|Put content here]]&lt;br /&gt;
&lt;br /&gt;
===Reviewing code for poor logic /Business logic/Complex authorization===&lt;br /&gt;
#Author - Sam Denard&lt;br /&gt;
# [[CRV2_PoorLogic|Put content here]]&lt;br /&gt;
&lt;br /&gt;
===Reviewing Secure Communications===&lt;br /&gt;
====.NET Config====&lt;br /&gt;
#Author Johanna Curiel, Renchie Joan&lt;br /&gt;
# [[CRV2_SecCommsdotNet|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Spring Config====&lt;br /&gt;
#Author - Open&lt;br /&gt;
# [[CRV2_SecCommsSpringConfig|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====HTTP Headers====&lt;br /&gt;
#Author Gregory Disney, Abbas Naderi&lt;br /&gt;
# [[CRV2_SecCommsHTTPHdrs|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=====CSP=====&lt;br /&gt;
#Author Gregory Disney&lt;br /&gt;
# [[CRV2_SecCommsHTTPHdrsCSP|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=====HSTS=====&lt;br /&gt;
#Author Abbas Naderi&lt;br /&gt;
# [[CRV2_SecCommsHTTPHSTS|Put content here]]&lt;br /&gt;
&lt;br /&gt;
===Tech-Stack pitfalls===&lt;br /&gt;
#Author Gregory Disney&lt;br /&gt;
# [[CRV2_TechStackPitfalls|Put content here]]&lt;br /&gt;
&lt;br /&gt;
===Framework specific Issues===&lt;br /&gt;
====Spring====&lt;br /&gt;
#Author - Open&lt;br /&gt;
# [[CRV2_FrameworkSpecIssuesSpring|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Structs====&lt;br /&gt;
#Author - Open&lt;br /&gt;
# [[CRV2_FrameworkSpecIssuesStructs|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Drupal====&lt;br /&gt;
#Author Gregory Disney&lt;br /&gt;
# [[CRV2_FrameworkSpecIssuesDurpal|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Ruby on Rails====&lt;br /&gt;
#Author - Open&lt;br /&gt;
# [[CRV2_FrameworkSpecIssuesROR|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Django====&lt;br /&gt;
#Author Gregory Disney&lt;br /&gt;
# [[CRV2_FrameworkSpecIssuesDjango|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====.NET Security / MVC====&lt;br /&gt;
#Author Johanna Curiel, Renchie Joan&lt;br /&gt;
# [[CRV2_FrameworkSpecIssuesdotNetMVC|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Security in ASP.NET applications====&lt;br /&gt;
#Author Johanna Curiel, Renchie Joan&lt;br /&gt;
# [[CRV2_FrameworkSpecIssuesASPNet|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=====Strongly Named Assemblies=====&lt;br /&gt;
#Author Johanna Curiel, Renchie Joan&lt;br /&gt;
# [[CRV2_FrameworkSpecIssuesASPNetStrongAssembiles|Put content here]]&lt;br /&gt;
&lt;br /&gt;
======Round Tripping======&lt;br /&gt;
# Author - Open&lt;br /&gt;
# [[CRV2_FrameworkSpecIssuesASPNetRT|Put content here]]&lt;br /&gt;
&lt;br /&gt;
======How to prevent Round tripping======&lt;br /&gt;
# Author - Open&lt;br /&gt;
#Author Johanna Curiel, Renchie Joan&lt;br /&gt;
# [[CRV2_FrameworkSpecIssuesASPNetRTPrevention|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=====Setting the right Configurations=====&lt;br /&gt;
#Author Johanna Curiel, Renchie Joan&lt;br /&gt;
# [[CRV2_FrameworkSpecIssuesASPNetConfigs|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=====Authentication Options=====&lt;br /&gt;
#Author Johanna Curiel, Renchie Joan&lt;br /&gt;
# [[CRV2_FrameworkSpecIssuesASPNetAuth|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=====Code Review for Managed Code - .Net 1.0 and up=====&lt;br /&gt;
#Author Johanna Curiel, Renchie Joan&lt;br /&gt;
# [[CRV2_FrameworkSpecIssuesASPNetManagedCode|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=====Using OWASP Top 10 as your guideline=====&lt;br /&gt;
#Author Johanna Curiel, Renchie Joan&lt;br /&gt;
# [[CRV2_FrameworkSpecIssuesASPTop10|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=====Code review for Unsafe Code (C#)=====&lt;br /&gt;
#Author Johanna Curiel, Renchie Joan&lt;br /&gt;
# [[CRV2_FrameworkSpecIssuesASPNetUnsafeCode|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====PHP Specific Issues====&lt;br /&gt;
#Author Mohammad Damavandi, Abbas Naderi&lt;br /&gt;
# [[CRV2_FrameworkSpecIssuesPHP|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Classic ASP====&lt;br /&gt;
#Author Johanna Curiel&lt;br /&gt;
# [[CRV2_FrameworkSpecIssuesASPClassic|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====C#====&lt;br /&gt;
#Author Johanna Curiel, Renchie Joan&lt;br /&gt;
# [[CRV2_FrameworkSpecIssuesCsharp|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====C/C++====&lt;br /&gt;
#Author Gary Robinson&lt;br /&gt;
# [[CRV2_FrameworkSpecIssuesCplusplus|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Objective C====&lt;br /&gt;
#Author Open&lt;br /&gt;
# [[CRV2_FrameworkSpecIssuesObectiveC|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Java====&lt;br /&gt;
#Author Palak Gohil&lt;br /&gt;
# [[CRV2_FrameworkSpecIssuesJava|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Android====&lt;br /&gt;
#Author Open&lt;br /&gt;
# [[CRV2_FrameworkSpecIssuesAndroid|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Coldfusion====&lt;br /&gt;
#Author Open&lt;br /&gt;
# [[CRV2_FrameworkSpecIssuesColdfusion|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=Security code review for Agile development=&lt;br /&gt;
#Author Carlos Pantelides&lt;br /&gt;
# [[CRV2_CodeReviewAgile|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=Willing to review drafts=&lt;br /&gt;
#Terry Nerpester&lt;br /&gt;
#Larry Conklin&lt;br /&gt;
#Gary Robinson&lt;br /&gt;
#Simon Whittaker&lt;br /&gt;
#Jason Johnson&lt;br /&gt;
#Carlos Pantelides&lt;/div&gt;</summary>
		<author><name>Carlos Pantelides</name></author>	</entry>

	</feed>