How Codacy Analyzes 30 Billion Lines of Code Per Day

2,664
Codacy
Codacy automates code reviews and monitors code quality on every commit and pull request. It reports back the impact of every commit or pull request in new issues concerning code style, best practices, security and many others. It monitors changes in code coverage, code duplication and code complexity. It allows developers to save time in code reviews and tackle efficiently technical debt.

Editor's Note: Jaime Jorge is co-founder and CEO at Codacy.

Codacy helps dev teams of all sizes to automate their code quality by identifying issues through static code analysis, both in the cloud and on-premise. The product notifies users about security issues, code coverage, code duplication and code complexity in every commit and pull request, directly from their current workflow. We sat down with Jaime to learn more about the technology behind Codacy's automated code review platform.

StackShare: Why did you and your other co-founder create Codacy?

Jaime Jorge: Being both developers, we started the company because we wanted to help developers focus on software development instead of just fixing code. I was researching this topic for my master's thesis (working with Telcos in Europe) to understand technical debt (in terms of code duplication), and Joao (my co-founder) was leading tech teams in the financial industry in the UK. What brought us together was the mission of helping as many developers and companies as we could to ship better code and increase their productivity.

Founded in 2012, Codacy now employs 40 people (more than half of which are technical) between our offices in Lisbon and NYC.

StackShare: Out of the 28 supported languages, which one do you see used the most on your platform?

JJ: The usage distribution of our supported programming languages follows what you’d expect to see looking at indexes/ranks like the one from TIOBE. The most used language in Codacy is Javascript. This is a result of a strong clustering of web development use cases. We then see Java, Python, Ruby and a few others close behind.

StackShare: It’s amazing how small your team is yet you support so many different languages.

JJ: When we started Codacy, we only supported Scala (on which our product is built). Following requests from new users over time, we started adding additional language support. We understood that modern development does not rely on one programming language alone, and modern tech stacks most often have a combination of many different languages. This forced us to create a platform that would make it easy for us to add new programming languages but also update their support. We also allowed for our users to bring their own support by exposing our integration mechanism.

StackShare: How do you use Codacy to build Codacy?

JJ: Our team uses Codacy every day, primarily to maintain the same criteria of development (formatting, coverage, best practices) across the different dev squads. There are features we use more often than others, which mirrors what we see from our customers.

StackShare: Which features do your team use most often?

JJ: Some team members like to use the dashboards to keep track of the main quality metrics, some like the build status we provide to make sure we’re within the defined criteria. All of the team uses the auto-comment feature, which helps our teams stay in-touch.

StackShare: What platforms do you integrate with?

JJ: Our most popular integrations are with GitHub, GitLab, Bitbucket, CircleCI, Jenkins, and Slack, although we support many others.

StackShare: How does Codacy provide notifications for security issues?

JJ: As part of our code analysis, we provide security notifications via the tools we integrate with.

StackShare: Tell us about your secure development practices?

JJ: We develop following security best practices and frameworks (OWASP Top 10, SANS Top 25). Our developers participate in regular security training to learn about common vulnerabilities and threats, and we review our code for security vulnerabilities. We also regularly update our dependencies and make sure none of them has known vulnerabilities.

Our teams use Static Application Security Testing (SAST) to detect basic security vulnerabilities in our codebase, and Dynamic Application Security Testing (DAST) to scan our applications.

StackShare: What’s the biggest issue new developers make when setting up an automated code review system?

JJ: Incorrect or incomplete configuration.

StackShare: How many automated code reviews do you process daily?

JJ: We pull about 8TB per day which, assuming 1 byte per character and 256 characters per line, we arrive at ~ 3*10^10 lines (about 30 billion). Interesting to note, this is about 40% of the text content in the Library of Congress (according to wolfram alpha)

StackShare: How do you store all of that data?

JJ: All of our services run in the cloud on AWS. We don’t host or run our own routers, load balancers, DNS servers, or physical servers.

StackShare: What AWS services do you use specifically for getting that data processed, indexed and stored?

JJ: Data is processed using EC2 instances. We currently run our applications using Docker on Elastic Beanstalk, but we are transitioning to EKS. The data is stored on RDS, where we use both Aurora and Postgres. Although the volume of data we pull to analyze is 8TB, the analysis results (that we actually store) are significantly smaller. You don’t need the code verbatim for every source file - you just store the issues and where in the file you found them. We then leverage AWS to scale elastically (e.g. the number of active analysis servers) with the current load.

StackShare: Does this process still involve Scala or another language?

JJ: Our applications are all implemented in Scala. They do all the heavy lifting regarding data processing/indexing.

StackShare: How long do you retain that data?

JJ: The repositories are cloned, analyzed and then deleted.


Thanks for reading! If you use Codacy you can add them to your stack here.

Codacy
Codacy automates code reviews and monitors code quality on every commit and pull request. It reports back the impact of every commit or pull request in new issues concerning code style, best practices, security and many others. It monitors changes in code coverage, code duplication and code complexity. It allows developers to save time in code reviews and tackle efficiently technical debt.
Tools mentioned in article
Open jobs at Codacy
Director of Engineering
<p>Codacy’s vision is to enable everyone to craft software with confidence while focusing on impacting the world at the speed of thought. Our DevOps Intelligence Platform includes two products that enable software development teams to achieve their full potential and give management teams visibility on their investment:</p><ul><li>Quality: provides software analysis to help developers quantify and act on their software quality, technical debt, and security</li><li>Pulse: measures engineering health and performance so teams can continually improve with data-driven insights</li></ul><p><br>We're curious, funny, radically honest yet kind, and we thrive on collaboration and transparency. We're a team of highly dedicated and ambitious domain experts brought together by the mission to help development teams reach their full potential, and driven by having a worldwide impact on software development. </p><p>We are looking for an Engineering Director to lead multiple development teams within our Product Teams. Reporting to the CTO, you are responsible for defining software development best practice and ways of working to ensure delivery of technical solutions in an agile way. You will work closely with the cross-functional development teams and Product Managers to help define product roadmaps and will be responsible for delivering high quality software solutions.</p><p>You will lead projects that typically include a mix of greenfield developments using the latest technologies, building out highly scalable systems, maintaining and enhancing our existing platform to deliver innovative features to our users.</p><p>You will lead the delivery of the Product roadmaps and will act as a technical expert providing thought leadership and direction that will enable the teams to succeed by continuously improving technical quality, pace of delivery and providing on-going technical excellence.</p><p>What will be your day to day:</p><ul><li>Working closely with product management, technical leadership, and peers to create product roadmaps, estimate work and set priorities for your teams</li><li>Leading and managing multiple cross-disciplinary, geographically dispersed software development teams delivering high quality software solutions</li><li>Defining, driving, and achieving objectives and key results for your teams</li><li>Focusing on continuous improvement and increasing development velocity while maintaining code quality</li><li>Promoting an effective working environment that is supportive and rewarding, aligned with the our values and behaviors</li><li>Recruiting, coaching, mentoring, developing, inspiring, and retaining great people</li><li>Defining & driving the right decisions for tech systems, and acting as gatekeeper for dev tooling, platforms, QA tools, CI/CD, release control, code quality etc</li><li>Instilling ownership, accountability, and technical excellence in your team by driving efficient processes and implementing engineering best practice</li><li>Monitoring efficiency of resource use and manage costs appropriately</li><li>Collaborating with key stakeholders across the organization on a variety of different projects ranging from consumer facing features to backend functionality</li><li>Keeping stakeholders up to date on all activities that affect their individual goals and be the point contact for work status</li></ul><p>Requirements: </p><ul><li>10+ years’ experience in software delivery at a senior level in a fast-moving high growth environment. </li><li>You will have worked on significant cloud software projects, delivering robust, fast paced solutions to significant business challenges, while always focused on continuous improvement.</li><li> You have up to date hands-on technical knowledge, are obsessed with your area of expertise and stay current on up-and-coming practices in software development.</li><li>You are a strong leader who will have in-depth experience managing large teams of Software Engineers, QAs, DevOps and will have had significant commercial budget responsibility. </li><li>You enjoy working collaboratively and easily establish effective relationships across all levels in the organization. </li><li>You are an effective communicator who understands the need for strong stakeholder management. </li><li>You inspire people through your impact and credibility and always demonstrate accountability and take responsibility for your deliverables while maintaining standards and hitting deadlines. </li><li>You always embrace and respond to new challenges.</li><li>Ideally, you will have worked in both scale-up and medium size technology companies. </li><li>You thrive in a dynamic environment and have strong agency to get things done, with exceptional English communication skills with experience in a leadership position where clarity of communications can determine success or failure.</li></ul><p><br>What else makes working at Codacy great?</p><ul><li>Competitive Salary. Check our salary calculator at https://www.codacy.com/careers</li><li>Comprehensive health insurance</li><li>Generous learning and development budget</li><li>Flexible holidays</li><li>Flexible working hours</li><li>A remote first work policy <br> </li></ul>
Solutions Engineer
<p><span style="font-size:14px;"><span style="font-family:Georgia, serif;">Codacy’s vision is to enable everyone to craft software with confidence while focusing on impacting the world at the speed of thought. Our DevOps Intelligence Platform includes two products that enable software development teams to achieve their full potential and give management teams visibility on their investment:</span></span></p><ul><li><span style="font-size:14px;"><span style="font-family:Georgia, serif;">Quality: provides software analysis to help developers quantify and act on their software quality, technical debt, and security</span></span></li><li><span style="font-size:14px;"><span style="font-family:Georgia, serif;">Pulse: measures engineering health and performance so teams can continually improve with data-driven insights</span></span></li></ul><p><span style="font-size:14px;"><span style="font-family:Georgia, serif;">We're curious, funny, radically honest yet kind, and we thrive on collaboration and transparency. We're a team of highly dedicated and ambitious domain experts brought together by the mission to help development teams reach their full potential, and driven by having a worldwide impact on software development. </span></span></p><p> </p><p style="line-height:1.7999999999999998;margin-left:48px;"><span style="font-size:14px;"><span style="font-family:Georgia, serif;"><span style="white-space:pre-wrap;"><span style="color:#495866;"><span style="font-weight:700;"><span style="font-style:normal;"><span style="text-decoration:none;">What will be your day to day:</span></span></span></span></span></span></span></p><ul><li style="list-style-type:disc;"><span style="font-size:14px;"><span style="font-family:Georgia, serif;"><span style="white-space:pre-wrap;"><span style="color:#495866;"><span style="font-weight:300;"><span style="font-style:normal;"><span style="text-decoration:none;">Development and delivery of product demonstrations along with Sales and Customer Success teams</span></span></span></span></span></span></span></li><li style="list-style-type:disc;"><span style="font-size:14px;"><span style="font-family:Georgia, serif;"><span style="white-space:pre-wrap;"><span style="color:#495866;"><span style="font-weight:300;"><span style="font-style:normal;"><span style="text-decoration:none;">Scoping, managing and executing customer pilots and POCs</span></span></span></span></span></span></span></li><li style="list-style-type:disc;"><span style="font-size:14px;"><span style="font-family:Georgia, serif;"><span style="white-space:pre-wrap;"><span style="color:#495866;"><span style="font-weight:300;"><span style="font-style:normal;"><span style="text-decoration:none;">Working with the Sales and Customer Success teams to understand customer's technical requirements, answer technical questions and help them overcome technical roadblocks.</span></span></span></span></span></span></span></li><li style="list-style-type:disc;"><span style="font-size:14px;"><span style="font-family:Georgia, serif;"><span style="white-space:pre-wrap;"><span style="color:#495866;"><span style="font-weight:300;"><span style="font-style:normal;"><span style="text-decoration:none;">Assist the Sales and Customer Success teams as the technical subject matter expert for Codacy during customer calls and presentations</span></span></span></span></span></span></span></li><li style="list-style-type:disc;"><span style="font-size:14px;"><span style="font-family:Georgia, serif;"><span style="white-space:pre-wrap;"><span style="color:#495866;"><span style="font-weight:300;"><span style="font-style:normal;"><span style="text-decoration:none;">Assist and collaborate with different technical stakeholders during the different phases of our sales process (which includes installation, onboarding, expanding)</span></span></span></span></span></span></span></li><li style="list-style-type:disc;"><span style="font-size:14px;"><span style="font-family:Georgia, serif;"><span style="white-space:pre-wrap;"><span style="color:#495866;"><span style="font-weight:300;"><span style="font-style:normal;"><span style="text-decoration:none;">Act as a liaison with the Product team to discuss potential product development</span></span></span></span></span></span></span></li><li style="list-style-type:disc;"><span style="font-size:14px;"><span style="font-family:Georgia, serif;"><span style="white-space:pre-wrap;"><span style="color:#495866;"><span style="font-weight:300;"><span style="font-style:normal;"><span style="text-decoration:none;">Have a close relationship with the Sales and Customer Success teams members and enable knowledge sharing within the team</span></span></span></span></span></span></span></li><li style="list-style-type:disc;"><span style="font-size:14px;"><span style="font-family:Georgia, serif;"><span style="white-space:pre-wrap;"><span style="color:#495866;"><span style="font-weight:300;"><span style="font-style:normal;"><span style="text-decoration:none;">Collaborate with the right stakeholders (product managers, engineering, sales, customer success, and other groups) ensuring the successful execution of the account strategy.</span></span></span></span></span></span></span></li></ul><p style="line-height:1.7999999999999998;margin-left:48px;background-color:#ffffff;margin-top:32px;padding:0pt 0pt 36pt;"><span style="font-size:14px;"><span style="font-family:Georgia, serif;"><span style="white-space:pre-wrap;"><span style="color:#495866;"><span style="font-weight:700;"><span style="font-style:normal;"><span style="text-decoration:none;">Requirements: </span></span></span></span></span></span></span></p><ul><li style="list-style-type:disc;"><span style="font-size:14px;"><span style="font-family:Georgia, serif;"><span style="white-space:pre-wrap;"><span style="color:#495866;"><span style="font-weight:300;"><span style="font-style:normal;"><span style="text-decoration:none;">Super comfortable engaging in meaningful conversations and interactions with software engineers and developer managers</span></span></span></span></span></span></span></li><li style="list-style-type:disc;"><span style="font-size:14px;"><span style="font-family:Georgia, serif;"><span style="white-space:pre-wrap;"><span style="color:#495866;"><span style="font-weight:300;"><span style="font-style:normal;"><span style="text-decoration:none;">B.S. Computer Science, Software Engineering, MIS or equivalent work experience</span></span></span></span></span></span></span></li><li style="list-style-type:disc;"><span style="font-size:14px;"><span style="font-family:Georgia, serif;"><span style="white-space:pre-wrap;"><span style="color:#495866;"><span style="font-weight:300;"><span style="font-style:normal;"><span style="text-decoration:none;">Preference for previous demonstrable experience as a software engineer</span></span></span></span></span></span></span></li><li style="list-style-type:disc;"><span style="font-size:14px;"><span style="font-family:Georgia, serif;"><span style="white-space:pre-wrap;"><span style="color:#495866;"><span style="font-weight:300;"><span style="font-style:normal;"><span style="text-decoration:none;">Excellent interpersonal, communication, persuasion, presentation and writing skills</span></span></span></span></span></span></span></li><li style="list-style-type:disc;"><span style="font-size:14px;"><span style="font-family:Georgia, serif;"><span style="white-space:pre-wrap;"><span style="color:#495866;"><span style="font-weight:300;"><span style="font-style:normal;"><span style="text-decoration:none;">Ability to quickly communicate complex ideas around technical topics</span></span></span></span></span></span></span></li><li style="list-style-type:disc;"><span style="font-size:14px;"><span style="font-family:Georgia, serif;"><span style="white-space:pre-wrap;"><span style="color:#495866;"><span style="font-weight:300;"><span style="font-style:normal;"><span style="text-decoration:none;">Must be willing to work in a fast paced startup environment</span></span></span></span></span></span></span></li><li style="list-style-type:disc;"><span style="font-size:14px;"><span style="font-family:Georgia, serif;"><span style="white-space:pre-wrap;"><span style="color:#495866;"><span style="font-weight:300;"><span style="font-style:normal;"><span style="text-decoration:none;">Outstanding problem solving skills, including the ability to meet a business requirement with a technical solution</span></span></span></span></span></span></span></li><li style="list-style-type:disc;"><span style="font-size:14px;"><span style="font-family:Georgia, serif;"><span style="white-space:pre-wrap;"><span style="color:#495866;"><span style="font-weight:300;"><span style="font-style:normal;"><span style="text-decoration:none;">Fluent in English</span></span></span></span></span></span></span></li><li style="list-style-type:disc;"><span style="font-size:14px;"><span style="font-family:Georgia, serif;"><span style="white-space:pre-wrap;"><span style="color:#495866;"><span style="font-weight:300;"><span style="font-style:normal;"><span style="text-decoration:none;">Knowledge of Docker, Kubernetes, Postgres, Ubuntu and AWS</span></span></span></span></span></span></span></li></ul><p style="line-height:1.7999999999999998;"><span style="font-size:14px;"><span style="font-family:Georgia, serif;"><span style="white-space:pre-wrap;"><span style="color:#495866;"><span style="font-weight:700;"><span style="font-style:normal;"><span style="text-decoration:none;">What else makes working at Codacy great?</span></span></span></span></span></span></span></p><ul><li style="list-style-type:disc;"><span style="font-size:14px;"><span style="font-family:Georgia, serif;"><span style="white-space:pre-wrap;"><span style="color:#495866;"><span style="font-weight:300;"><span style="font-style:normal;"><span style="text-decoration:none;">Competitive Salary. Check our salary calculator at https://www.codacy.com/careers</span></span></span></span></span></span></span></li><li style="list-style-type:disc;"><span style="font-size:14px;"><span style="font-family:Georgia, serif;"><span style="white-space:pre-wrap;"><span style="color:#495866;"><span style="font-weight:300;"><span style="font-style:normal;"><span style="text-decoration:none;">Comprehensive health insurance </span></span></span></span></span></span></span></li><li style="list-style-type:disc;"><span style="font-size:14px;"><span style="font-family:Georgia, serif;"><span style="white-space:pre-wrap;"><span style="color:#495866;"><span style="font-weight:300;"><span style="font-style:normal;"><span style="text-decoration:none;">Generous learning and development budget</span></span></span></span></span></span></span></li><li style="list-style-type:disc;"><span style="font-size:14px;"><span style="font-family:Georgia, serif;"><span style="white-space:pre-wrap;"><span style="color:#495866;"><span style="font-weight:300;"><span style="font-style:normal;"><span style="text-decoration:none;">Flexible holidays</span></span></span></span></span></span></span></li><li style="list-style-type:disc;"><span style="font-size:14px;"><span style="font-family:Georgia, serif;"><span style="white-space:pre-wrap;"><span style="color:#495866;"><span style="font-weight:300;"><span style="font-style:normal;"><span style="text-decoration:none;">Flexible working hours</span></span></span></span></span></span></span></li><li style="list-style-type:disc;"><span style="font-size:14px;"><span style="font-family:Georgia, serif;"><span style="white-space:pre-wrap;"><span style="color:#495866;"><span style="font-weight:300;"><span style="font-style:normal;"><span style="text-decoration:none;">A remote first work policy </span></span></span></span></span></span></span></li></ul><p> </p>
Engineering Manager
<p>Codacy’s vision is to enable everyone to craft software with confidence while focusing on impacting the world at the speed of thought. Our DevOps Intelligence Platform includes two products that enable software development teams to achieve their full potential and give management teams visibility on their investment:</p><ul><li>Codacy: provides software analysis to help developers quantify and act on their software quality, engineering performance, and security</li><li>Pulse: measures engineering health and performance so teams can continually improve with data-driven insights</li></ul><p>We're curious, funny, radically honest yet kind, and we thrive on collaboration and transparency. We're a team of highly dedicated and ambitious domain experts brought together by the mission to help development teams reach their full potential, and driven by having a worldwide impact on software development. </p><p>We are looking for an<strong> Engineering Manager </strong>, who will help Codacy to develop Product features using the right technologies by ensuring that Engineering Teams are focused and looked after </p><p>What will be your day to day:</p><ul><li>Working closely with Product and Engineering teams</li><li>Help foster and develop a  great engineering culture based on candid, empathetic feedback and accountability</li><li>Gauge progress of various projects</li><li>Collaborate with wider teams and stakeholders to reach company goals </li><li>Support team members growth through coaching and  mentoring</li><li>Help set and execute on the team vision</li><li>Hire, develop and retain great talent</li><li>Set goals and support continuous improvement of team’s processes and results</li></ul><p> </p><p>Requirements: </p><ul><li>5+ years of working experience within software development, with 2+ in a leadership role </li><li>Good analytical and data driven decision making skills</li><li>Incredible problem solving abilities</li><li>Ability to collaborate with many other teams</li><li>Ability to create a set of qualifications for a new product</li><li>Interpersonal skills to manage a team on engineers</li><li>Ability to give constructive criticism</li><li>Ability to make decisions quickly</li><li>Strong experience with agile methodologies</li></ul><p> <br>What else makes working at Codacy great?</p><ul><li>Competitive Salary. Check our salary calculator at https://www.codacy.com/careers </li><li>Comprehensive health insurance for household members, with dental and vision;</li><li>Generous learning and development budget;</li><li>Flexible holidays;</li><li>Flexible working hours;</li><li>A remote first work policy </li></ul>
Verified by
You may also like