The document discusses code quality control for Joomla projects using automated tools for testing, analysis, and integration. It covers unit testing with PHPUnit, static analysis with PHP Code Sniffer and PHP Mess Detector, code coverage with PHPUnit, profiling with Xdebug, documentation with PHPDocumentor, and continuous integration with Phing and CruiseControl. Automating these processes improves code quality by detecting issues early.
This document provides an overview of using CGO to write Go wrappers for C code. It discusses challenges with parameter passing between Go and C due to differences in memory management. Specifically, Go pointers cannot be passed to C code. The document explores various approaches for passing pointers and dealing with callbacks. It emphasizes that CGO issues may not appear until garbage collection occurs, and recommends techniques like triggering more frequent garbage collection and writing thorough tests to uncover bugs. The overall message is that while CGO enables Go interop with C, it requires vigilance due to differences in memory models between the languages.
The SonarQube Platform is made of 4 components:
- Server, Database, Plugins and Scanner
One or more SonarQube Scanners running on your Build / Continuous Integration Servers to analyze projects
We've all been faced with legacy code and often decided to rewrite, feeling it will be easier. There are many reasons this can be wrong. Adam Culp will talks about the entire journey of refactoring a legacy code base. He will begin with assessment and why, move on to planning how and when, cover execution and testing, give step-by-step examples, and even show how to manage the process effectively. Attendees will gain insight and tips on how to handle their own pile of code and refactor happy.
Code review is an inspection process where developers examine code samples to identify and fix defects. It helps ensure good code quality by allowing experienced developers to share knowledge with less experienced ones. Benefits include more stable products with fewer bugs due to improved code structure, standards and focus on new features rather than fixing issues. Issues that can arise include developers not following through on review comments, lack of buy-in, unrealistic expectations and peer fear. Various review types and tools can help address these issues.
Model-based Testing: Taking BDD/ATDD to the Next LevelBob Binder
Slides from presentation at the Chicago Quality Assurance Association, February 25, 2014.
Acceptance Test Driven Development (ATDD) and Behavior Driven Development (BDD) are well-established Agile practices that rely on the knowledge and intuition of testers, product owners, and developers to identify and then translate statements into test suites. But the resulting test suites often cover only a small slice of happy-path behavior. And, as a BDD specification and its associated test code base grows over time, work to maintain it either crowds out new development and testing or, typically, is simply ignored. Either is high-risk. That’s how Agile teams get eaten by the testing BackBlob.Model Based Testing is a tool-based approach to automate the creation of test cases. This presentation will outline the techniques and benefits of MBT, and show how model-based testing can address both problems. A detailed demo of Spec Explorer, a free model-based testing tool shows how a model is constructed and used to create and maintain a test suite.
With PHP 8.0 recently released and PHP 5.x still accounting for over 40% of all production environments, it's time to paint a clear picture on not just why everyone should move to 8.x, but on how to get code ready for the latest version of PHP. In this talk, we'll look at some handy tools and techniques to ease the migration.
PVS-Studio and static code analysis techniqueAndrey Karpov
What is «static code analysis»? It is a technique that allows, at the same time with unit-tests, dynamic code analysis, code review and others, to increase code quality, increase its reliability and decrease the development time.
With PHP 7.2 recently released and PHP 5.3 and 5.4 still accounting for over 40% of all production environments, it's time to paint a clear picture on not just why everyone should move to 7.0 (or preferably 7.1), but on how to get code ready for the latest version of PHP.
Using the version compatibility checker for PHP_CodeSniffer and a few simple step-by-step instructions, upgrading old code to make it compatible with the latest PHP versions becomes actually really easy. In this talk, we'll migrate an old piece of code and get rid of the demons of the past and ready for the present and future.
This slides show
1. How to obtain code coverage information for Java code
2. What kind of code coverage it is possible to get
3. Is 100% block coverage feasible, is it useful
4. How the code coverage could be used for more than discovering a percentage of uncovered code
Parasoft provides automated quality systems to help companies achieve FDA software compliance. It offers integrated defect prevention and detection technologies like static code analysis, dynamic analysis, code inspections, and automated unit testing. These technologies automate various software validation best practices recommended by the FDA. Parasoft's solutions can find bugs, analyze code quality, review code, generate test cases, track testing coverage, and manage the software development lifecycle to improve quality and ensure traceability.
IoT 개발자를 위한 Embedded C에서 Test Coverage를 추출해보자Taeyeop Kim
gcov is a tool that reports code coverage statistics when used with GCC. It shows which lines and sections of code were executed and which were not. lcov is a graphical front-end for gcov that produces HTML reports of code coverage. CppUTest is a C/C++ unit testing framework that can be configured to work with gcov to produce code coverage reports when tests are run.
The document discusses improving code quality through effective code review processes. It outlines common coding mistakes like redundant code, long or deeply nested functions, large modules, poor comments, and hardcoding. It recommends following best practices like coding guidelines, centralized server communication, and the single responsibility principle. The document also discusses measuring and reducing code complexity, avoiding memory leaks, optimizing images, static code analysis, and profiling to improve code quality.
Acceptance Test Driven Development (ATDD) uses examples and tests to guide development. Robot Framework is an open source test automation framework that supports the ATDD process and approach. It uses a tabular syntax to define executable tests and keywords in a simple, readable format and has a rich ecosystem of support libraries and tools.
The document discusses principles and best practices for code review. It describes the need for code review to improve quality and find bugs. It covers different types of code review including formal, informal, pair programming, and tool-assisted. The document provides guidance on the scope of a code review including goals, APIs, maintainability, security, integration and testing. It also discusses automated code review tools and common mistakes to check for such as exception handling errors.
This document provides an overview of acceptance test-driven development with Robot Framework. It discusses running a demo login application to test valid and invalid logins, creating test cases with Robot Framework, using constants and keywords to remove duplication from test cases, and splitting test code into resource files to organize the test cases. Questions are also welcomed from attendees.
Property-based testing an open-source compiler, pflua (FOSDEM 2015)Igalia
By Katerina Barone-Adesi.
Discover property-based testing, and see how it works on a real project, the pflua compiler.
How do you find a lot of non-obvious bugs in an afternoon? Write a property that should always be true (like "this code should have the same result before and after it's optimized"), generate random valid expressions, and study the counter-examples!
Property-based testing is a powerful technique for finding bugs quickly. It can partly replace unit tests, leading to a more flexible test suite that generates more cases and finds more bugs in less time.
It's really quick and easy to get started with property-based testing. You can use existing tools like QuickCheck, or write your own: Andy Windo and I wrote pflua-quickcheck and found a half-dozen bugs with it in one afternoon, using pure Lua and no external libraries.
In this talk, I will introduce property-based testing, demonstrate a tool for using it in Lua - and how to write your own property-based testing tool from scratch, and explain how simple properties found bugs in pflua.
(c) 2015 FOSDEM VZW
CC BY 2.0 BE
https://archive.fosdem.org/2015/
Brief introduction to Test Automation Frameworks, Acceptance Testing and ATTD using Testerone – custom made solution based on RobotFramework and it’s extensive libraries for Selenium’s and AutoIT’s support.
Bring the test cases closer to business people, leave the technical stuff to technical staff using simple business-to-tech excel sheet (map) for collaboration. Complete the solution by controlling everything using Jenkins CI server.
This document introduces Codeception, an open source PHP testing framework. It discusses different types of testing like unit, integration, functional, and acceptance testing. Codeception uses PHPUnit, Symfony browserkit, Selenium, and PhantomJS to test PHP applications. The document demonstrates running Codeception tests and provides examples of passing and failing tests. It also discusses how Codeception allows testing JavaScript-heavy applications using Selenium or headless testing with PhantomJS. Continuous integration and Docker/Vagrant are presented as ways to improve testing workflows.
Performance profiling and testing of symfony application 2Andrew Yatsenko
This document discusses performance profiling and testing of a Symfony application. It recommends using tools like the Symfony profiler toolbar, Blackfire, and logging to measure metrics like SQL query times, external API calls, memory usage, and more. Capturing these metrics during testing and in production helps identify bottlenecks in the code related to performance. The goal is to measure code quality from a performance perspective and ensure the application meets requirements for speed and responsiveness.
Codeception: introduction to php testing (v2 - Aberdeen php)Engineor
This document introduces Codeception, an open source PHP testing framework. It discusses how Codeception provides tools for unit, integration, functional, acceptance and other types of testing. Codeception uses PHPUnit and other tools under the hood. The document demonstrates how to install, configure and run basic acceptance tests with Codeception. It also discusses how Codeception supports testing modern JavaScript-heavy frontends using Selenium or PhantomJS.
DevSec Delight with Compliance as Code - Matt Ray - AgileNZ 2017AgileNZ Conference
For too long, audits and security reviews have been seen as resistant to the frequent release of software. Auditors require access to static systems and environments, which would seem to make continuous delivery impossible. Too frequently audits are a fire drill sampling of the current state and temporary fixes are put in place to appease the compliance audit without being integrated into future releases.
About Matt Ray:
Matt Ray is the Manager and Solutions Architect for Asia Pacific and Japan for Chef. He has worked in large enterprise software companies and founded his own startups in a wide variety of industries including banking, retail and government.
He has been active in open source communities for over two decades and has spoken at, and helped organise, many conferences and Meetups. He currently resides in Sydney, Australia after relocating from Austin, Texas. He podcasts at SoftwareDefinedTalk.com, blogs at LeastResistance.net and is @mattray on Twitter, IRC, GitHub and too many Slacks.
DevOpsDays Singapore - Continuous Auditing with Compliance as CodeMatt Ray
This document discusses using Chef Automate to enable continuous compliance through a three step process of detecting issues, correcting problems, and automating compliance. It notes that many organizations currently assess compliance inconsistently or after deploying code to production. Chef Automate allows detecting and correcting issues across infrastructure in a single platform using the same language for both DevOps and InfoSec teams. This enables deploying applications with confidence while maintaining security and compliance.
The document discusses tools to improve a LAMP web development stack. It recommends source control, development platforms, task tracking, automated testing, static analysis, automated deployment, and continuous integration. These tools enable collaboration, testing, deployment automation, and integration of code changes. Specific open source tools are recommended for each category like Git, PHPUnit, PHP Code Sniffer, and Jenkins. The document argues these tools improve workflow, quality, and speed of development.
Après avoir fait ce talk à la conférence NSSpain, Simone Civetta va nous expliquer sur quelles métriques il est possible de se baser pour évaluer la qualité d’un code source. Cette question étant toujours sujette à débat, préparez vos arguments !
Security in CI/CD Pipelines: Tips for DevOps EngineersDevOps.com
While DevOps is becoming a new norm for most of the companies, security is typically still behind. The new architectures create a number of new process considerations and technical issues. In this practical talk, we will present an overview of the practical issues that go into making security a part of DevOps processes. Will cover incorporating security into existing CI/CD pipelines and tools DevOps professionals need to know to implement the automation and adhere to secure coding practices.
Join Stepan Ilyin, Chief Product Officer at Wallarm for an engaging conversation where you’ll learn:
Methodologies and tooling for dynamic and static security testing
Composite and OSS license analysis benefits
Secrets and analysis and secrets management approaches in distributed applications
Security automation and integration in CI/CD
Apps, APIs and workloads protection in cloud-native K8s enabled environments
This document discusses the importance of continuous integration and automation for software builds. It recommends setting up tasks like syntax checking, unit testing, code analysis and other quality checks to run automatically on each code change. This helps catch errors early, improves code quality over time, and makes the build process easy and repeatable. The document provides examples of tools like PHPUnit, PHPLOC and Ant that can be used to configure an automated build process for PHP projects.
Data flow analysis is a type of static code analysis that examines how values are propagated through a program. It is more effective than pattern matching or regular static analysis at finding defects related to interactions between methods and classes that may be difficult to uncover through testing alone. Static analysis tools using data flow analysis can simulate execution paths to detect potential issues without requiring the code to be compiled and run. Developers are encouraged to use static testing tools to catch defects early in development, as prevention of bugs is more efficient than finding and fixing them later.
'Effective node.js development' by Viktor Turskyi at OdessaJS'2020OdessaJS Conf
How to develop NodeJS apps effectively? I will tell you all details and share his personal experience on the whole process: from the very start and up to the production stage.
You will also learn more about Docker, SDLC and 12 Factor App. Save the date!
In this talk, I will discuss our experiences at Mollie with setting up the Jenkins Continuous Integration server for all our PHP projects. The talk will be aimed at developers with little or no experience with CI.
The working architecture of NodeJs applicationsViktor Turskyi
Talk at KharkivJs 2017, Viktor Turskyi.
Why talk about the architecture?
1) 99% of NodeJs examples on Internet are “hello world” examples
2) A lot of misunderstandings around architectural patterns
This document discusses continuous integration in PHP development. It explains that continuous integration helps detect problems early through immediate unit testing of all code changes. This prevents integration issues and allows developers to work incrementally with quick feedback. The document recommends writing unit tests with PHPUnit and using tools like PHP Code Sniffer to check code quality. It also discusses code coverage analysis and copy/paste detection to reduce code duplication. Finally, it provides examples of continuous integration environments like CruiseControl that can automate building and testing of PHP applications.
AdaCore Paris Tech Day 2016: Jose Ruiz - QGen Tech Updatejamieayre
- QGen is a code generator that can generate code from Simulink models. It supports Processor-in-the-Loop testing, has multiple user interfaces, and is the basis for ongoing research focused on system and software integrity.
- It allows for customization at the block and arithmetic levels to reuse pre-certified code libraries. This is done through configuration files that specify functions or libraries to use.
- QGen has achieved a TQL-1 qualification which provides benefits like not needing to review generated code or create low-level tests. This qualification puts requirements on QGen development.
- A QGen debugger provides synchronized views of models, code, and assembly to help with model-level debugging.
You've heard about Continuous Integration and Continuous Deilvery but how do you get code from your machine to production in a rapid, repeatable manner? Let a build pipeline do the work for you! Sam Brown will walk through the how, the when and the why of the various aspects of a Contiuous Delivery build pipeline and how you can get started tomorrow implementing changes to realize build automation. This talk will start with an example pipeline and go into depth with each section detailing the pros and cons of different steps and why you should include them in your build process.
Node.js is a server-side JavaScript environment that allows building scalable network applications. It uses Google Chrome's V8 JavaScript engine and runs on a single thread without blocking I/O operations. Node.js is optimized for non-blocking event-driven operations and has a large ecosystem of reusable modules. Some common uses of Node.js include real-time web applications, REST APIs, streaming data applications, and networking servers.
[CB16] COFI break – Breaking exploits with Processor trace and Practical cont...CODE BLUE
One of the most prevalent methods used by attackers to exploit vulnerabilities is ROP - Return Oriented Programming. Many times during the exploitation process, code will run very differently than it does usually - calls will be made to the middle of functions, functions won’t return to their callers, etc. These anomalies in control flow could be detected if a log of all instructions executed by the processor were available.
In the past, tracing the execution of a processor incurred a significant slowdown, rendering such an anti-exploitation method impractical. However, recent Intel processors, such as Broadwell and Skylake, are now able to trace execution with low overhead, via a feature called Processor Trace. A similar feature called CoreSight exists on new ARM processors.
The lecture will discuss an anti-exploitation system we built which scans files and detects control flow violations by using these new processor features.
--- Ron Shina
Ron has been staring at binary code for over the past decade, occasionally running it. Having spent a lot of his time doing mathematics, he enjoys searching for algorithmic opportunities in security research and reverse engineering. He is a graduate of the Israel Defense Forces’ Talpiot program. In his spare time he works on his jump shot.
--- Shlomi Oberman
Shlomi Oberman is an independent security researcher with over a decade of experience in security research. Shlomi spent many years in the attacker’s shoes for different companies and knows too well how hard it is to stop a determined attacker. In the past years his interest has shifted from breaking things to helping stop exploits – while software is written and after it has shipped. Shlomi is a veteran of the IDF Intelligence Corps and used to head the security research efforts at NSO Group and other companies.
Similar to Joomla Code Quality Control and Automation Testing (20)
Understanding the NFT marketplace ecosystem involves exploring platforms for creating, buying, selling, and trading digital assets. These platforms use blockchain technology for security and smart contracts for automated transactions. Key components include digital wallets, NFT standards, and marketplaces like OpenSea and Rarible. This ecosystem is shaped by the roles of creators, collectors, and developers, offering insights into the dynamics and trends of the digital asset economy.
Planetek Italia is an Italian Benefit Company established in 1994, which employs 120+ women and men, passionate and skilled in Geoinformatics, Space solutions, and Earth science.
We provide solutions to exploit the value of geospatial data through all phases of data life cycle. We operate in many application areas ranging from environmental and land monitoring to open-government and smart cities, and including defence and security, as well as Space exploration and EO satellite missions.
Discover practical tips and tricks for streamlining your Marketo programs from end to end. Whether you're new to Marketo or looking to enhance your existing processes, our expert speakers will provide insights and strategies you can implement right away.
Ensuring Secure and Permission-Aware RAG DeploymentsZilliz
In this talk, we will explore the critical aspects of securing Retrieval-Augmented Generation (RAG) deployments. The focus will be on implementing robust secured data retrieval mechanisms and establishing permission-aware RAG frameworks. Attendees will learn how to ensure that access control is rigorously maintained within the model when ingesting documents, ensuring that only authorized personnel can retrieve data. We will also discuss strategies to mitigate risks of data leakage, unauthorized access, and insider threats in RAG deployments. By the end of this session, participants will have a clearer understanding of the best practices and tools necessary to secure their RAG deployments effectively.
Project management Course in Australia.pptxdeathreaper9
Project Management Course
Over the past few decades, organisations have discovered something incredible: the principles that lead to great success on large projects can be applied to projects of any size to achieve extraordinary success. As a result, many employees are expected to be familiar with project management techniques and how they apply them to projects.
https://projectmanagementcoursesonline.au/
Network Auto Configuration and Correction using Python.pptxsaikumaresh2
- Implemented Zero Touch Provisioning, Network Topology Mapper, and Root Cause Analysis using Python, GNS3, Netmiko, SSH, OSPF, and Graphviz.
- Developed a Python script to automate network discovery based on Core Router IP and login details, significantly reducing manual intervention.
- Enhanced network visualization by generating detailed network graphs, aiding in quick network analysis and troubleshooting.
Project Delivery Methodology on a page with activities, deliverablesCLIVE MINCHIN
I've not found a 1 pager like this anywhere so I created it based on my experiences. This 1 pager details a waterfall style project methodology with defined phases, activities, deliverables, assumptions. There's nothing in here that conflicts with commonsense.
Multimodal Embeddings (continued) - South Bay Meetup SlidesZilliz
Frank Liu will walk through the history of embeddings and how we got to the cool embedding models used today. He'll end with a demo on how multimodal RAG is used.
IT market in Israel, economic background, forecasts of 160 categories and the infrastructure and software products in those categories, professional services also. 710 vendors are ranked in 160 categories.
4. Software Quality Assurance (SQA)
● Systematic Monitoring and Evaluation of the
software engineering processes
● Monitoring and Evalution can be done
automatically via tools called QA tools
● Not a Rocket Science, but heavily depends on
the proejct
5. Benefit of SQA?
● early detection of issues
● cleaner & consistent code
● knowledge about the codebase
● increase of confidence
● enables frequent releases, refactoring
7. Manual Testing
● Not automated, slow and expensive
● Complete application must be ready before it
can be tested
● Tests need to be repeated when the application
changes
8. Automated Testing
● Test results are -
– automatically evaluated and
– do not have to be interpreted by a human tester
● Tests are repeatable
– with deterministic results
– without additional costs
9. Selenium Testing
● Test web applications in a web browser
● Selenium RC
– Automated execution of Selenium tests
– Tests can be specified in any language
– One test can be executed on multiple
OS/browser combinations
– Tests can be triggered from PHPUnit
11. problems
● Complex test environments
● Dependencies between tests
● Running the tests is slow, thus incompatible
with the agile approach
● It is not enough and/or does not scale
12. What we want
● We want to test earlier
● We want to be able to test an incomplete
application
● We want a test environment that is less
complex
● We want to be able to run the tests faster
13. Unit Tests
● Executable specification
● Automatic evaluation
● Simple test environment
● Instant feedback
● Works as regression test
>> Unit Tests improve the confidence in your code as they detect problems as early as possible.
14. >> phpunit BowlingGameTest
PHPUnit 3.4.0 by Sebastian Bergmann.
.FFFF
Time: 0 seconds
There were 4 failures:
1) BowlingGameTest::testScoreForAllOnesIs20
Failed asserting that <integer:0> matches expected value <integer:20>.
/home/sb/BowlingGameTest.php:67
2) BowlingGameTest::testScoreForOneSpareAnd3Is16
Failed asserting that <integer:0> matches expected value <integer:16>.
/home/sb/BowlingGameTest.php:75
3) BowlingGameTest::testScoreForOneStrikeAnd3And4Is24
Failed asserting that <integer:0> matches expected value <integer:24>.
/home/sb/BowlingGameTest.php:84
4) BowlingGameTest::testScoreForPerfectGameIs300
Failed asserting that <integer:0> matches expected value <integer:300>.
/home/sb/BowlingGameTest.php:90
FAILURES!
Tests: 5, Assertions: 5, Failures: 4.
17. phploc
● Text-based metric for code size
● Various definitions
– Lines of Code (LOC)
– Comment Lines of Code (CLOC)
– Non-Comment Lines of Code (NCLOC)
– Executable Lines of Code (ELOC)
● Ratios can be interesting
– CLOC / (E)LOC
18. Running phploc on Joomla 1.6.1
Directories: 725
Files: 1625
Lines of Code (LOC): 251967
Cyclomatic Complexity / Lines of Code: 0.12
Comment Lines of Code (CLOC): 88959
NonComment
Lines of Code (NCLOC): 163008
Namespaces: 0
Interfaces: 0
Classes: 1136
Abstract: 81 (7.13%)
Concrete: 1055 (92.87%)
Average Class Length (NCLOC): 126
Methods: 6494
Scope:
NonStatic:
5710 (87.93%)
Static: 784 (12.07%)
Visibility:
Public: 5113 (78.73%)
NonPublic:
1381 (21.27%)
Average Method Length (NCLOC): 22
Cyclomatic Complexity / Number of Methods: 3.44
Anonymous Functions: 10
Functions: 112
Constants: 225
Global constants: 218
Class constants: 7
19. Php code sniffer
● PHP_CodeSniffer
– sniffs for coding standard violations
– ensures code is clean and consistent
– using standard and custom coding standards
● Installation
– pear install PHP_CodeSniffer
20. phpcs on libraries/joomla/application
shyam@ssvlptplnx:/
var/www/j161$ phpcs s
standard=
ZEND report=
summary
sniffs="
Zend.Files.LineLength.LineTooLong" extensions=
php libraries/joomla/application/
PHP CODE SNIFFER REPORT SUMMARY
FILE
ERRORS WARNINGS
/
var/www/j161/libraries/joomla/application/application.php 4 35
/var/www/j161/libraries/joomla/application/categories.php 2 22
......
/var/www/j161/libraries/joomla/application/component/view.php 0 15
/var/www/j161/libraries/joomla/application/pathway.php 0 2
/var/www/j161/libraries/joomla/application/router.php 0 2
A
TOTAL OF 43 ERROR(S) AND 222 WARNING(S) WERE FOUND IN 17 FILE(S)
PHP
CODE SNIFFER VIOLATION SOURCE SUMMARY
SOURCE
COUNT
Zend.
Files.LineLength.LineTooLong 222
Zend.Files.LineLength.MaxLengthExceeded 43
A
TOTAL OF 265 SNIFF VIOLATION(S) WERE FOUND IN 2 SOURCE(S)
24. phpmd on router.php
$>> phpmd libraries/joomla/application/router.php text unusedcode
/var/www/j161/libraries/joomla/application/router.php:247 Avoid unused parameters such as '$uri'.
/var/www/j161/libraries/joomla/application/router.php:255 Avoid unused parameters such as '$uri'.
/var/www/j161/libraries/joomla/application/router.php:263 Avoid unused parameters such as '$uri'.
/var/www/j161/libraries/joomla/application/router.php:270 Avoid unused parameters such as '$uri'.
$>> phpmd libraries/joomla/application/router.php text codesize
/var/www/j161/libraries/joomla/application/router.php:26 This class has too many methods, consider
refactoring it.
$>> phpmd libraries/joomla/application/router.php text naming
$>>
28. Code Coverage
Which statements, branches, and paths are
executed when the tests run?
● Statement Coverage
● Branch Coverage
● Path Coverage
100% Code Coverage is a required, but not a
sufficient criteria for test completeness
29. >> phpunit coveragehtml
/tmp/report BankAccountTest
PHPUnit 3.4.0 by Sebastian Bergmann.
.....
Time: 0 seconds
OK (5 tests, 5 assertions)
Generating code coverage report, this may take a moment.
30. Profiling
● Xdebug's built-in profiler
● Finds bottlenecks in your script
● Output can be visualized by external tools such
as KCacheGrind or WinCacheGrind.
36. Cruise control
Framework for a continuous build process
● Includes, but is not limited to, plugins for email
notification, Apache Ant, Phing, and various
source control tools
● A web interface is provided to view the details
of the current and previous builds